Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -280,4 +280,36 @@ public async Task CreateAsync_WithoutOptionalSettings_OnlyIncludesVersion(
// Assert
_ = await Assert.That(content).Contains("\"version\"");
}

[Test]
[Arguments("")]
[Arguments(" ")]
public async Task SetRuntimeSdk_WithEmptyOrWhitespace_ThrowsArgumentException(string runtimeVersion)
{
// Arrange
await using var directory = new TemporaryDirectoryBuilder();
await using var builder = new GlobalJsonBuilder(directory, Constants.RuntimeSdkDefault);

// Act
void Act() => builder.SetRuntimeSdk(runtimeVersion);

// Assert
_ = Assert.Throws<ArgumentException>(Act);
}

[Test]
public async Task CreateAsync_WithCanceledToken_ThrowsOperationCanceledException()
{
// Arrange
await using var directory = new TemporaryDirectoryBuilder();
await using var builder = new GlobalJsonBuilder(directory, Constants.RuntimeSdkDefault);
using var cts = new CancellationTokenSource();
await cts.CancelAsync();

// Act
async Task Act() => await builder.CreateAsync(cts.Token);

// Assert
_ = await Assert.ThrowsAsync<OperationCanceledException>(Act);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -217,4 +217,66 @@ public async Task AddVBFile_WritesContentToFile(CancellationToken cancellationTo
// Assert
_ = await Assert.That(fileContent).IsEqualTo(content);
}

[Test]
public async Task AddVBFile_WithEmptyFileName_ThrowsArgumentException()
{
// Arrange
await using var directory = new TemporaryDirectoryBuilder();
await using var builder = new ProjectBuilder(directory, Constants.VBNetProjectFileName);
var fileName = string.Empty;
const string content = "Public Class Program End Class";

// Act
void Act() => builder.AddVBFile(fileName, content);

// Assert
_ = Assert.Throws<ArgumentException>(Act);
}

[Test]
public async Task AddVBFile_WithWhitespaceFileName_ThrowsArgumentException()
{
// Arrange
await using var directory = new TemporaryDirectoryBuilder();
await using var builder = new ProjectBuilder(directory, Constants.VBNetProjectFileName);
const string content = "Public Class Program End Class";

// Act
void Act() => builder.AddVBFile(" ", content);

// Assert
_ = Assert.Throws<ArgumentException>(Act);
}

[Test]
public async Task AddVBFile_WithEmptyContent_ThrowsArgumentException()
{
// Arrange
await using var directory = new TemporaryDirectoryBuilder();
await using var builder = new ProjectBuilder(directory, Constants.VBNetProjectFileName);
const string fileName = "Program";
var content = string.Empty;

// Act
void Act() => builder.AddVBFile(fileName, content);

// Assert
_ = Assert.Throws<ArgumentException>(Act);
}

[Test]
public async Task AddVBFile_WithWhitespaceContent_ThrowsArgumentException()
{
// Arrange
await using var directory = new TemporaryDirectoryBuilder();
await using var builder = new ProjectBuilder(directory, Constants.VBNetProjectFileName);
const string fileName = "Program";

// Act
void Act() => builder.AddVBFile(fileName, " ");

// Assert
_ = Assert.Throws<ArgumentException>(Act);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
namespace NetEvolve.ProjectBuilders.Tests.Unit.Builders;

using System;
using System.Threading.Tasks;
using NetEvolve.ProjectBuilders.Abstractions;
using NetEvolve.ProjectBuilders.Builders;

public class ProjectFactoryExtensionsTests
{
[Test]
[Arguments("")]
[Arguments(" ")]
public async Task AddGlobalJson_WithEmptyOrWhitespaceRuntimeVersion_ThrowsArgumentException(string runtimeVersion)
{
// Arrange
await using var factory = ProjectFactory.Create();

// Act
void Act() => factory.AddGlobalJson(runtimeVersion);

// Assert
_ = Assert.Throws<ArgumentException>(Act);
}

[Test]
public async Task AddGlobalJson_WithConfigure_InvokesCallbackWithGlobalJsonBuilder()
{
// Arrange
await using var factory = ProjectFactory.Create();
IGlobalJsonBuilder? received = null;
var calls = 0;

// Act
_ = factory.AddGlobalJson(configure: gb =>
{
calls++;
received = gb;
});

// Assert
_ = await Assert.That(calls).IsEqualTo(1);
_ = await Assert.That(received).IsNotNull().And.IsTypeOf<GlobalJsonBuilder>();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,8 @@ public async Task CreateFile_WithExistingFileName_ThrowsArgumentException()
void Act() => _ = subdirectory.CreateFile("file.txt");

// Assert
_ = Assert.Throws<ArgumentException>(Act);
var ex = Assert.Throws<ArgumentException>(Act);
_ = await Assert.That(ex.Message).Contains("file.txt").And.Contains("already exists");
}

[Test]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,8 @@ public async Task CreateFile_WithExistingFileName_ThrowsArgumentException()
void Act() => directory.CreateFile(fileName);

// Assert
_ = Assert.Throws<ArgumentException>(Act);
var ex = Assert.Throws<ArgumentException>(Act);
_ = await Assert.That(ex.Message).Contains(fileName).And.Contains("already exists");
}

[Test]
Expand Down
Loading