Skip to content

Commit 03f379b

Browse files
Add missing tests
1 parent ea50eb2 commit 03f379b

File tree

1 file changed

+96
-0
lines changed

1 file changed

+96
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
// Copyright (c) .NET Foundation and contributors. All rights reserved.
2+
3+
namespace Asp.Versioning.ApiExplorer;
4+
5+
using Microsoft.AspNetCore.Mvc;
6+
using Microsoft.AspNetCore.Mvc.Abstractions;
7+
using Microsoft.AspNetCore.Routing;
8+
using Microsoft.Extensions.Options;
9+
10+
public class GroupedApiVersionDescriptionProviderTest
11+
{
12+
[Fact]
13+
public void api_version_descriptions_should_collate_expected_versions()
14+
{
15+
// arrange
16+
var descriptionProvider = new GroupedApiVersionDescriptionProvider(
17+
new TestEndpointDataSource(),
18+
new TestActionDescriptorCollectionProvider(),
19+
Mock.Of<ISunsetPolicyManager>(),
20+
Options.Create( new ApiExplorerOptions() { GroupNameFormat = "'v'VVV" } ) );
21+
22+
// act
23+
var descriptions = descriptionProvider.ApiVersionDescriptions;
24+
25+
// assert
26+
descriptions.Should().BeEquivalentTo(
27+
new ApiVersionDescription[]
28+
{
29+
new( new ApiVersion( 0, 9 ), "v0.9", true ),
30+
new( new ApiVersion( 1, 0 ), "v1", false ),
31+
new( new ApiVersion( 2, 0 ), "v2", false ),
32+
new( new ApiVersion( 3, 0 ), "v3", false ),
33+
} );
34+
}
35+
36+
[Fact]
37+
public void api_version_descriptions_should_collate_expected_versions_with_custom_group()
38+
{
39+
// arrange
40+
var provider = new TestActionDescriptorCollectionProvider();
41+
var source = new CompositeEndpointDataSource( Enumerable.Empty<EndpointDataSource>() );
42+
var data = new ApiDescriptionActionData() { GroupName = "Test" };
43+
44+
foreach ( var descriptor in provider.ActionDescriptors.Items )
45+
{
46+
descriptor.SetProperty( data );
47+
}
48+
49+
var descriptionProvider = new GroupedApiVersionDescriptionProvider(
50+
source,
51+
provider,
52+
Mock.Of<ISunsetPolicyManager>(),
53+
Options.Create(
54+
new ApiExplorerOptions()
55+
{
56+
GroupNameFormat = "VVV",
57+
FormatGroupName = ( groupName, version ) => $"{groupName}-{version}",
58+
} ) );
59+
60+
// act
61+
var descriptions = descriptionProvider.ApiVersionDescriptions;
62+
63+
// assert
64+
descriptions.Should().BeEquivalentTo(
65+
new ApiVersionDescription[]
66+
{
67+
new( new ApiVersion( 0, 9 ), "Test-0.9", true ),
68+
new( new ApiVersion( 1, 0 ), "Test-1", false ),
69+
new( new ApiVersion( 2, 0 ), "Test-2", false ),
70+
new( new ApiVersion( 3, 0 ), "Test-3", false ),
71+
} );
72+
}
73+
74+
[Fact]
75+
public void api_version_descriptions_should_apply_sunset_policy()
76+
{
77+
// arrange
78+
var expected = new SunsetPolicy();
79+
var apiVersion = new ApiVersion( 0.9 );
80+
var policyManager = new Mock<ISunsetPolicyManager>();
81+
82+
policyManager.Setup( pm => pm.TryGetPolicy( default, apiVersion, out expected ) ).Returns( true );
83+
84+
var descriptionProvider = new GroupedApiVersionDescriptionProvider(
85+
new TestEndpointDataSource(),
86+
new TestActionDescriptorCollectionProvider(),
87+
policyManager.Object,
88+
Options.Create( new ApiExplorerOptions() { GroupNameFormat = "'v'VVV" } ) );
89+
90+
// act
91+
var description = descriptionProvider.ApiVersionDescriptions.Single( api => api.GroupName == "v0.9" );
92+
93+
// assert
94+
description.SunsetPolicy.Should().BeSameAs( expected );
95+
}
96+
}

0 commit comments

Comments
 (0)