Skip to content

Commit 0d219df

Browse files
committed
Adds validation unit test
1 parent ef20777 commit 0d219df

File tree

1 file changed

+64
-0
lines changed

1 file changed

+64
-0
lines changed

test/Microsoft.OpenAPI.OData.Reader.Tests/Operation/NavigationPropertyGetOperationHandlerTests.cs

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,70 @@ public void CreateNavigationGetOperationViaComposableFunctionReturnsCorrectOpera
131131
Assert.Contains(operation.Parameters, x => x.Name == "path");
132132
}
133133

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+
134198
[Theory]
135199
[InlineData(true)]
136200
[InlineData(false)]

0 commit comments

Comments
 (0)