@@ -731,3 +731,63 @@ async fn test_object_typename() {
731
731
) )
732
732
) ;
733
733
}
734
+
735
+ #[ tokio:: test]
736
+ async fn interface_inline_fragment_friends ( ) {
737
+ let doc = r#"{
738
+ human(id: "1002") {
739
+ friends {
740
+ name
741
+ ... on Human { homePlanet }
742
+ ... on Droid { primaryFunction }
743
+ }
744
+ }
745
+ }"# ;
746
+ let database = Database :: new ( ) ;
747
+ let schema = RootNode :: new (
748
+ Query ,
749
+ EmptyMutation :: < Database > :: new ( ) ,
750
+ EmptySubscription :: < Database > :: new ( ) ,
751
+ ) ;
752
+
753
+ assert_eq ! (
754
+ crate :: execute( doc, None , & schema, & Variables :: new( ) , & database) . await ,
755
+ Ok ( (
756
+ Value :: object(
757
+ vec![ (
758
+ "human" ,
759
+ Value :: object(
760
+ vec![ (
761
+ "friends" ,
762
+ Value :: list( vec![
763
+ Value :: object(
764
+ vec![
765
+ ( "name" , Value :: scalar( "Luke Skywalker" ) ) ,
766
+ ( "homePlanet" , Value :: scalar( "Tatooine" ) ) ,
767
+ ] . into_iter( ) . collect( ) ,
768
+ ) ,
769
+ Value :: object(
770
+ vec![
771
+ ( "name" , Value :: scalar( "Leia Organa" ) ) ,
772
+ ( "homePlanet" , Value :: scalar( "Alderaan" ) ) ,
773
+ ] . into_iter( ) . collect( ) ,
774
+ ) ,
775
+ Value :: object(
776
+ vec![
777
+ ( "name" , Value :: scalar( "R2-D2" ) ) ,
778
+ ( "primaryFunction" , Value :: scalar( "Astromech" ) ) ,
779
+ ] . into_iter( ) . collect( ) ,
780
+ ) ,
781
+ ] ) ,
782
+ ) ]
783
+ . into_iter( )
784
+ . collect( ) ,
785
+ ) ,
786
+ ) ]
787
+ . into_iter( )
788
+ . collect( )
789
+ ) ,
790
+ vec![ ]
791
+ ) )
792
+ ) ;
793
+ }
0 commit comments