flatten.rs 807 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. #![allow(dead_code)]
  2. use indoc::indoc;
  3. use pretty_assertions::assert_eq;
  4. use tsify::Tsify;
  5. #[test]
  6. fn test_flatten() {
  7. #[derive(Tsify)]
  8. struct A {
  9. a: i32,
  10. b: String,
  11. }
  12. #[derive(Tsify)]
  13. struct B {
  14. #[serde(flatten)]
  15. extra: A,
  16. c: i32,
  17. }
  18. assert_eq!(
  19. B::DECL,
  20. indoc! {"
  21. export interface B extends A {
  22. c: number;
  23. }"
  24. }
  25. );
  26. }
  27. #[test]
  28. fn test_flatten_option() {
  29. #[derive(Tsify)]
  30. struct A {
  31. a: i32,
  32. b: String,
  33. }
  34. #[derive(Tsify)]
  35. struct B {
  36. #[serde(flatten)]
  37. extra: Option<A>,
  38. c: i32,
  39. }
  40. assert_eq!(
  41. B::DECL,
  42. indoc! {"
  43. export type B = { c: number } & (A | {});"
  44. }
  45. );
  46. }