Skip to content

Commit 4080e59

Browse files
committed
test: add NamespaceFactoryTests
1 parent 8bea084 commit 4080e59

File tree

11 files changed

+97
-42
lines changed

11 files changed

+97
-42
lines changed

src/Atc.Rest.ApiGenerator.Client.CSharp/ProjectGenerator/ClientCSharpApiGenerator.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -420,7 +420,7 @@ public void MaintainGlobalUsings(
420420
continue;
421421
}
422422

423-
var requiredUsing = LocationFactory.Create(settings.ProjectName, contractsLocation);
423+
var requiredUsing = NamespaceFactory.Create(settings.ProjectName, contractsLocation);
424424
if (!requiredUsings.Contains(requiredUsing, StringComparer.CurrentCulture))
425425
{
426426
requiredUsings.Add(requiredUsing);
@@ -451,15 +451,15 @@ public void MaintainGlobalUsings(
451451
continue;
452452
}
453453

454-
var requiredUsing = LocationFactory.Create(settings.ProjectName, contractsLocation);
454+
var requiredUsing = NamespaceFactory.Create(settings.ProjectName, contractsLocation);
455455
if (!requiredUsings.Contains(requiredUsing, StringComparer.CurrentCulture))
456456
{
457457
requiredUsings.Add(requiredUsing);
458458
}
459459
}
460460
}
461461

462-
requiredUsings.AddRange(apiGroupNames.Select(x => LocationFactory.Create(settings.ProjectName, LocationFactory.CreateWithApiGroupName(x, settings.EndpointsLocation), ContentGeneratorConstants.Interfaces)));
462+
requiredUsings.AddRange(apiGroupNames.Select(x => NamespaceFactory.Create(settings.ProjectName, LocationFactory.CreateWithApiGroupName(x, settings.EndpointsLocation), ContentGeneratorConstants.Interfaces)));
463463

