refactor(configmanager): rename UI project and split test projects
Rename ConfigManager to ConfigManager.Ui to match the Core/CLI/UI project structure, and split the monolithic test project into Core.Tests, Cli.Tests, and Ui.Tests to align with the source project organization.
This commit is contained in:
@@ -0,0 +1,173 @@
|
||||
using JdeScoping.ConfigManager.Core.Services;
|
||||
|
||||
namespace JdeScoping.ConfigManager.Core.Tests.Services;
|
||||
|
||||
public class DiffServiceTests
|
||||
{
|
||||
private readonly DiffService _sut;
|
||||
|
||||
public DiffServiceTests()
|
||||
{
|
||||
_sut = new DiffService();
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void GenerateDiff_WithNoChanges_ReturnsEmptyDiff()
|
||||
{
|
||||
// Arrange
|
||||
var original = "line1\nline2\nline3";
|
||||
var modified = "line1\nline2\nline3";
|
||||
|
||||
// Act
|
||||
var result = _sut.GenerateDiff(original, modified);
|
||||
|
||||
// Assert
|
||||
result.HasChanges.ShouldBeFalse();
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void GenerateDiff_WithChanges_ReturnsDiffLines()
|
||||
{
|
||||
// Arrange
|
||||
var original = "line1\nline2\nline3";
|
||||
var modified = "line1\nmodified\nline3";
|
||||
|
||||
// Act
|
||||
var result = _sut.GenerateDiff(original, modified);
|
||||
|
||||
// Assert
|
||||
result.HasChanges.ShouldBeTrue();
|
||||
result.Lines.ShouldNotBeEmpty();
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void GenerateDiff_WithAddedLine_ReportsInsertion()
|
||||
{
|
||||
// Arrange
|
||||
var original = "line1\nline2";
|
||||
var modified = "line1\nline2\nline3";
|
||||
|
||||
// Act
|
||||
var result = _sut.GenerateDiff(original, modified);
|
||||
|
||||
// Assert
|
||||
result.HasChanges.ShouldBeTrue();
|
||||
result.Insertions.ShouldBe(1);
|
||||
result.Deletions.ShouldBe(0);
|
||||
result.Lines.ShouldContain(l => l.Type == DiffLineType.Added && l.Text == "line3");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void GenerateDiff_WithRemovedLine_ReportsDeletion()
|
||||
{
|
||||
// Arrange
|
||||
var original = "line1\nline2\nline3";
|
||||
var modified = "line1\nline3";
|
||||
|
||||
// Act
|
||||
var result = _sut.GenerateDiff(original, modified);
|
||||
|
||||
// Assert
|
||||
result.HasChanges.ShouldBeTrue();
|
||||
result.Deletions.ShouldBe(1);
|
||||
result.Lines.ShouldContain(l => l.Type == DiffLineType.Removed && l.Text == "line2");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void GenerateDiff_WithModifiedLine_ReportsAdditionAndDeletion()
|
||||
{
|
||||
// Arrange
|
||||
var original = "line1\noriginal\nline3";
|
||||
var modified = "line1\nchanged\nline3";
|
||||
|
||||
// Act
|
||||
var result = _sut.GenerateDiff(original, modified);
|
||||
|
||||
// Assert
|
||||
result.HasChanges.ShouldBeTrue();
|
||||
result.Insertions.ShouldBeGreaterThan(0);
|
||||
result.Deletions.ShouldBeGreaterThan(0);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void GenerateDiff_WithEmptyOriginal_ReportsAllAsInsertions()
|
||||
{
|
||||
// Arrange
|
||||
var original = "";
|
||||
var modified = "line1\nline2";
|
||||
|
||||
// Act
|
||||
var result = _sut.GenerateDiff(original, modified);
|
||||
|
||||
// Assert
|
||||
result.HasChanges.ShouldBeTrue();
|
||||
result.Insertions.ShouldBeGreaterThan(0);
|
||||
result.Deletions.ShouldBe(0);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void GenerateDiff_WithEmptyModified_ReportsAllAsDeletions()
|
||||
{
|
||||
// Arrange
|
||||
var original = "line1\nline2";
|
||||
var modified = "";
|
||||
|
||||
// Act
|
||||
var result = _sut.GenerateDiff(original, modified);
|
||||
|
||||
// Assert
|
||||
result.HasChanges.ShouldBeTrue();
|
||||
result.Insertions.ShouldBe(0);
|
||||
result.Deletions.ShouldBeGreaterThan(0);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void GenerateDiff_LineNumbers_AreCorrectForUnchangedLines()
|
||||
{
|
||||
// Arrange
|
||||
var original = "line1\nline2\nline3";
|
||||
var modified = "line1\nline2\nline3";
|
||||
|
||||
// Act
|
||||
var result = _sut.GenerateDiff(original, modified);
|
||||
|
||||
// Assert
|
||||
var firstLine = result.Lines.First();
|
||||
firstLine.OldLineNumber.ShouldBe(1);
|
||||
firstLine.NewLineNumber.ShouldBe(1);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void GenerateDiff_AddedLine_HasNullOldLineNumber()
|
||||
{
|
||||
// Arrange
|
||||
var original = "line1";
|
||||
var modified = "line1\nline2";
|
||||
|
||||
// Act
|
||||
var result = _sut.GenerateDiff(original, modified);
|
||||
|
||||
// Assert
|
||||
var addedLine = result.Lines.FirstOrDefault(l => l.Type == DiffLineType.Added);
|
||||
addedLine.ShouldNotBeNull();
|
||||
addedLine.OldLineNumber.ShouldBeNull();
|
||||
addedLine.NewLineNumber.ShouldNotBeNull();
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void GenerateDiff_RemovedLine_HasNullNewLineNumber()
|
||||
{
|
||||
// Arrange
|
||||
var original = "line1\nline2";
|
||||
var modified = "line1";
|
||||
|
||||
// Act
|
||||
var result = _sut.GenerateDiff(original, modified);
|
||||
|
||||
// Assert
|
||||
var removedLine = result.Lines.FirstOrDefault(l => l.Type == DiffLineType.Removed);
|
||||
removedLine.ShouldNotBeNull();
|
||||
removedLine.OldLineNumber.ShouldNotBeNull();
|
||||
removedLine.NewLineNumber.ShouldBeNull();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user