コード例 #1
0
        public async Task UpdatesCustomerOrderStatusToPaidAfterTheReceivingOfOrderPaidNotification()
        {
            //Arrange
            var customerRepository       = new CustomerRepository(_dbContext);
            var suitAlterationRepository = new SuitAlterationRepository(_dbContext);
            var customer = CreateNewCustomer();
            await customerRepository.AddAsync(customer);

            customer.PlaceOrder(5, 5, 5, 5);
            await _unitOfWork.CommitAsync(CancellationToken.None);

            //Pre-assert
            var order = customer.SuitAlterations.Single();

            order.Status.Should().Be(SuitAlterationStatus.Created);

            //Act
            var markOrderAsPaidCommandHandler = new MarkOrderAsPaidCommandHandler(suitAlterationRepository);
            await markOrderAsPaidCommandHandler.Handle(new MarkOrderAsPaidCommand(order.Id), CancellationToken.None);

            await _unitOfWork.CommitAsync(CancellationToken.None);

            //Assert
            SuitAlteration paidOrder = await suitAlterationRepository.GetByIdAsync(order.Id);

            order.DomainEvents.Should().ContainEquivalentOf(new OrderPaidDomainEvent(order.Id));
            paidOrder.Status.Should().Be(SuitAlterationStatus.Paid);
            order.DomainEvents.Count.Should().Be(2);
        }
コード例 #2
0
        public async Task <Unit> Handle(MarkOrderAsPaidCommand request, CancellationToken cancellationToken)
        {
            SuitAlteration suitAlteration = await _suitAlterationRepository.GetByIdAsync(request.SuitAlterationId);

            suitAlteration.MarkOrderAsPaid();

            return(Unit.Value);
        }
コード例 #3
0
        public void PlaceOrder(int leftSleeveLength, int rightSleeveLength, int leftTrouserLength, int rightTrouserLength)
        {
            var order = SuitAlteration.CreateNew(leftSleeveLength, rightSleeveLength, leftTrouserLength, rightTrouserLength);

            _suitAlterations.Add(order);
        }