@@ -131,6 +131,70 @@ public void CreateNavigationGetOperationViaComposableFunctionReturnsCorrectOpera
131
131
Assert . Contains ( operation . Parameters , x => x . Name == "path" ) ;
132
132
}
133
133
134
+ [ Fact ]
135
+ public void CreateNavigationGetOperationViaOverloadedComposableFunctionReturnsCorrectOperation ( )
136
+ {
137
+ // Arrange
138
+ IEdmModel model = EdmModelHelper . GraphBetaModel ;
139
+ ODataContext context = new ( model , new OpenApiConvertSettings ( )
140
+ {
141
+ EnableOperationId = true
142
+ } ) ;
143
+
144
+ IEdmEntitySet drives = model . EntityContainer . FindEntitySet ( "drives" ) ;
145
+ IEdmEntityType drive = model . SchemaElements . OfType < IEdmEntityType > ( ) . First ( c => c . Name == "drive" ) ;
146
+ IEdmNavigationProperty items = drive . DeclaredNavigationProperties ( ) . First ( c => c . Name == "items" ) ;
147
+ IEdmEntityType driveItem = model . SchemaElements . OfType < IEdmEntityType > ( ) . First ( c => c . Name == "driveItem" ) ;
148
+ IEdmNavigationProperty workbook = driveItem . DeclaredNavigationProperties ( ) . First ( c => c . Name == "workbook" ) ;
149
+ IEdmEntityType workbookEntity = model . SchemaElements . OfType < IEdmEntityType > ( ) . First ( c => c . Name == "workbook" ) ;
150
+ IEdmNavigationProperty worksheets = workbookEntity . DeclaredNavigationProperties ( ) . First ( c => c . Name == "worksheets" ) ;
151
+ IEdmEntityType workbookWorksheet = model . SchemaElements . OfType < IEdmEntityType > ( ) . First ( c => c . Name == "workbookWorksheet" ) ;
152
+ IEdmOperation usedRangeWithParams = model . SchemaElements . OfType < IEdmOperation > ( ) . First ( f => f . Name == "usedRange" && f . Parameters . Any ( x => x . Name . Equals ( "valuesOnly" ) ) ) ;
153
+ IEdmOperation usedRange = model . SchemaElements . OfType < IEdmOperation > ( ) . First ( f => f . Name == "usedRange" && f . Parameters . Count ( ) == 1 ) ;
154
+ IEdmEntityType workbookRange = model . SchemaElements . OfType < IEdmEntityType > ( ) . First ( c => c . Name == "workbookRange" ) ;
155
+ IEdmNavigationProperty format = workbookRange . DeclaredNavigationProperties ( ) . First ( c => c . Name == "format" ) ;
156
+
157
+
158
+ ODataPath path1 = new ( new ODataNavigationSourceSegment ( drives ) ,
159
+ new ODataKeySegment ( drive ) ,
160
+ new ODataNavigationPropertySegment ( items ) ,
161
+ new ODataKeySegment ( driveItem ) ,
162
+ new ODataNavigationPropertySegment ( workbook ) ,
163
+ new ODataNavigationPropertySegment ( worksheets ) ,
164
+ new ODataKeySegment ( workbookWorksheet ) ,
165
+ new ODataOperationSegment ( usedRangeWithParams ) ,
166
+ new ODataNavigationPropertySegment ( format ) ) ;
167
+
168
+ ODataPath path2 = new ( new ODataNavigationSourceSegment ( drives ) ,
169
+ new ODataKeySegment ( drive ) ,
170
+ new ODataNavigationPropertySegment ( items ) ,
171
+ new ODataKeySegment ( driveItem ) ,
172
+ new ODataNavigationPropertySegment ( workbook ) ,
173
+ new ODataNavigationPropertySegment ( worksheets ) ,
174
+ new ODataKeySegment ( workbookWorksheet ) ,
175
+ new ODataOperationSegment ( usedRange ) ,
176
+ new ODataNavigationPropertySegment ( format ) ) ;
177
+
178
+ // Act
179
+ var operation1 = _operationHandler . CreateOperation ( context , path1 ) ;
180
+ var operation2 = _operationHandler . CreateOperation ( context , path2 ) ;
181
+
182
+ // Assert
183
+ Assert . NotNull ( operation1 ) ;
184
+ Assert . NotNull ( operation2 ) ;
185
+
186
+ Assert . Equal ( "drives.items.workbook.worksheets.usedRange.GetFormat-206d" , operation1 . OperationId ) ;
187
+ Assert . Equal ( "drives.items.workbook.worksheets.usedRange.GetFormat-ec2c" , operation2 . OperationId ) ;
188
+
189
+ Assert . NotNull ( operation1 . Parameters ) ;
190
+ Assert . Equal ( 6 , operation1 . Parameters . Count ) ;
191
+ Assert . Contains ( operation1 . Parameters , x => x . Name == "valuesOnly" ) ;
192
+
193
+ Assert . NotNull ( operation2 . Parameters ) ;
194
+ Assert . Equal ( 5 , operation2 . Parameters . Count ) ;
195
+ Assert . DoesNotContain ( operation2 . Parameters , x => x . Name == "valuesOnly" ) ;
196
+ }
197
+
134
198
[ Theory ]
135
199
[ InlineData ( true ) ]
136
200
[ InlineData ( false ) ]
0 commit comments