464464
GlobalUsingsHelper.CreateOrUpdate(
465465
logger,

src/Atc.Rest.ApiGenerator.Framework.Minimal/ProjectGenerator/ServerApiGenerator.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -362,7 +362,7 @@ public void MaintainGlobalUsings(
362362

363363
var apiGroupNames = openApiDocument.GetApiGroupNames();
364364

365-
requiredUsings.AddRange(apiGroupNames.Select(x => LocationFactory.Create(settings.ProjectName, LocationFactory.CreateWithApiGroupName(x, settings.ContractsLocation))));
365+
requiredUsings.AddRange(apiGroupNames.Select(x => NamespaceFactory.Create(settings.ProjectName, LocationFactory.CreateWithApiGroupName(x, settings.ContractsLocation))));
366366

367367
GlobalUsingsHelper.CreateOrUpdate(
368368
logger,

src/Atc.Rest.ApiGenerator.Framework.Minimal/ProjectGenerator/ServerDomainGenerator.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -257,7 +257,7 @@ public void MaintainGlobalUsings(
257257

258258
var apiGroupNames = openApiDocument.GetApiGroupNames();
259259

260-
requiredUsings.AddRange(apiGroupNames.Select(x => LocationFactory.Create(apiProjectName, LocationFactory.CreateWithApiGroupName(x, settings.ContractsLocation))));
260+
requiredUsings.AddRange(apiGroupNames.Select(x => NamespaceFactory.Create(apiProjectName, LocationFactory.CreateWithApiGroupName(x, settings.ContractsLocation))));
261261

262262
GlobalUsingsHelper.CreateOrUpdate(
263263
logger,

src/Atc.Rest.ApiGenerator.Framework.Mvc/ProjectGenerator/ServerApiGenerator.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -374,7 +374,7 @@ public void MaintainGlobalUsings(
374374

375375
var apiGroupNames = openApiDocument.GetApiGroupNames();
376376

377-
requiredUsings.AddRange(apiGroupNames.Select(x => LocationFactory.Create(settings.ProjectName, LocationFactory.CreateWithApiGroupName(x, settings.ContractsLocation))));
377+
requiredUsings.AddRange(apiGroupNames.Select(x => NamespaceFactory.Create(settings.ProjectName, LocationFactory.CreateWithApiGroupName(x, settings.ContractsLocation))));
378378

379379
GlobalUsingsHelper.CreateOrUpdate(
380380
logger,

src/Atc.Rest.ApiGenerator.Framework.Mvc/ProjectGenerator/ServerDomainGenerator.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ public void MaintainGlobalUsings(
154154

155155
var apiGroupNames = openApiDocument.GetApiGroupNames();
156156

157-
requiredUsings.AddRange(apiGroupNames.Select(x => LocationFactory.Create(apiProjectName, LocationFactory.CreateWithApiGroupName(x, settings.ContractsLocation))));
157+
requiredUsings.AddRange(apiGroupNames.Select(x => NamespaceFactory.Create(apiProjectName, LocationFactory.CreateWithApiGroupName(x, settings.ContractsLocation))));
158158

159159
GlobalUsingsHelper.CreateOrUpdate(
160160
logger,

src/Atc.Rest.ApiGenerator.Framework/Factories/LocationFactory.cs

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -32,21 +32,6 @@ public static string CreateWithoutTemplateForApiGroupName(
3232
return value;
3333
}
3434

35-
public static string Create(
36-
params string[] values)
37-
{
38-
if (values is null)
39-
{
40-
return string.Empty;
41-
}
42-
43-
var fullNamespace = string
44-
.Join(' ', values)
45-
.Replace(" . ", " ", StringComparison.Ordinal);
46-
47-
return fullNamespace.EnsureNamespaceFormat();
48-
}
49-
5035
public static string Create(
5136
ICollection<KeyValueItem> templateItems,
5237
params string[] values)

src/Atc.Rest.ApiGenerator.Framework/Factories/Parameters/Client/ContentGeneratorClientEndpointParametersFactory.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ public static ContentGeneratorClientEndpointParameters Create(
2323
AppendParameters(parameters, openApiOperation.Parameters);
2424
AppendParametersFromBody(parameters, openApiOperation.RequestBody);
2525

26-
var modelNamespace = LocationFactory.Create(projectName, contractsLocation);
26+
var modelNamespace = NamespaceFactory.Create(projectName, contractsLocation);
2727
var operationName = openApiOperation.GetOperationName();
2828
var controllerAuthorization = openApiPath.ExtractApiPathAuthorization();
2929
var endpointAuthorization = openApiOperation.ExtractApiOperationAuthorization(openApiPath);

src/Atc.Rest.ApiGenerator.Framework/Factories/Parameters/Client/ContentGeneratorClientEndpointResultInterfaceParametersFactory.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ public static ContentGeneratorClientEndpointResultInterfaceParameters Create(
2020
AppendParameters(parameters, openApiOperation.Parameters);
2121
AppendParametersFromBody(parameters, openApiOperation.RequestBody);
2222

23-
var modelNamespace = LocationFactory.Create(projectName, contractsLocation);
23+
var modelNamespace = NamespaceFactory.Create(projectName, contractsLocation);
2424
var operationName = openApiOperation.GetOperationName();
2525
var controllerAuthorization = openApiPath.ExtractApiPathAuthorization();
2626
var endpointAuthorization = openApiOperation.ExtractApiOperationAuthorization(openApiPath);

src/Atc.Rest.ApiGenerator.Framework/Factories/Parameters/Client/ContentGeneratorClientEndpointResultParametersFactory.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ public static ContentGeneratorClientEndpointResultParameters Create(
2020
AppendParameters(parameters, openApiOperation.Parameters);
2121
AppendParametersFromBody(parameters, openApiOperation.RequestBody);
2222

23-
var modelNamespace = LocationFactory.Create(projectName, contractsLocation);
23+
var modelNamespace = NamespaceFactory.Create(projectName, contractsLocation);
2424
var operationName = openApiOperation.GetOperationName();
2525
var controllerAuthorization = openApiPath.ExtractApiPathAuthorization();
2626
var endpointAuthorization = openApiOperation.ExtractApiOperationAuthorization(openApiPath);

test/Atc.Rest.ApiGenerator.Framework.Tests/Factories/LocationFactoryTests.cs

Lines changed: 60 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -3,45 +3,88 @@ namespace Atc.Rest.ApiGenerator.Framework.Tests.Factories;
33
public class LocationFactoryTests
44
{
55
[Theory]
6-
[InlineData(new string[] { }, "")]
7-
[InlineData(new[] { "MyNamespace" }, "MyNamespace")]
8-
[InlineData(new[] { "MyNamespace", "SubNamespace" }, "MyNamespace.SubNamespace")]
9-
[InlineData(new[] { "MyProject" }, "MyProject")]
10-
[InlineData(new[] { "", "SubNamespace1" }, "SubNamespace1")]
11-
[InlineData(new[] { "MyProject", "SubNamespace1" }, "MyProject.SubNamespace1")]
12-
[InlineData(new[] { "MyProject", "SubNamespace1", "SubNamespace2" }, "MyProject.SubNamespace1.SubNamespace2")]
13-
[InlineData(new[] { "MyProject", "folder", "Users", "MyUser" }, "MyProject.Folder.Users.MyUser")]
14-
[InlineData(new[] { "MyProject", "nested.folder", "Users", "MyUser" }, "MyProject.Nested.Folder.Users.MyUser")]
15-
[InlineData(new[] { "MyProject", @"nested\folder", "Users", "MyUser" }, "MyProject.Nested.Folder.Users.MyUser")]
16-
[InlineData(new[] { "MyProject", ".", "Users", "MyUser" }, "MyProject.Users.MyUser")]
17-
public void Create_ShouldReturnCorrectNamespace(
18-
string[] namespaceParts,
6+
[InlineData("MyProject.Folder.[[apiGroupName]].MyUser", "Users", "MyProject.Folder.Users.MyUser")]
7+
[InlineData("MyProject.[[apiGroupName]].MyUser", "Users", "MyProject.Users.MyUser")]
8+
[InlineData("[[apiGroupName]].MyUser", "Users", "Users.MyUser")]
9+
public void CreateWithApiGroupName_ShouldReturnCorrect_Location(
10+
string value,
11+
string apiGroupName,
1912
string expected)
2013
{
2114
// Act
22-
var result = LocationFactory.Create(namespaceParts);
15+
var result = LocationFactory.CreateWithApiGroupName(apiGroupName, value);
2316

2417
// Assert
2518
Assert.Equal(expected, result);
2619
}
2720

21+
[Theory]
22+
[InlineData("MyProject.Folder.TemplateForApiGroupName.MyUser", "MyProject.Folder.TemplateForApiGroupName.MyUser")]
23+
[InlineData("MyProject.TemplateForApiGroupName.MyUser", "MyProject.TemplateForApiGroupName.MyUser")]
24+
[InlineData("TemplateForApiGroupName.MyUser", "TemplateForApiGroupName.MyUser")]
25+
public void CreateWithoutTemplateForApiGroupName_ShouldRemoveTemplateKey(
26+
string value,
27+
string expected)
28+
{
29+
// Act
30+
var result = LocationFactory.CreateWithoutTemplateForApiGroupName(value);
31+
32+
// Assert
33+
Assert.Equal(expected, result);
34+
}
35+
36+
[Fact]
37+
public void CreateWithoutTemplateForApiGroupName_ShouldReturnEmpty_WhenValueIsNull()
38+
{
39+
// Act
40+
var result = LocationFactory.CreateWithoutTemplateForApiGroupName(null!);
41+
42+
// Assert
43+
Assert.Equal(string.Empty, result);
44+
}
45+
2846
[Theory]
2947
[InlineData(new[] { "MyProject", "folder", "[[apiGroupName]]", "MyUser" }, "Users", "MyProject.Folder.Users.MyUser")]
3048
[InlineData(new[] { "MyProject", "nested.folder", "[[apiGroupName]]", "MyUser" }, "Users", "MyProject.Nested.Folder.Users.MyUser")]
3149
[InlineData(new[] { "MyProject", @"nested\folder", "[[apiGroupName]]", "MyUser" }, "Users", "MyProject.Nested.Folder.Users.MyUser")]
3250
[InlineData(new[] { "MyProject", ".", "[[apiGroupName]]", "MyUser" }, "Users", "MyProject.Users.MyUser")]
3351
[InlineData(new[] { "MyProject", ".", "MyUser" }, "Users", "MyProject.MyUser.Users")]
34-
public void Create_WithTemplateItems_ShouldReturnCorrectNamespace(
35-
string[] namespaceParts,
52+
public void Create_WithTemplateItems_ShouldReturnCorrect_Location(
53+
string[] values,
3654
string apiGroupName,
3755
string expected)
3856
{
3957
// Act
4058
var result = LocationFactory.Create(
4159
new List<KeyValueItem> { new("apiGroupName", apiGroupName) },
42-
namespaceParts);
60+
values);
4361

4462
// Assert
4563
Assert.Equal(expected, result);
4664
}
65+
66+
[Fact]
67+
public void Create_WithNullValues_ShouldReturnEmptyString()
68+
{
69+
// Act
70+
var result = LocationFactory.Create(
71+
new List<KeyValueItem> { new("apiGroupName", "Users") },
72+
null!);
73+
74+
// Assert
75+
Assert.Equal(string.Empty, result);
76+
}
77+
78+
[Fact]
79+
public void Create_WithEmptyTemplateItems_ShouldReturnJoinedValues()
80+
{
81+
// Arrange
82+
var values = new[] { "MyProject", "folder", "MyUser" };
83+
84+
// Act
85+
var result = LocationFactory.Create(new List<KeyValueItem>(), values);
86+
87+
// Assert
88+
Assert.Equal("MyProject.Folder.MyUser", result);
89+
}
4790
}

0 commit comments

Comments
 (0)