Skip to content

Commit 1f1bf69

Browse files
committed
test: add FileInfoFactoryTests and NamespaceFactoryTests
1 parent b054e06 commit 1f1bf69

File tree

5 files changed

+92
-2
lines changed

5 files changed

+92
-2
lines changed

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

+3-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,9 @@ public static string CreateFull(
1414
public static string Create(
1515
params string[] subNamespaces)
1616
{
17-
var fullNamespace = string.Join(' ', subNamespaces);
17+
var fullNamespace = string
18+
.Join(' ', subNamespaces)
19+
.Replace(" . ", " ", StringComparison.Ordinal);
1820

1921
return fullNamespace.EnsureNamespaceFormat();
2022
}

test/Atc.Rest.ApiGenerator.Framework.Tests/Atc.Rest.ApiGenerator.Framework.Tests.csproj

+4
Original file line numberDiff line numberDiff line change
@@ -18,4 +18,8 @@
1818
</PackageReference>
1919
</ItemGroup>
2020

21+
<ItemGroup>
22+
<ProjectReference Include="..\..\src\Atc.Rest.ApiGenerator.Framework\Atc.Rest.ApiGenerator.Framework.csproj" />
23+
</ItemGroup>
24+
2125
</Project>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
namespace Atc.Rest.ApiGenerator.Framework.Tests.Factories;
2+
3+
public class FileInfoFactoryTests
4+
{
5+
[Theory]
6+
[InlineData(@"C:\Project", new[] { "SubFolder", "File.cs" }, @"C:\Project\SubFolder\File.cs")]
7+
[InlineData(@"C:\Project", new[] { "Folder-With-Dashes", "File.cs" }, @"C:\Project\Folder\With\Dashes\File.cs")]
8+
[InlineData(@"C:\Project", new[] { "nested.folder", "File.cs" }, @"C:\Project\Nested\Folder\File.cs")]
9+
[InlineData(@"C:\Project", new[] { "_shared", "File.cs" }, @"C:\Project\_Shared\File.cs")]
10+
[InlineData(@"C:\Project", new[] { "_enumerationTypes", "File.cs" }, @"C:\Project\_EnumerationTypes\File.cs")]
11+
[InlineData(@"C:\Project", new[] { "folder", "Users", "MyUser.cs" }, @"C:\Project\Folder\Users\MyUser.cs")]
12+
[InlineData(@"C:\Project", new[] { "nested.folder", "Users", "MyUser.cs" }, @"C:\Project\Nested\Folder\Users\MyUser.cs")]
13+
[InlineData(@"C:\Project", new[] { @"nested\folder", "Users", "MyUser.cs" }, @"C:\Project\Nested\Folder\Users\MyUser.cs")]
14+
[InlineData(@"C:\Project", new[] { ".", "Users", "MyUser.cs" }, @"C:\Project\Users\MyUser.cs")]
15+
public void Create_ShouldReturnCorrectFileInfo(
16+
string projectPath,
17+
string[] subParts,
18+
string expectedFilePath)
19+
{
20+
// Arrange
21+
var directoryInfo = new DirectoryInfo(projectPath);
22+
23+
// Act
24+
var fileInfo = FileInfoFactory.Create(directoryInfo, subParts);
25+
26+
// Assert
27+
Assert.Equal(expectedFilePath, fileInfo.FullName);
28+
}
29+
30+
[Theory]
31+
[InlineData(@"C:\Project", new string[] { })]
32+
[InlineData(@"C:\Project", new[] { "SubFolder", "FileWithoutExtension" })]
33+
public void Create_ShouldThrowException(
34+
string projectPath,
35+
string[] subParts)
36+
{
37+
// Arrange
38+
var directoryInfo = new DirectoryInfo(projectPath);
39+
40+
// Act & Assert
41+
Assert.Throws<ArgumentException>(() => FileInfoFactory.Create(directoryInfo, subParts));
42+
}
43+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
namespace Atc.Rest.ApiGenerator.Framework.Tests.Factories;
2+
3+
public class NamespaceFactoryTests
4+
{
5+
[Theory]
6+
[InlineData("MyProject", new string[] { }, "MyProject")]
7+
[InlineData("", new[] { "SubNamespace1" }, "SubNamespace1")]
8+
[InlineData("MyProject", new[] { "SubNamespace1" }, "MyProject.SubNamespace1")]
9+
[InlineData("MyProject", new[] { "SubNamespace1", "SubNamespace2" }, "MyProject.SubNamespace1.SubNamespace2")]
10+
[InlineData("MyProject", new[] { "folder", "Users", "MyUser" }, "MyProject.Folder.Users.MyUser")]
11+
[InlineData("MyProject", new[] { "nested.folder", "Users", "MyUser" }, "MyProject.Nested.Folder.Users.MyUser")]
12+
[InlineData("MyProject", new[] { @"nested\folder", "Users", "MyUser" }, "MyProject.Nested.Folder.Users.MyUser")]
13+
[InlineData("MyProject", new[] { ".", "Users", "MyUser" }, "MyProject.Users.MyUser")]
14+
public void CreateFull_ShouldReturnCorrectNamespace(
15+
string projectName,
16+
string[] subNamespaces,
17+
string expected)
18+
{
19+
// Act
20+
var result = NamespaceFactory.CreateFull(projectName, subNamespaces);
21+
22+
// Assert
23+
Assert.Equal(expected, result);
24+
}
25+
26+
[Theory]
27+
[InlineData(new string[] { }, "")]
28+
[InlineData(new[] { "MyNamespace" }, "MyNamespace")]
29+
[InlineData(new[] { "MyNamespace", "SubNamespace" }, "MyNamespace.SubNamespace")]
30+
public void Create_ShouldReturnCorrectNamespace(
31+
string[] subNamespaces,
32+
string expected)
33+
{
34+
// Act
35+
var result = NamespaceFactory.Create(subNamespaces);
36+
37+
// Assert
38+
Assert.Equal(expected, result);
39+
}
40+
}
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
1-
global using System.Diagnostics.CodeAnalysis;
1+
global using System.Diagnostics.CodeAnalysis;
2+
global using Atc.Rest.ApiGenerator.Framework.Factories;

0 commit comments

Comments
 (0)