@ -10,21 +10,22 @@ using System.Threading.Tasks;
namespace UnitTest.Ordering.Application
namespace UnitTest.Ordering.Application
{
{
using MediatR ;
using System.Collections ;
using System.Collections ;
using System.Collections.Generic ;
using System.Collections.Generic ;
using Xunit ;
using Xunit ;
public class NewOrderRequestHandlerTest
public class NewOrderRequestHandlerTest
{
{
private readonly Mock < IBuyerRepository < Buyer > > _buyerRepositoryMock ;
private readonly Mock < IOrderRepository < Order > > _orderRepositoryMock ;
private readonly Mock < IOrderRepository < Order > > _orderRepositoryMock ;
private readonly Mock < IIdentityService > _identityServiceMock ;
private readonly Mock < IIdentityService > _identityServiceMock ;
private readonly Mock < IMediator > _mediator ;
public NewOrderRequestHandlerTest ( )
public NewOrderRequestHandlerTest ( )
{
{
_buyerRepositoryMock = new Mock < IBuyerRepository < Buyer > > ( ) ;
_orderRepositoryMock = new Mock < IOrderRepository < Order > > ( ) ;
_orderRepositoryMock = new Mock < IOrderRepository < Order > > ( ) ;
_identityServiceMock = new Mock < IIdentityService > ( ) ;
_identityServiceMock = new Mock < IIdentityService > ( ) ;
_mediator = new Mock < IMediator > ( ) ;
}
}
[Fact]
[Fact]
@ -37,21 +38,15 @@ namespace UnitTest.Ordering.Application
{ [ "cardExpiration" ] = DateTime . Now . AddYears ( 1 ) } ) ;
{ [ "cardExpiration" ] = DateTime . Now . AddYears ( 1 ) } ) ;
// Arrange
// Arrange
_buy erRepositoryMock . Setup ( buyerRepo = > buyerRepo . FindAsync ( buyerId ) )
. Returns ( Task . FromResult < Buyer > ( FakeBuy er( ) ) ) ;
_ord erRepositoryMock . Setup ( orderRepo = > orderRepo . GetAsync ( It . IsAny < int > ( ) ) )
. Returns ( Task . FromResult < Order > ( FakeOrd er( ) ) ) ;
_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 ) ) )
_orderRepositoryMock . Setup ( buyerRepo = > buyerRepo . UnitOfWork . SaveChangesAsync ( default ( CancellationToken ) ) )
. Returns ( Task . FromResult ( 1 ) ) ;
. Returns ( Task . FromResult ( 1 ) ) ;
_identityServiceMock . Setup ( svc = > svc . GetUserIdentity ( ) ) . Returns ( buyerId ) ;
_identityServiceMock . Setup ( svc = > svc . GetUserIdentity ( ) ) . Returns ( buyerId ) ;
//Act
//Act
var handler = new CreateOrderCommandHandler ( _buyerRepositoryMock . Object , _orderRepositoryMock . Object , _identityServiceMock . Object ) ;
var handler = new CreateOrderCommandHandler ( _mediator . Object , _orderRepositoryMock . Object , _identityServiceMock . Object ) ;
var result = await handler . Handle ( fakeOrderCmd ) ;
var result = await handler . Handle ( fakeOrderCmd ) ;
//Assert
//Assert
@ -66,19 +61,16 @@ namespace UnitTest.Ordering.Application
var fakeOrderCmd = FakeOrderRequestWithBuyer ( new Dictionary < string , object >
var fakeOrderCmd = FakeOrderRequestWithBuyer ( new Dictionary < string , object >
{ [ "cardExpiration" ] = DateTime . Now . AddYears ( 1 ) } ) ;
{ [ "cardExpiration" ] = DateTime . Now . AddYears ( 1 ) } ) ;
_buy erRepositoryMock . Setup ( buyerRepo = > buyerRepo . FindAsync ( buyerId ) )
. Returns ( Task . FromResult < Buyer > ( FakeBuy er( ) ) ) ;
_ord erRepositoryMock . Setup ( orderRepo = > orderRepo . GetAsync ( It . IsAny < int > ( ) ) )
. Returns ( Task . FromResult < Order > ( FakeOrd er( ) ) ) ;
_buy erRepositoryMock . Setup ( buyerRepo = > buyerRepo . UnitOfWork . SaveChangesAsync ( default ( CancellationToken ) ) )
_ord erRepositoryMock . Setup ( buyerRepo = > buyerRepo . UnitOfWork . SaveChangesAsync ( default ( CancellationToken ) ) )
. Returns ( Task . FromResult ( 1 ) ) ;
. Returns ( Task . FromResult ( 1 ) ) ;
_orderRepositoryMock . Setup ( or = > or . Add ( FakeOrder ( ) ) ) . Returns ( FakeOrder ( ) ) ;
_orderRepositoryMock . Setup ( or = > or . UnitOfWork . SaveChangesAsync ( default ( CancellationToken ) ) )
. Returns ( Task . FromResult ( 0 ) ) ;
_identityServiceMock . Setup ( svc = > svc . GetUserIdentity ( ) ) . Returns ( buyerId ) ;
_identityServiceMock . Setup ( svc = > svc . GetUserIdentity ( ) ) . Returns ( buyerId ) ;
//Act
//Act
var handler = new CreateOrderCommandHandler ( _buyerRepositoryMock . Object , _orderRepositoryMock . Object , _identityServiceMock . Object ) ;
var handler = new CreateOrderCommandHandler ( _mediator . Object , _orderRepositoryMock . Object , _identityServiceMock . Object ) ;
var result = await handler . Handle ( fakeOrderCmd ) ;
var result = await handler . Handle ( fakeOrderCmd ) ;
//Assert
//Assert
@ -95,21 +87,15 @@ namespace UnitTest.Ordering.Application
{ [ "cardExpiration" ] = DateTime . Now . AddYears ( - 1 ) } ) ;
{ [ "cardExpiration" ] = DateTime . Now . AddYears ( - 1 ) } ) ;
// Arrange
// Arrange
_buy erRepositoryMock . Setup ( buyerRepo = > buyerRepo . FindAsync ( buyerId ) )
. Returns ( Task . FromResult < Buyer > ( FakeBuy er( ) ) ) ;
_ord erRepositoryMock . Setup ( orderRepo = > orderRepo . GetAsync ( It . IsAny < int > ( ) ) )
. Returns ( Task . FromResult < Order > ( FakeOrd er( ) ) ) ;
_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 ) ) )
_orderRepositoryMock . Setup ( buyerRepo = > buyerRepo . UnitOfWork . SaveChangesAsync ( default ( CancellationToken ) ) )
. Returns ( Task . FromResult ( 1 ) ) ;
. Returns ( Task . FromResult ( 1 ) ) ;
_identityServiceMock . Setup ( svc = > svc . GetUserIdentity ( ) ) . Returns ( buyerId ) ;
_identityServiceMock . Setup ( svc = > svc . GetUserIdentity ( ) ) . Returns ( buyerId ) ;
//Act
//Act
var handler = new CreateOrderCommandHandler ( _buyerRepositoryMock . Object , _orderRepositoryMock . Object , _identityServiceMock . Object ) ;
var handler = new CreateOrderCommandHandler ( _mediator . Object , _orderRepositoryMock . Object , _identityServiceMock . Object ) ;
//Assert
//Assert
await Assert . ThrowsAsync < ArgumentException > ( async ( ) = > await handler . Handle ( fakeOrderCmd ) ) ;
await Assert . ThrowsAsync < ArgumentException > ( async ( ) = > await handler . Handle ( fakeOrderCmd ) ) ;
@ -128,21 +114,15 @@ namespace UnitTest.Ordering.Application
} ) ;
} ) ;
// Arrange
// Arrange
_buyerRepositoryMock . Setup ( buyerRepo = > buyerRepo . FindAsync ( buyerId ) )
. Returns ( Task . FromResult < Buyer > ( FakeBuyer ( ) ) ) ;
_buyerRepositoryMock . Setup ( buyerRepo = > buyerRepo . UnitOfWork . SaveChangesAsync ( default ( CancellationToken ) ) )
. Returns ( Task . FromResult ( 1 ) ) ;
_orderRepositoryMock . Setup ( or = > or . Add ( FakeOrder ( ) ) )
. Returns ( FakeOrder ( ) ) ;
_orderRepositoryMock . Setup ( orderRepo = > orderRepo . GetAsync ( It . IsAny < int > ( ) ) )
. Returns ( Task . FromResult < Order > ( FakeOrder ( ) ) ) ;
_orderRepositoryMock . Setup ( or = > or . UnitOfWork . SaveChangesAsync ( default ( CancellationToken ) ) )
_orderRepositoryMock . Setup ( buyerRepo = > buyerRepo . UnitOfWork . SaveChangesAsync ( default ( CancellationToken ) ) )
. Returns ( Task . FromResult ( 1 ) ) ;
. Returns ( Task . FromResult ( 1 ) ) ;
_identityServiceMock . Setup ( svc = > svc . GetUserIdentity ( ) ) . Returns ( buyerId ) ;
_identityServiceMock . Setup ( svc = > svc . GetUserIdentity ( ) ) . Returns ( buyerId ) ;
//Act
//Act
var handler = new CreateOrderCommandHandler ( _buyerRepositoryMock . Object , _orderRepositoryMock . Object , _identityServiceMock . Object ) ;
var handler = new CreateOrderCommandHandler ( _mediator . Object , _orderRepositoryMock . Object , _identityServiceMock . Object ) ;
//Assert
//Assert
await Assert . ThrowsAsync < ArgumentException > ( async ( ) = > await handler . Handle ( fakeOrderCmd ) ) ;
await Assert . ThrowsAsync < ArgumentException > ( async ( ) = > await handler . Handle ( fakeOrderCmd ) ) ;
@ -161,21 +141,15 @@ namespace UnitTest.Ordering.Application
} ) ;
} ) ;
// Arrange
// Arrange
_buy erRepositoryMock . Setup ( buyerRepo = > buyerRepo . FindAsync ( buyerId ) )
. Returns ( Task . FromResult < Buyer > ( FakeBuy er( ) ) ) ;
_ord erRepositoryMock . Setup ( orderRepo = > orderRepo . GetAsync ( It . IsAny < int > ( ) ) )
. Returns ( Task . FromResult < Order > ( FakeOrd er( ) ) ) ;
_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 ) ) )
_orderRepositoryMock . Setup ( buyerRepo = > buyerRepo . UnitOfWork . SaveChangesAsync ( default ( CancellationToken ) ) )
. Returns ( Task . FromResult ( 1 ) ) ;
. Returns ( Task . FromResult ( 1 ) ) ;
_identityServiceMock . Setup ( svc = > svc . GetUserIdentity ( ) ) . Returns ( buyerId ) ;
_identityServiceMock . Setup ( svc = > svc . GetUserIdentity ( ) ) . Returns ( buyerId ) ;
//Act
//Act
var handler = new CreateOrderCommandHandler ( _buyerRepositoryMock . Object , _orderRepositoryMock . Object , _identityServiceMock . Object ) ;
var handler = new CreateOrderCommandHandler ( _mediator . Object , _orderRepositoryMock . Object , _identityServiceMock . Object ) ;
//Assert
//Assert
await Assert . ThrowsAsync < ArgumentException > ( async ( ) = > await handler . Handle ( fakeOrderCmd ) ) ;
await Assert . ThrowsAsync < ArgumentException > ( async ( ) = > await handler . Handle ( fakeOrderCmd ) ) ;
@ -185,7 +159,7 @@ namespace UnitTest.Ordering.Application
public async Task Handle_throws_exception_when_no_cardNumber ( )
public async Task Handle_throws_exception_when_no_cardNumber ( )
{
{
var buy erId = "1234" ;
var ord erId = "1234" ;
var fakeOrderCmd = FakeOrderRequestWithBuyer ( new Dictionary < string , object >
var fakeOrderCmd = FakeOrderRequestWithBuyer ( new Dictionary < string , object >
{
{
@ -194,21 +168,15 @@ namespace UnitTest.Ordering.Application
} ) ;
} ) ;
// Arrange
// Arrange
_buy erRepositoryMock . Setup ( buyerRepo = > buyerRepo . FindAsync ( buyerId ) )
. Returns ( Task . FromResult < Buyer > ( FakeBuy er( ) ) ) ;
_ord erRepositoryMock . Setup ( orderRepo = > orderRepo . GetAsync ( It . IsAny < int > ( ) ) )
. Returns ( Task . FromResult < Order > ( FakeOrd er( ) ) ) ;
_buy erRepositoryMock . Setup ( buyerRepo = > buy erRepo. UnitOfWork . SaveChangesAsync ( default ( CancellationToken ) ) )
_ord erRepositoryMock . Setup ( orderRepo = > ord erRepo. UnitOfWork . SaveChangesAsync ( default ( CancellationToken ) ) )
. Returns ( Task . FromResult ( 1 ) ) ;
. Returns ( Task . FromResult ( 1 ) ) ;
_orderRepositoryMock . Setup ( or = > or . Add ( FakeOrder ( ) ) )
. Returns ( FakeOrder ( ) ) ;
_orderRepositoryMock . Setup ( or = > or . UnitOfWork . SaveChangesAsync ( default ( CancellationToken ) ) )
. Returns ( Task . FromResult ( 1 ) ) ;
_identityServiceMock . Setup ( svc = > svc . GetUserIdentity ( ) ) . Returns ( buyerId ) ;
_identityServiceMock . Setup ( svc = > svc . GetUserIdentity ( ) ) . Returns ( orderId ) ;
//Act
//Act
var handler = new CreateOrderCommandHandler ( _buyerRepositoryMock . Object , _orderRepositoryMock . Object , _identityServiceMock . Object ) ;
var handler = new CreateOrderCommandHandler ( _mediator . Object , _orderRepositoryMock . Object , _identityServiceMock . Object ) ;
//Assert
//Assert
await Assert . ThrowsAsync < ArgumentException > ( async ( ) = > await handler . Handle ( fakeOrderCmd ) ) ;
await Assert . ThrowsAsync < ArgumentException > ( async ( ) = > await handler . Handle ( fakeOrderCmd ) ) ;
@ -228,7 +196,7 @@ namespace UnitTest.Ordering.Application
private Order FakeOrder ( )
private Order FakeOrder ( )
{
{
return new Order ( 1 , 1 , new Address ( "street" , "city" , "state" , "country" , "zipcode" ) ) ;
return new Order ( new Address ( "street" , "city" , "state" , "country" , "zipcode" ) , 1 , "12" , "111" , "fakeName" , DateTime . Now . AddYears ( 1 ) ) ;
}
}
private CreateOrderCommand FakeOrderRequestWithBuyer ( Dictionary < string , object > args = null )
private CreateOrderCommand FakeOrderRequestWithBuyer ( Dictionary < string , object > args = null )
@ -243,7 +211,9 @@ namespace UnitTest.Ordering.Application
cardExpiration : args ! = null & & args . ContainsKey ( "cardExpiration" ) ? ( DateTime ) args [ "cardExpiration" ] : DateTime . MinValue ,
cardExpiration : args ! = null & & args . ContainsKey ( "cardExpiration" ) ? ( DateTime ) args [ "cardExpiration" ] : DateTime . MinValue ,
cardSecurityNumber : args ! = null & & args . ContainsKey ( "cardSecurityNumber" ) ? ( string ) args [ "cardSecurityNumber" ] : "123" ,
cardSecurityNumber : args ! = null & & args . ContainsKey ( "cardSecurityNumber" ) ? ( string ) args [ "cardSecurityNumber" ] : "123" ,
cardHolderName : args ! = null & & args . ContainsKey ( "cardHolderName" ) ? ( string ) args [ "cardHolderName" ] : "XXX" ,
cardHolderName : args ! = null & & args . ContainsKey ( "cardHolderName" ) ? ( string ) args [ "cardHolderName" ] : "XXX" ,
cardTypeId : args ! = null & & args . ContainsKey ( "cardTypeId" ) ? ( int ) args [ "cardTypeId" ] : 0 ) ;
cardTypeId : args ! = null & & args . ContainsKey ( "cardTypeId" ) ? ( int ) args [ "cardTypeId" ] : 0 ,
paymentId : args ! = null & & args . ContainsKey ( "paymentId" ) ? ( int ) args [ "paymentId" ] : 0 ,
buyerId : args ! = null & & args . ContainsKey ( "buyerId" ) ? ( int ) args [ "buyerId" ] : 0 ) ;
}
}
}
}
}
}