202 lines
6.4 KiB
C#
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);
|
|
}
|
|
}
|