Browse Source

Added OrderManager unit test and repository updates with eager loading

pull/53/head
Galip Tolga Erdem 5 years ago
parent
commit
fde19634df
  1. 18
      services/ordering/src/EShopOnAbp.OrderingService.EntityFrameworkCore/Buyers/EfCoreBuyerRepository.cs
  2. 21
      services/ordering/src/EShopOnAbp.OrderingService.EntityFrameworkCore/Orders/EfCoreOrderRepository.cs
  3. 37
      services/ordering/test/EShopOnAbp.OrderingService.Domain.Tests/Orders/OrderManager_Tests.cs

18
services/ordering/src/EShopOnAbp.OrderingService.EntityFrameworkCore/Buyers/EfCoreBuyerRepository.cs

@ -1,5 +1,9 @@
using System;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using EShopOnAbp.OrderingService.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore;
using Volo.Abp.Domain.Repositories.EntityFrameworkCore;
using Volo.Abp.EntityFrameworkCore;
@ -11,4 +15,18 @@ public class EfCoreBuyerRepository : EfCoreRepository<OrderingServiceDbContext,
dbContextProvider)
{
}
public override async Task<Buyer> InsertAsync(Buyer entity, bool autoSave = false,
CancellationToken cancellationToken = new CancellationToken())
{
var newEntity = await base.InsertAsync(entity, autoSave, cancellationToken);
await EnsurePropertyLoadedAsync(newEntity, query => query.PaymentType, cancellationToken);
return newEntity;
}
public override async Task<IQueryable<Buyer>> WithDetailsAsync()
{
return (await GetQueryableAsync())
.Include(q => q.PaymentType);
}
}

21
services/ordering/src/EShopOnAbp.OrderingService.EntityFrameworkCore/Orders/EfCoreOrderRepository.cs

@ -1,5 +1,9 @@
using System;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using EShopOnAbp.OrderingService.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore;
using Volo.Abp.Domain.Repositories.EntityFrameworkCore;
using Volo.Abp.EntityFrameworkCore;
@ -7,7 +11,22 @@ namespace EShopOnAbp.OrderingService.Orders;
public class EfCoreOrderRepository : EfCoreRepository<OrderingServiceDbContext, Order, Guid>, IOrderRepository
{
public EfCoreOrderRepository(IDbContextProvider<OrderingServiceDbContext> dbContextProvider) : base(dbContextProvider)
public EfCoreOrderRepository(IDbContextProvider<OrderingServiceDbContext> dbContextProvider) : base(
dbContextProvider)
{
}
public override async Task<Order> InsertAsync(Order entity, bool autoSave = false,
CancellationToken cancellationToken = new CancellationToken())
{
var newEntity = await base.InsertAsync(entity, autoSave, cancellationToken);
await EnsurePropertyLoadedAsync(newEntity, o => o.OrderStatus, cancellationToken);
return newEntity;
}
public override async Task<IQueryable<Order>> WithDetailsAsync()
{
return (await GetQueryableAsync())
.Include(q => q.OrderStatus);
}
}

37
services/ordering/test/EShopOnAbp.OrderingService.Domain.Tests/Orders/OrderManager_Tests.cs

@ -0,0 +1,37 @@
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Shouldly;
using Xunit;
namespace EShopOnAbp.OrderingService.Orders;
public class OrderManagerUnitTests : OrderingServiceDomainTestBase
{
private readonly OrderManager _orderManager;
public OrderManagerUnitTests()
{
_orderManager = GetRequiredService<OrderManager>();
}
[Fact]
public async Task Should_CreateOrderAsync()
{
var orderItems =
new List<(Guid productId, string productName, string productCode, decimal unitPrice, decimal discount,
string pictureUrl, int
units)>();
orderItems.Add((Guid.NewGuid(), "Test product", "Code:001", 15, 0, "", 1));
var createdOrder = await _orderManager.CreateOrderAsync(
1,
"gterdem",
"gterdem@volosoft.com",
orderItems,
"Test Street",
"Test City",
"Test Country",
"Test zipCode");
createdOrder.ShouldNotBeNull();
}
}
Loading…
Cancel
Save