103 lines
3.9 KiB
C#
Raw Normal View History

using Microsoft.eShopOnContainers.Services.Ordering.API.Application.Commands;
2017-02-27 17:52:14 +01:00
using Microsoft.eShopOnContainers.Services.Ordering.API.Infrastructure.Services;
using Microsoft.eShopOnContainers.Services.Ordering.Domain.AggregatesModel.BuyerAggregate;
using Microsoft.eShopOnContainers.Services.Ordering.Domain.AggregatesModel.OrderAggregate;
using Moq;
using System;
using System.Threading;
using System.Threading.Tasks;
using Xunit;
namespace UnitTest.Ordering.Application
2016-12-22 13:20:12 +01:00
{
public class NewOrderRequestHandlerTest
{
private readonly Mock<IBuyerRepository<Buyer>> _buyerRepositoryMock;
private readonly Mock<IOrderRepository<Order>> _orderRepositoryMock;
2017-02-27 17:52:14 +01:00
private readonly Mock<IIdentityService> _identityServiceMock;
2016-12-22 13:20:12 +01:00
public NewOrderRequestHandlerTest()
{
_buyerRepositoryMock = new Mock<IBuyerRepository<Buyer>>();
_orderRepositoryMock = new Mock<IOrderRepository<Order>>();
2017-02-27 17:52:14 +01:00
_identityServiceMock = new Mock<IIdentityService>();
2016-12-22 13:20:12 +01:00
}
[Fact]
public async Task Handle_returns_true_when_order_is_persisted_succesfully()
2016-12-22 13:20:12 +01:00
{
2017-02-27 17:52:14 +01:00
var buyerId = "1234";
2016-12-22 13:20:12 +01:00
// Arrange
2017-02-27 17:52:14 +01:00
_buyerRepositoryMock.Setup(buyerRepo => buyerRepo.FindAsync(buyerId))
2016-12-22 13:20:12 +01:00
.Returns(Task.FromResult<Buyer>(FakeBuyer()));
2016-12-22 13:20:12 +01:00
_buyerRepositoryMock.Setup(buyerRepo => buyerRepo.UnitOfWork.SaveChangesAsync(default(CancellationToken)))
.Returns(Task.FromResult(1));
_orderRepositoryMock.Setup(or => or.Add(FakeOrder()))
.Returns(FakeOrder());
_orderRepositoryMock.Setup(or => or.UnitOfWork.SaveChangesAsync(default(CancellationToken)))
.Returns(Task.FromResult(1));
2016-12-22 13:20:12 +01:00
2017-02-27 17:52:14 +01:00
_identityServiceMock.Setup(svc => svc.GetUserIdentity()).Returns(buyerId);
2016-12-22 13:20:12 +01:00
//Act
2017-02-27 17:52:14 +01:00
var handler = new CreateOrderCommandHandler(_buyerRepositoryMock.Object, _orderRepositoryMock.Object, _identityServiceMock.Object);
2016-12-22 13:20:12 +01:00
var result = await handler.Handle(FakeOrderRequestWithBuyer());
//Assert
Assert.True(result);
}
[Fact]
public async Task Handle_return_false_if_order_is_not_persisted()
2016-12-22 13:20:12 +01:00
{
2017-02-27 17:52:14 +01:00
var buyerId = "1234";
_buyerRepositoryMock.Setup(buyerRepo => buyerRepo.FindAsync(buyerId))
2016-12-22 13:20:12 +01:00
.Returns(Task.FromResult<Buyer>(FakeBuyer()));
2016-12-22 13:20:12 +01:00
_buyerRepositoryMock.Setup(buyerRepo => buyerRepo.UnitOfWork.SaveChangesAsync(default(CancellationToken)))
.Returns(Task.FromResult(1));
_orderRepositoryMock.Setup(or => or.Add(FakeOrder())).Returns(FakeOrder());
_orderRepositoryMock.Setup(or => or.UnitOfWork.SaveChangesAsync(default(CancellationToken)))
.Returns(Task.FromResult(0));
2017-02-27 17:52:14 +01:00
_identityServiceMock.Setup(svc => svc.GetUserIdentity()).Returns(buyerId);
2016-12-22 13:20:12 +01:00
//Act
2017-02-27 17:52:14 +01:00
var handler = new CreateOrderCommandHandler(_buyerRepositoryMock.Object, _orderRepositoryMock.Object, _identityServiceMock.Object);
2016-12-22 13:20:12 +01:00
var result = await handler.Handle(FakeOrderRequestWithBuyer());
//Assert
Assert.False(result);
}
private Buyer FakeBuyer()
{
return new Buyer(Guid.NewGuid().ToString());
}
private Order FakeOrder()
{
return new Order(1, 1, new Address("street", "city", "state", "country", "zipcode"));
2016-12-22 13:20:12 +01:00
}
private CreateOrderCommand FakeOrderRequestWithBuyer()
2016-12-22 13:20:12 +01:00
{
2017-02-27 17:52:14 +01:00
return new CreateOrderCommand(
city: null,
street: null,
state: null,
country: null,
zipcode: null,
cardNumber: "1234",
cardExpiration: DateTime.Now.AddYears(1),
cardSecurityNumber: "123",
cardHolderName: "XXX",
cardTypeId: 0);
2016-12-22 13:20:12 +01:00
}
}
}