Files
components/LiteCharms.Features.MidrandBooks.Tests/CustomerServiceFeatureTests.cs
T
Khwezi Mngoma a98adea8f3
continuous-integration/drone/pr Build is passing
Implemented LiteCharms Security TokenService
2026-06-12 16:09:51 +02:00

202 lines
6.4 KiB
C#

using LiteCharms.Features.MidrandBooks.Customers;
using LiteCharms.Features.MidrandBooks.Customers.Models;
using LiteCharms.Features.Tests.Common;
namespace LiteCharms.Features.MidrandBooks.Tests;
public class CustomerServiceFeatureTests(Fixture fixture) : IClassFixture<Fixture>
{
private readonly CustomerService customerService = fixture.Services.GetRequiredService<CustomerService>();
[IntegrationFact]
public async Task CreateCustomerAsync_ShouldReturn_ResultWithCustomerId()
{
var request = new CreateCustomer
{
Company = "Book Lovers",
Email = "hank@booklovers.com",
Phone = "555 1245 8577",
Website = "https://www.booklovers.com"
};
var result = await customerService.CreateCustomerAsync(request, fixture.CancellationToken);
Assert.True(result.IsSuccess);
Assert.True(result.Value > 0);
}
[IntegrationFact]
public async Task CreateCustomerContactAsync_ShouldReturn_ResultWithCustomerContactId()
{
var request = new CreateCustomerContact
{
Name = "Sipho",
LastName = "Madlanga",
Phone = "0710857365",
Email = "sipho@madlanga.africa",
Type = ContactTypes.Business
};
var result = await customerService.CreateCustomerContactAsync(1, request, fixture.CancellationToken);
Assert.True(result.IsSuccess);
Assert.True(result.Value > 0);
}
[IntegrationFact]
public async Task CreateCustomerAddressAsync_ShouldReturn_ResultWithCustomerAddressId()
{
var request = new CreateCustomerAddress
{
Name = "Business",
BuildingType = AddressBuildingTypes.MixedUse,
Type = AddressType.Shipping,
Street = "123 Building 4, XYZ Suburb, Some Region",
City = "Johannesburg",
State = "Gauteng",
Country = "South Africa",
IsPrimary = true,
Enabled = true,
PostalCode = "12345"
};
var result = await customerService.CreateCustomerAddressAsync(1, request, fixture.CancellationToken);
Assert.True(result.IsSuccess);
Assert.True(result.Value > 0);
}
[IntegrationFact]
public async Task UpdateCustomerAsync_ShouldReturn_ResultWithSuccess()
{
var request = new UpdateCustomer
{
Company = "Book Lovers",
Email = "hank@booklovers.com",
Phone = "555 1245 8578",
Website = "https://www.booklovers.com"
};
var result = await customerService.UpdateCustomerAsync(1, request, fixture.CancellationToken);
Assert.True(result.IsSuccess);
}
[IntegrationFact]
public async Task UpdateCustomerContactAsync_ShouldReturn_ResultWithSuccess()
{
var request = new UpdateCustomerContact
{
Name = "Sipho",
LastName = "Madlanga",
Phone = "0710857366",
Email = "sipho@madlanga.africa",
Type = ContactTypes.Business
};
var result = await customerService.UpdateCustomerContactAsync(1, request, fixture.CancellationToken);
Assert.True(result.IsSuccess);
}
[IntegrationFact]
public async Task UpdateCustomerAddressAsync_ShouldReturn_ResultWithSuccess()
{
var request = new UpdateCustomerAddress
{
Name = "Business",
BuildingType = AddressBuildingTypes.MixedUse,
Type = AddressType.Shipping,
Street = "123 Building 4, XYZ Suburb, Some Region",
City = "Johannesburg",
State = "Gauteng",
Country = "South Africa",
IsPrimary = true,
Enabled = true,
PostalCode = "12346"
};
var result = await customerService.UpdateCustomerAddressAsync(1, request, fixture.CancellationToken);
Assert.True(result.IsSuccess);
}
[IntegrationFact]
public async Task UpdateCustomerStatusAsync_ShouldReturn_ResultWithSuccess()
{
var result = await customerService.UpdateCustomerStatusAsync(1, true, fixture.CancellationToken);
Assert.True(result.IsSuccess);
}
[IntegrationFact]
public async Task UpdateCustomerContactStatusAsync_ShouldReturn_ResultWithSuccess()
{
var result = await customerService.UpdateCustomerContactStatusAsync(1, true, true, fixture.CancellationToken);
Assert.True(result.IsSuccess);
}
[IntegrationFact]
public async Task UpdateCustomerAddressStatusAsync_ShouldReturn_ResultWithSuccess()
{
var result = await customerService.UpdateCustomerAddressStatusAsync(1, true, true, fixture.CancellationToken);
Assert.True(result.IsSuccess);
}
[IntegrationFact]
public async Task GetCustomersAsync_ShouldReturn_ResultWithCustomerList()
{
var result = await customerService.GetCustomersAsync(fixture.CancellationToken);
Assert.True(result.IsSuccess);
Assert.NotEmpty(result.Value);
}
[IntegrationFact]
public async Task GetCustomerContactsAsync_ShouldReturn_ResultWithCustomerContactList()
{
var result = await customerService.GetCustomerContactsAsync(1, fixture.CancellationToken);
Assert.True(result.IsSuccess);
Assert.NotEmpty(result.Value);
}
[IntegrationFact]
public async Task GetCustomerAddressesAsync_ShouldReturn_ResultWithCustomerAddressList()
{
var result = await customerService.GetCustomerAddressesAsync(1, fixture.CancellationToken);
Assert.True(result.IsSuccess);
Assert.NotEmpty(result.Value);
}
[IntegrationFact]
public async Task GetCustomerAsync_ShouldReturn_ResultWithCustomer()
{
var result = await customerService.GetCustomerAsync(1, fixture.CancellationToken);
Assert.True(result.IsSuccess);
Assert.NotNull(result.Value);
}
[IntegrationFact]
public async Task GetCustomerContactAsync_ShouldReturn_ResultWithCustomerContact()
{
var result = await customerService.GetCustomerContactsAsync(1, fixture.CancellationToken);
Assert.True(result.IsSuccess);
Assert.NotNull(result.Value);
}
[IntegrationFact]
public async Task GetCustomerAddressAsync_ShouldReturn_ResultWithCustomerAddress()
{
var result = await customerService.GetCustomerAddressAsync(1, fixture.CancellationToken);
Assert.True(result.IsSuccess);
Assert.NotNull(result.Value);
}
}