Files
accounting-system/backend/tests/InvoiceMaster.UnitTests/Domain/InvoiceTests.cs
Invoice Master 05ea67144f feat: initial project setup
- Add .NET 8 backend with Clean Architecture
- Add React + Vite + TypeScript frontend
- Implement authentication with JWT
- Implement Azure Blob Storage client
- Implement OCR integration
- Implement supplier matching service
- Implement voucher generation
- Implement Fortnox provider
- Add unit and integration tests
- Add Docker Compose configuration
2026-02-04 20:14:34 +01:00

98 lines
2.9 KiB
C#

using InvoiceMaster.Core.Entities;
using Xunit;
using FluentAssertions;
namespace InvoiceMaster.UnitTests.Domain;
public class InvoiceTests
{
[Fact]
public void Create_ShouldInitializeInvoiceWithCorrectValues()
{
var connectionId = Guid.NewGuid();
var invoice = Invoice.Create(
connectionId,
"fortnox",
"test.pdf",
"/path/to/file",
1024,
"hash123");
invoice.ConnectionId.Should().Be(connectionId);
invoice.Provider.Should().Be("fortnox");
invoice.OriginalFilename.Should().Be("test.pdf");
invoice.StoragePath.Should().Be("/path/to/file");
invoice.FileSize.Should().Be(1024);
invoice.FileHash.Should().Be("hash123");
invoice.Status.Should().Be(InvoiceStatus.Uploading);
}
[Fact]
public void SetExtractionData_ShouldUpdateExtractionFields()
{
var invoice = CreateTestInvoice();
var extractionData = "{\"test\": \"data\"}";
invoice.SetExtractionData(
extractionData,
0.95m,
"Test Supplier",
"556677-8899",
"INV-001",
new DateTime(2024, 1, 15),
new DateTime(2024, 2, 15),
1250.00m,
250.00m,
25,
"123456789",
"123-4567",
null,
"SEK");
invoice.ExtractionData.Should().Be(extractionData);
invoice.ExtractionConfidence.Should().Be(0.95m);
invoice.ExtractedSupplierName.Should().Be("Test Supplier");
invoice.ExtractedSupplierOrgNumber.Should().Be("556677-8899");
invoice.ExtractedInvoiceNumber.Should().Be("INV-001");
invoice.ExtractedAmountTotal.Should().Be(1250.00m);
invoice.ExtractedAmountVat.Should().Be(250.00m);
invoice.ExtractedVatRate.Should().Be(25);
invoice.ExtractedOcrNumber.Should().Be("123456789");
invoice.ExtractedBankgiro.Should().Be("123-4567");
invoice.ExtractedCurrency.Should().Be("SEK");
invoice.Status.Should().Be(InvoiceStatus.Preview);
}
[Fact]
public void SetStatus_Imported_ShouldSetProcessedAt()
{
var invoice = CreateTestInvoice();
invoice.SetStatus(InvoiceStatus.Imported);
invoice.Status.Should().Be(InvoiceStatus.Imported);
invoice.ProcessedAt.Should().NotBeNull();
}
[Fact]
public void SetError_ShouldSetErrorFieldsAndStatus()
{
var invoice = CreateTestInvoice();
invoice.SetError("INVALID_FILE", "File format not supported");
invoice.ErrorCode.Should().Be("INVALID_FILE");
invoice.ErrorMessage.Should().Be("File format not supported");
invoice.Status.Should().Be(InvoiceStatus.Failed);
}
private static Invoice CreateTestInvoice()
{
return Invoice.Create(
Guid.NewGuid(),
"fortnox",
"test.pdf",
"/path/to/file");
}
}