Implemented order service tests
This commit is contained in:
@@ -114,54 +114,83 @@ public class OrderServiceFeatureTests(Fixture fixture) : IClassFixture<Fixture>
|
||||
[IntegrationFact]
|
||||
public async Task AddShippingToOrderAsync_ShouldReturn_ResultWithSuccess()
|
||||
{
|
||||
var request = new CreateShipping(1, 2);
|
||||
|
||||
var result = await orderService.AddShippingToOrderAsync(1, request, fixture.CancellationToken);
|
||||
|
||||
Assert.True(result.IsSuccess);
|
||||
Assert.True(result.Value > 0);
|
||||
}
|
||||
|
||||
[IntegrationFact]
|
||||
public async Task UpdateShippingStatusAsync_ShouldReturn_ResultWithSuccess()
|
||||
{
|
||||
var result = await orderService.UpdateShippingStatusAsync(1, ShippingStatuses.Shipped, fixture.CancellationToken);
|
||||
|
||||
Assert.True(result.IsSuccess);
|
||||
}
|
||||
|
||||
[IntegrationFact]
|
||||
public async Task GetShippingByOrderIdAsync_ShouldReturn_ResultWithShipping()
|
||||
{
|
||||
var result = await orderService.GetShippingByOrderIdAsync(1, fixture.CancellationToken);
|
||||
|
||||
Assert.True(result.IsSuccess);
|
||||
Assert.NotNull(result.Value);
|
||||
}
|
||||
|
||||
[IntegrationFact]
|
||||
public async Task RemoveShippingFromOrderAsync_ShouldReturn_ResultWithSuccess()
|
||||
{
|
||||
var result = await orderService.RemoveShippingFromOrderAsync(1, 1, fixture.CancellationToken);
|
||||
|
||||
Assert.True(result.IsSuccess);
|
||||
}
|
||||
|
||||
[IntegrationFact]
|
||||
public async Task UpdateShippingTrackingNumberAsync_ShouldReturn_ResultWithSuccess()
|
||||
{
|
||||
var result = await orderService.UpdateShippingTrackingNumberAsync(1, 2, "NA0009969397");
|
||||
|
||||
Assert.True(result.IsSuccess);
|
||||
}
|
||||
|
||||
[IntegrationFact]
|
||||
public async Task CreateShippingProviderAsync_ShouldReturn_ResultWithSuccess()
|
||||
public async Task CreateShippingProviderAsync_ShouldReturn_ResultWithShippingProviderId()
|
||||
{
|
||||
var request = new CreateShippingProvider(ShippingProviderTypes.FastWay, "FastWay Couriers", 50, "https://www.fastway.co.za/our-services/track-your-parcel");
|
||||
|
||||
var result = await orderService.CreateShippingProviderAsync(request, fixture.CancellationToken);
|
||||
|
||||
Assert.True(result.IsSuccess);
|
||||
Assert.True(result.Value > 0);
|
||||
}
|
||||
|
||||
[IntegrationFact]
|
||||
public async Task GetShippingProvidersAsync_ShouldReturn_ResultWithShippingProviderList()
|
||||
{
|
||||
var result = await orderService.GetShippingProvidersAsync(true, fixture.CancellationToken);
|
||||
|
||||
Assert.True(result.IsSuccess);
|
||||
Assert.NotEmpty(result.Value);
|
||||
}
|
||||
|
||||
[IntegrationFact]
|
||||
public async Task GetShippingProviderAsync_ShouldReturn_ResultWithShippingProvider()
|
||||
{
|
||||
var result = await orderService.GetShippingProviderAsync(2, fixture.CancellationToken);
|
||||
|
||||
Assert.True(result.IsSuccess);
|
||||
Assert.NotNull(result.Value);
|
||||
}
|
||||
|
||||
[IntegrationFact]
|
||||
public async Task UpdateShippingProviderAsync_ShouldReturn_ResultWithSuccess()
|
||||
{
|
||||
var request = new UpdateShippingProvider(2,true, "FastWay Couriers", 50, "https://www.fastway.co.za/our-services/track-your-parcel");
|
||||
|
||||
var result = await orderService.UpdateShippingProviderAsync(request, fixture.CancellationToken);
|
||||
|
||||
Assert.True(result.IsSuccess);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,7 +17,8 @@ public static class Mappers
|
||||
Name = entity.Name,
|
||||
Type = entity.Type,
|
||||
Price = entity.Price,
|
||||
Enabled = entity.Enabled
|
||||
Enabled = entity.Enabled,
|
||||
TrackingUrl = entity.TrackingUrl,
|
||||
};
|
||||
|
||||
public static Shipping ToModel(this Orders.Entities.Shipping entity) => new()
|
||||
|
||||
@@ -4,7 +4,7 @@ public sealed record CreateOrder(decimal TotalPrice, string? Notes);
|
||||
|
||||
public sealed record CreateOrderItem(long AuthorBookId, long ProductPriceId, int Quantity);
|
||||
|
||||
public sealed record CreateShipping(long OrderId, long AddressId, long ShippingProviderId, string? TrackingNumber);
|
||||
public sealed record CreateShipping(long AddressId, long ShippingProviderId, string? TrackingNumber = null);
|
||||
|
||||
public sealed record CreateShippingProvider(ShippingProviderTypes Type, string Name, decimal Price, string TrackingUrl);
|
||||
|
||||
|
||||
@@ -249,7 +249,7 @@ public sealed class OrderService(IDbContextFactory<MidrandBooksDbContext> contex
|
||||
}
|
||||
}
|
||||
|
||||
public async ValueTask<Result> AddShippingToOrderAsync(long orderId, CreateShipping request, CancellationToken cancellationToken = default)
|
||||
public async ValueTask<Result<long>> AddShippingToOrderAsync(long orderId, CreateShipping request, CancellationToken cancellationToken = default)
|
||||
{
|
||||
try
|
||||
{
|
||||
@@ -371,7 +371,7 @@ public sealed class OrderService(IDbContextFactory<MidrandBooksDbContext> contex
|
||||
}
|
||||
}
|
||||
|
||||
public async ValueTask<Result> CreateShippingProviderAsync(CreateShippingProvider request, CancellationToken cancellationToken = default)
|
||||
public async ValueTask<Result<long>> CreateShippingProviderAsync(CreateShippingProvider request, CancellationToken cancellationToken = default)
|
||||
{
|
||||
try
|
||||
{
|
||||
@@ -382,6 +382,7 @@ public sealed class OrderService(IDbContextFactory<MidrandBooksDbContext> contex
|
||||
|
||||
var shippingProvider = context.ShippingProviders.Add(new Entities.ShippingProvider
|
||||
{
|
||||
CreatedAt = DateTime.UtcNow,
|
||||
Name = request.Name,
|
||||
Type = request.Type,
|
||||
Price = request.Price,
|
||||
@@ -389,7 +390,7 @@ public sealed class OrderService(IDbContextFactory<MidrandBooksDbContext> contex
|
||||
});
|
||||
|
||||
return await context.SaveChangesAsync(cancellationToken) > 0
|
||||
? Result.Ok()
|
||||
? Result.Ok(shippingProvider.Entity.Id)
|
||||
: Result.Fail("Failed to create shipping provider.");
|
||||
}
|
||||
catch (Exception ex)
|
||||
|
||||
Reference in New Issue
Block a user