public async Task ListAsync_ReturnsObjects(
            [Frozen] Mock <AWContext> mockContext,
            string userId,
            string userName,
            Core.Entities.Customer customer,
            string shipMethod,
            Core.ValueTypes.Address address,
            Core.Entities.CreditCard creditCard,
            string cardSecurityNumber,
            string cardHolderName
            )
        {
            //Arrange
            creditCard.ExpYear  = short.Parse(DateTime.Today.Year.ToString());
            creditCard.ExpMonth = byte.Parse(DateTime.Today.Month.ToString());

            var salesOrders = new List <Core.Entities.SalesOrder>();
            int orderCount  = 2;

            for (int i = 0; i < orderCount; i++)
            {
                salesOrders.Add(
                    new Core.Entities.SalesOrder(
                        userId,
                        userName,
                        customer,
                        shipMethod,
                        address,
                        address,
                        creditCard,
                        cardSecurityNumber,
                        cardHolderName
                        )
                    );
            }

            var mockSet = salesOrders.AsQueryable().BuildMockDbSet();

            mockContext.Setup(x => x.Set <Core.Entities.SalesOrder>())
            .Returns(mockSet.Object);
            var repository = new EfRepository <Core.Entities.SalesOrder>(mockContext.Object);

            //Act
            var spec = new GetSalesOrdersForCustomerSpecification(salesOrders[0].Customer.CustomerNumber);
            var list = await repository.ListAsync(spec);

            //Assert
            list.Count.Should().Be(orderCount);
        }
示例#2
0
        public async Task Handle_SalesOrderWithStoreCustomer_Exists_ReturnSalesOrder(
            string userId,
            string userName,
            string cardSecurityNumber,
            string cardHolderName,
            Core.Entities.StoreCustomer customer,
            string shipMethod,
            ValueTypes.Address billToAddress,
            ValueTypes.Address shipToAddress,
            Core.Entities.CreditCard creditCard,
            [Frozen] Mock <IRepository <Core.Entities.SalesOrder> > salesOrderRepoMock,
            GetSalesOrderQueryHandler sut,
            GetSalesOrderQuery query
            )
        {
            //Arrange
            creditCard.ExpYear  = short.Parse(DateTime.Today.Year.ToString());
            creditCard.ExpMonth = byte.Parse(DateTime.Today.Month.ToString());

            var salesOrder = new Core.Entities.SalesOrder(
                userId,
                userName,
                customer,
                shipMethod,
                billToAddress,
                shipToAddress,
                creditCard,
                cardSecurityNumber,
                cardHolderName
                );

            salesOrderRepoMock.Setup(x => x.GetBySpecAsync(
                                         It.IsAny <GetFullSalesOrderSpecification>(),
                                         It.IsAny <CancellationToken>()
                                         ))
            .ReturnsAsync(salesOrder);

            //Act
            var result = await sut.Handle(query, CancellationToken.None);

            //Assert
            result.Should().NotBeNull();
            salesOrderRepoMock.Verify(x => x.GetBySpecAsync(
                                          It.IsAny <GetFullSalesOrderSpecification>(),
                                          It.IsAny <CancellationToken>()
                                          ));
            result.SalesOrderNumber.Should().Be(salesOrder.SalesOrderNumber);
        }
        public async Task Handle_CreditCardExists_CreateSalesOrder(
            [Frozen] Mock <ISalesOrderIntegrationEventService> salesOrderIntegrationEventServiceMock,
            [Frozen] Mock <IRepository <Core.Entities.SalesOrder> > salesOrderRepositoryMock,
            [Frozen] Mock <IRepository <Core.Entities.CreditCard> > creditCardRepositoryMock,
            CreateSalesOrderCommandHandler sut,
            CreateSalesOrderCommand command,
            Core.Entities.CreditCard creditCard,
            DateTime expirationDate
            )
        {
            //Arrange
            command.OrderItems.ForEach(_ => _.Discount = 0);

            creditCard.ExpMonth = byte.Parse(expirationDate.Month.ToString());
            creditCard.ExpYear  = short.Parse(expirationDate.Year.ToString());

            creditCardRepositoryMock.Setup(_ => _.GetBySpecAsync(
                                               It.IsAny <GetCreditCardSpecification>(),
                                               It.IsAny <CancellationToken>()
                                               ))
            .ReturnsAsync(creditCard);

            //Act
            var result = await sut.Handle(command, CancellationToken.None);

            //Assert
            result.Should().BeTrue();
            salesOrderIntegrationEventServiceMock.Verify(_ => _.AddAndSaveEventAsync(
                                                             It.IsAny <IntegrationEvent>())
                                                         );

            salesOrderRepositoryMock.Verify(_ => _.AddAsync(
                                                It.IsAny <Core.Entities.SalesOrder>(),
                                                It.IsAny <CancellationToken>())
                                            );
        }