Skip to content

Commit 9581206

Browse files
Add tests
1 parent b378569 commit 9581206

File tree

2 files changed

+78
-2
lines changed

2 files changed

+78
-2
lines changed

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

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ public void CreateOperationForEdmActionReturnsCorrectOperation()
5454
}
5555

5656
[Fact]
57-
public void CreateOperationForEdmActionReturnsCorrectOperationHierarhicalClass()
57+
public void CreateOperationForEdmActionReturnsCorrectOperationHierarchicalClass()
5858
{
5959
// Arrange
6060
IEdmModel model = EdmModelHelper.ContractServiceModel;
@@ -296,5 +296,44 @@ public void OperationRestrictionsTermWorksToCreateOperationForEdmAction(bool ena
296296
Assert.Empty(operation.Security);
297297
}
298298
}
299+
300+
[Theory]
301+
[InlineData("getMailTips", true)] // returns collection
302+
[InlineData("getMailTips", false)] // returns collection
303+
[InlineData("findMeetingTimes", true)] // does not return collection
304+
public void CreateOperationForEdmActionWithCollectionReturnTypeContainsXMsPageableExtension(string actionName, bool enablePagination)
305+
{
306+
// Arrange
307+
IEdmModel model = EdmModelHelper.GraphBetaModel;
308+
OpenApiConvertSettings settings = new OpenApiConvertSettings
309+
{
310+
EnableOperationId = true,
311+
EnablePagination = enablePagination
312+
};
313+
ODataContext context = new ODataContext(model, settings);
314+
IEdmAction action = model.SchemaElements.OfType<IEdmAction>()
315+
.First(x => x.Name == actionName &&
316+
x.FindParameter("bindingParameter").Type.Definition.ToString() == "microsoft.graph.user");
317+
IEdmEntityContainer container = model.SchemaElements.OfType<IEdmEntityContainer>().First();
318+
IEdmEntitySet users = container.FindEntitySet("users");
319+
IEdmEntityType user = model.SchemaElements.OfType<IEdmEntityType>().First(x => x.Name == "user");
320+
321+
ODataPath path = new ODataPath(new ODataNavigationSourceSegment(users),
322+
new ODataKeySegment(user),
323+
new ODataOperationSegment(action));
324+
325+
// Act
326+
var operation = _operationHandler.CreateOperation(context, path);
327+
328+
// Assert
329+
if (enablePagination && action.ReturnType.IsCollection())
330+
{
331+
Assert.True(operation.Extensions.ContainsKey(Common.Constants.xMsPageable));
332+
}
333+
else
334+
{
335+
Assert.False(operation.Extensions.ContainsKey(Common.Constants.xMsPageable));
336+
}
337+
}
299338
}
300339
}

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

Lines changed: 38 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ public void CreateOperationForEdmFunctionReturnsCorrectOperation(bool useHTTPSta
112112
}
113113

114114
[Fact]
115-
public void CreateOperationForEdmFunctionReturnsCorrectOperationHierarhicalClass()
115+
public void CreateOperationForEdmFunctionReturnsCorrectOperationHierarchicalClass()
116116
{
117117
// Arrange
118118
IEdmModel model = EdmModelHelper.ContractServiceModel;
@@ -408,5 +408,42 @@ public void OperationRestrictionsTermWorksToCreateOperationForEdmFunction(bool e
408408
Assert.Empty(operation.Security);
409409
}
410410
}
411+
412+
[Theory]
413+
[InlineData("getUserArchivedPrintJobs", true)] // returns collection
414+
[InlineData("getUserArchivedPrintJobs", false)] // returns collection
415+
[InlineData("managedDeviceEnrollmentAbandonmentSummary", true)] // does not return collection
416+
public void CreateOperationForEdmFunctionWithCollectionReturnTypeContainsXMsPageableExtension(string functionName, bool enablePagination)
417+
{
418+
// Arrange
419+
IEdmModel model = EdmModelHelper.GraphBetaModel;
420+
OpenApiConvertSettings settings = new OpenApiConvertSettings
421+
{
422+
EnableOperationId = true,
423+
EnablePagination = enablePagination
424+
};
425+
ODataContext context = new ODataContext(model, settings);
426+
IEdmFunction function = model.SchemaElements.OfType<IEdmFunction>()
427+
.First(x => x.Name == functionName &&
428+
x.FindParameter("bindingParameter").Type.Definition.ToString() == "microsoft.graph.reportRoot");
429+
IEdmEntityContainer container = model.SchemaElements.OfType<IEdmEntityContainer>().First();
430+
IEdmSingleton reports = container.FindSingleton("reports");
431+
432+
ODataPath path = new ODataPath(new ODataNavigationSourceSegment(reports),
433+
new ODataOperationSegment(function));
434+
435+
// Act
436+
var operation = _operationHandler.CreateOperation(context, path);
437+
438+
// Assert
439+
if (enablePagination && function.ReturnType.IsCollection())
440+
{
441+
Assert.True(operation.Extensions.ContainsKey(Common.Constants.xMsPageable));
442+
}
443+
else
444+
{
445+
Assert.False(operation.Extensions.ContainsKey(Common.Constants.xMsPageable));
446+
}
447+
}
411448
}
412449
}

0 commit comments

Comments
 (0)