Refactor: Rename DocumentOperator to DocumentService

Updated project and solution files to rename and restructure
`DocumentOperator` to `DocumentService`. Modified project
references in `DocumentService.API.csproj`, `DocumentService.Application.csproj`,
and `DocumentService.Infrastructure.csproj` to reflect the new
naming convention. Updated `DocumentService.sln` to remove
old project references, add new ones, and adjust configuration
and nested project mappings accordingly. This change aligns
the project structure with the new naming convention.
This commit is contained in:
2026-08-30 21:33:25 +02:00
parent 050cb55bf9
commit 207c778f3a
108 changed files with 37 additions and 37 deletions

View File

@@ -0,0 +1,121 @@
using DocumentService.Application.Common.Interfaces;
using DocumentService.Application.ConvertToPdfA;
using DocumentService.Application.ConvertFromPdfA;
using DocumentService.Domain.Common.Exceptions;
using FluentAssertions;
using Moq;
using Xunit;
namespace DocumentService.Tests.Unit.Application.Features.ConvertPdfA;
public class ConvertToPdfAHandlerTests
{
private readonly Mock<IPdfProcessor> _mockProcessor;
private readonly ConvertToPdfACommandHandler _handler;
private static readonly byte[] FakePdfBytes = "%PDF"u8.ToArray();
public ConvertToPdfAHandlerTests()
{
_mockProcessor = new Mock<IPdfProcessor>();
_handler = new ConvertToPdfACommandHandler(_mockProcessor.Object);
}
[Fact]
public async Task Handle_ValidPdfAndLevel_ReturnsConvertedBytes()
{
// Arrange
var command = new ConvertToPdfACommand { PdfStream = new MemoryStream(FakePdfBytes), PdfALevel = "PDF/A-3b" };
var expected = new byte[] { 0x25, 0x50, 0x44, 0x46, 0x0A };
_mockProcessor.Setup(x => x.ConvertToPdfAAsync(It.IsAny<Stream>(), "PDF/A-3b")).ReturnsAsync(expected);
// Act
var result = await _handler.Handle(command, CancellationToken.None);
// Assert
result.Should().BeEquivalentTo(expected);
_mockProcessor.Verify(x => x.ConvertToPdfAAsync(It.IsAny<Stream>(), "PDF/A-3b"), Times.Once);
}
[Fact]
public async Task Handle_ProcessorThrowsNotImplemented_PropagatesException()
{
// Arrange
var command = new ConvertToPdfACommand { PdfStream = new MemoryStream(FakePdfBytes), PdfALevel = "PDF/A-1b" };
_mockProcessor.Setup(x => x.ConvertToPdfAAsync(It.IsAny<Stream>(), "PDF/A-1b"))
.ThrowsAsync(new NotImplementedException("PDF/A conversion not yet implemented"));
// Act & Assert
var ex = await Assert.ThrowsAsync<NotImplementedException>(
() => _handler.Handle(command, CancellationToken.None));
ex.Message.Should().Contain("not yet implemented");
}
[Fact]
public async Task Handle_ProcessorThrowsBadRequest_PropagatesException()
{
// Arrange
var command = new ConvertToPdfACommand { PdfStream = new MemoryStream(FakePdfBytes), PdfALevel = "PDF/A-2b" };
_mockProcessor.Setup(x => x.ConvertToPdfAAsync(It.IsAny<Stream>(), "PDF/A-2b"))
.ThrowsAsync(new BadRequestException("PDF stream cannot be empty"));
// Act & Assert
var ex = await Assert.ThrowsAsync<BadRequestException>(
() => _handler.Handle(command, CancellationToken.None));
ex.Message.Should().Contain("empty");
}
}
public class ConvertFromPdfAHandlerTests
{
private readonly Mock<IPdfProcessor> _mockProcessor;
private readonly ConvertFromPdfACommandHandler _handler;
private static readonly byte[] FakePdfBytes = "%PDF"u8.ToArray();
public ConvertFromPdfAHandlerTests()
{
_mockProcessor = new Mock<IPdfProcessor>();
_handler = new ConvertFromPdfACommandHandler(_mockProcessor.Object);
}
[Fact]
public async Task Handle_ValidPdfA_ReturnsStandardPdfBytes()
{
// Arrange
var command = new ConvertFromPdfACommand { PdfStream = new MemoryStream(FakePdfBytes) };
var expected = new byte[] { 0x25, 0x50, 0x44, 0x46, 0x0B };
_mockProcessor.Setup(x => x.ConvertFromPdfAAsync(It.IsAny<Stream>())).ReturnsAsync(expected);
// Act
var result = await _handler.Handle(command, CancellationToken.None);
// Assert
result.Should().BeEquivalentTo(expected);
_mockProcessor.Verify(x => x.ConvertFromPdfAAsync(It.IsAny<Stream>()), Times.Once);
}
[Fact]
public async Task Handle_ProcessorThrowsBadRequest_PropagatesException()
{
// Arrange
var command = new ConvertFromPdfACommand { PdfStream = new MemoryStream(FakePdfBytes) };
_mockProcessor.Setup(x => x.ConvertFromPdfAAsync(It.IsAny<Stream>()))
.ThrowsAsync(new BadRequestException("PDF stream must be at position 0"));
// Act & Assert
var ex = await Assert.ThrowsAsync<BadRequestException>(
() => _handler.Handle(command, CancellationToken.None));
ex.Message.Should().Contain("position 0");
}
[Fact]
public async Task Handle_ProcessorThrowsGenericException_PropagatesException()
{
// Arrange
var command = new ConvertFromPdfACommand { PdfStream = new MemoryStream(FakePdfBytes) };
_mockProcessor.Setup(x => x.ConvertFromPdfAAsync(It.IsAny<Stream>()))
.ThrowsAsync(new Exception("Unexpected error"));
// Act & Assert
await Assert.ThrowsAsync<Exception>(() => _handler.Handle(command, CancellationToken.None));
}
}