@@ -50,5 +50,69 @@ public void add_fragment_to_a_type_query_should_generate_correct_string()
50
50
Assert . Contains ( expectedFragmment , graphQueryBuilder . GetQuery ( ) . Query ) ;
51
51
Assert . Contains ( expectedFields , graphQueryBuilder . GetQuery ( ) . Query ) ;
52
52
}
53
+ [ Fact ]
54
+ public void multiple_fragments_should_generate_correct_query ( )
55
+ {
56
+ const string expectedMainQuery = "query FragmentTest {FragmentObject{items{Name ...FirstFragment ...SecondFragment}}}" ;
57
+ const string expectedFistFragment = "fragment FirstFragment on PromoObject {ProviderName}" ;
58
+ const string expectedSecondFragmment = "fragment SecondFragment on FragmentObject {ViewingTime PromoImage{Url}}" ;
59
+ const string expectedFullQuery = $ "{ expectedMainQuery } \n { expectedFistFragment } \n { expectedSecondFragmment } ";
60
+
61
+ var firstFragment = new FragmentBuilder < PromoObject > ( "FirstFragment" ) ;
62
+ firstFragment . Fields ( x => x . ProviderName ) ;
63
+
64
+ var secondFragment = new FragmentBuilder < FragmentObject > ( "SecondFragment" ) ;
65
+ secondFragment . Fields ( x => x . ViewingTime , x=> x . PromoImage . Url ) ;
66
+
67
+ GraphQueryBuilder graphQueryBuilder = new GraphQueryBuilder ( ) ;
68
+ graphQueryBuilder
69
+ . OperationName ( "FragmentTest" )
70
+ . ForType < FragmentObject > ( )
71
+ . Field ( x => x . Name )
72
+ . Fragments ( firstFragment , secondFragment )
73
+ . ToQuery ( )
74
+ . BuildQueries ( ) ;
75
+
76
+ Assert . Equal ( graphQueryBuilder . GetFragments ( ) . First ( ) . GetName ( ) , "FirstFragment" ) ;
77
+ Assert . Equal ( graphQueryBuilder . GetFragments ( ) . First ( ) . GetQuery ( ) . Query , expectedFistFragment ) ;
78
+
79
+ Assert . Equal ( graphQueryBuilder . GetFragments ( ) . Last ( ) . GetName ( ) , "SecondFragment" ) ;
80
+ Assert . Equal ( graphQueryBuilder . GetFragments ( ) . Last ( ) . GetQuery ( ) . Query , expectedSecondFragmment ) ;
81
+
82
+ Assert . Equal ( expectedFullQuery , graphQueryBuilder . GetQuery ( ) . Query ) ;
83
+ }
84
+ [ Fact ]
85
+ public void nested_fragments_should_generate_correct_query ( )
86
+ {
87
+ const string expectedMainQuery = "query FragmentTest {FragmentObject{items{Name ...SecondFragment}}}" ;
88
+ const string expectedFistFragment = "fragment FirstFragment on PromoObject {Expanded{Property1}}" ;
89
+ const string expectedSecondFragmment = "fragment SecondFragment on FragmentObject {PromoText PromoImage{Url} ...FirstFragment}" ;
90
+ const string expectedFullQuery = $ "{ expectedMainQuery } \n { expectedSecondFragmment } \n { expectedFistFragment } ";
91
+
92
+ var firstFragment = new FragmentBuilder < PromoObject > ( "FirstFragment" ) ;
93
+ firstFragment . Fields ( x => x . Expanded . Property1 ) ;
94
+
95
+ var secondFragment = new FragmentBuilder < FragmentObject > ( "SecondFragment" ) ;
96
+ secondFragment . Fields ( x => x . PromoText , x=> x . PromoImage . Url ) ;
97
+ secondFragment . Fragments ( firstFragment ) ;
98
+
99
+ GraphQueryBuilder graphQueryBuilder = new GraphQueryBuilder ( ) ;
100
+ graphQueryBuilder
101
+ . OperationName ( "FragmentTest" )
102
+ . ForType < FragmentObject > ( )
103
+ . Field ( x => x . Name )
104
+ . Fragments ( secondFragment )
105
+ . ToQuery ( )
106
+ . BuildQueries ( ) ;
107
+
108
+ //expect children in secondary fragment
109
+ Assert . Equal ( graphQueryBuilder . GetFragments ( ) . First ( ) . GetName ( ) , "SecondFragment" ) ;
110
+ Assert . True ( graphQueryBuilder . GetFragments ( ) . First ( ) . HasChildren ) ;
111
+ Assert . Equal ( graphQueryBuilder . GetFragments ( ) . First ( ) . ChildrenFragments . First ( ) . GetQuery ( ) . Query , expectedFistFragment ) ;
112
+ //expect secondary fragment
113
+ Assert . Equal ( graphQueryBuilder . GetFragments ( ) . First ( ) . GetQuery ( ) . Query , expectedSecondFragmment ) ;
114
+ //expect full query
115
+ Assert . Equal ( expectedFullQuery , graphQueryBuilder . GetQuery ( ) . Query ) ;
116
+ }
53
117
}
54
118
}
0 commit comments