예제 #1
0
        public void Parse_HappyPath_WellFormatted_VerifyParsedResult()
        {
            // Arrange
            const string message = "Qty 3 A\r\nQty 1 C\rQty 2 B\nQty 3 D\r\n\r\nQty 14 G\r\n";

            var expectedOrderLines = new Dictionary <OrderReferenceLabel, OrderQuantity>
            {
                { OrderReferenceLabel.Create("A"), OrderQuantity.Create(3) },
                { OrderReferenceLabel.Create("C"), OrderQuantity.Create(1) },
                { OrderReferenceLabel.Create("B"), OrderQuantity.Create(2) },
                { OrderReferenceLabel.Create("D"), OrderQuantity.Create(3) },
                { OrderReferenceLabel.Create("G"), OrderQuantity.Create(14) },
            };
            // Act
            var actual = Sut.Parse(PhoneNumber, SmsMessage.Create(message));

            // Assert
            actual.Should().BeOfType <PlaceOrderCommand>();
            ((PlaceOrderCommand)actual).PhoneNumber.Should().Be(PhoneNumber);

            var orderDetails = ((PlaceOrderCommand)actual).OrderDetails;

            orderDetails.Should().HaveCount(expectedOrderLines.Count);
            orderDetails.Should().BeEquivalentTo(expectedOrderLines);
        }
 public Domain.CoffeeRoastingEvent Map(CoffeeRoastingEvent dbEvent)
 {
     return(new(
                Id <Domain.CoffeeRoastingEvent> .From(dbEvent.Id),
                dbEvent.Contacts.Select(c => c.Id).Select(id => Id <Contact> .From(id)),
                dbEvent.IsActive,
                LocalDate.FromDateTime(dbEvent.Date),
                LocalDate.FromDateTime(dbEvent.OrderByDate),
                Name <Domain.CoffeeRoastingEvent> .Create(dbEvent.Name),
                dbEvent.CoffeeRoastingEventCoffees.ToDictionary(
                    ec => OrderReferenceLabel.Create(ec.Label),
                    ec => new Coffee(
                        Id <Coffee> .From(ec.Coffee.Id),
                        Name <Coffee> .Create(ec.Coffee.Name),
                        Description.Create(ec.Coffee.Description),
                        UsdPrice.Create(ec.Coffee.Price),
                        Ounces.Create(ec.Coffee.OzWeight))),
                dbEvent.Orders.Select(order => new Domain.Order(
                                          Id <Domain.Order> .From(order.Id),
                                          Id <Contact> .From(order.ContactId),
                                          OffsetDateTime.FromDateTimeOffset(order.CreatedTimestamp),
                                          order.OrderCoffees.ToDictionary(
                                              oc => Id <Coffee> .From(oc.CoffeeId),
                                              oc => OrderQuantity.Create(oc.Quantity)),
                                          new Domain.Invoice(
                                              Id <Domain.Invoice> .From(order.Invoice.Id),
                                              UsdInvoiceAmount.Create(order.Invoice.Amount),
                                              order.Invoice.IsPaid,
                                              order.Invoice.PaymentMethod),
                                          order.IsConfirmed))));
 }
예제 #3
0
        public void Customize(IFixture fixture)
        {
            var faker = new Faker();

            fixture.Register(() => OrderQuantity.Create(faker.Random.Number(1, 15)));
        }