Beispiel #1
0
        public async Task ShouldChangePrice(
            TestableContext context,
            BasketItemIndex handler
            )
        {
            context.Processor.Plan <eShop.Basket.Basket.Services.BasketsUsingProduct, Guid[]>(new eShop.Basket.Basket.Services.BasketsUsingProduct {
                ProductId = context.Id()
            }).Response(new Guid[] { context.Id() });
            context.App.Plan <Models.BasketItemIndex>(BasketItemIndex.ItemIdGenerator(context.Id(), context.Id())).Exists(new Models.BasketItemIndex
            {
                ProductPrice = 1
            });

            var @event = context.Create <Catalog.Product.Events.PriceUpdated>(x =>
            {
                x.ProductId = context.Id();
                x.Price     = 2;
            });

            await handler.Handle(@event, context).ConfigureAwait(false);

            context.App.Check <Models.BasketItemIndex>(BasketItemIndex.ItemIdGenerator(context.Id(), context.Id())).Updated(x =>
                                                                                                                            x.ProductPrice == 2
                                                                                                                            );
        }
Beispiel #2
0
        public async Task ShouldCreateBasketIndex(
            TestableContext context,
            BasketIndex handler
            )
        {
            context.App.Plan <Identity.User.Models.User>("test").Exists(new Identity.User.Models.User {
                GivenName = "test"
            });

            var @event = context.Create <Events.Initiated>(x =>
            {
                x.BasketId = context.Id();
                x.UserName = "******";
            });

            await handler.Handle(@event, context).ConfigureAwait(false);

            context.App.Check <Models.BasketIndex>(context.Id()).Added();
            context.App.Check <Models.BasketIndex>(context.Id()).Added(x => x.Customer == "test");
            context.App.Check <Models.BasketIndex>(context.Id()).Added(new Models.BasketIndex
            {
                Id       = context.Id(),
                Customer = "test"
            });
        }
Beispiel #3
0
        public async Task ShouldUpdateQuantity(
            TestableContext context,
            BasketIndex handler
            )
        {
            context.App.Plan <Entities.Item.Models.BasketItemIndex>(Entities.Item.BasketItemIndex.ItemIdGenerator(context.Id(), context.Id())).Exists(new Entities.Item.Models.BasketItemIndex
            {
                Quantity     = 1,
                ProductPrice = 100
            });
            context.App.Plan <Models.BasketIndex>(context.Id()).Exists(new Models.BasketIndex
            {
                TotalItems    = 1,
                TotalQuantity = 1,
                SubTotal      = 100
            });

            var @event = context.Create <Entities.Item.Events.QuantityUpdated>(x =>
            {
                x.BasketId  = context.Id();
                x.ProductId = context.Id();
                x.Quantity  = 2;
            });

            await handler.Handle(@event, context).ConfigureAwait(false);

            context.App.Check <Models.BasketIndex>(context.Id()).Updated(x =>
                                                                         x.TotalItems == 1 &&
                                                                         x.TotalQuantity == 2 &&
                                                                         x.SubTotal == 200
                                                                         );
        }
Beispiel #4
0
        public async Task ShouldAddItem(
            TestableContext context,
            BasketIndex handler
            )
        {
            context.App.Plan <Catalog.Product.Models.CatalogProductIndex>(context.Id()).Exists(new Catalog.Product.Models.CatalogProductIndex
            {
                Price = 100
            });
            context.App.Plan <Models.BasketIndex>(context.Id()).Exists();

            var @event = context.Create <Entities.Item.Events.ItemAdded>(x =>
            {
                x.BasketId  = context.Id();
                x.ProductId = context.Id();
            });

            await handler.Handle(@event, context).ConfigureAwait(false);

            context.App.Check <Models.BasketIndex>(context.Id()).Updated(x =>
                                                                         x.TotalItems == 1 &&
                                                                         x.TotalQuantity == 1 &&
                                                                         x.SubTotal == 100
                                                                         );
        }
Beispiel #5
0
        public async Task ShouldUpdatePrice(
            TestableContext context,
            BasketIndex handler
            )
        {
            context.Processor.Plan <Services.BasketsUsingProduct, Guid[]>(new Services.BasketsUsingProduct {
                ProductId = context.Id()
            }).Response(new Guid[] { context.Id() });
            context.App.Plan <Models.BasketIndex>(context.Id()).Exists(new Models.BasketIndex
            {
                SubTotal = 100,
            });
            context.App.Plan <Entities.Item.Models.BasketItemIndex>(Entities.Item.BasketItemIndex.ItemIdGenerator(context.Id(), context.Id())).Exists(new Entities.Item.Models.BasketItemIndex
            {
                Quantity     = 1,
                ProductPrice = 100
            });

            var @event = context.Create <Catalog.Product.Events.PriceUpdated>(x =>
            {
                x.ProductId = context.Id();
                x.Price     = 1;
            });

            await handler.Handle(@event, context).ConfigureAwait(false);

            context.App.Check <Models.BasketIndex>(context.Id()).Updated(x => x.SubTotal == 1);
        }
Beispiel #6
0
        public async Task ShouldAddItem(
            TestableContext context,
            BasketItemIndex handler
            )
        {
            context.App.Plan <Catalog.Product.Models.CatalogProductIndex>(context.Id()).Exists(new Catalog.Product.Models.CatalogProductIndex
            {
                Id                 = context.Id(),
                Name               = "test",
                Description        = "test",
                PictureContents    = "test",
                PictureContentType = "test",
                Price              = 100
            });

            var @event = context.Create <Entities.Item.Events.ItemAdded>(x =>
            {
                x.BasketId  = context.Id();
                x.ProductId = context.Id();
            });

            await handler.Handle(@event, context).ConfigureAwait(false);

            context.App.Check <Models.BasketItemIndex>(BasketItemIndex.ItemIdGenerator(context.Id(), context.Id())).Added(x =>
                                                                                                                          x.ProductPrice == 100 &&
                                                                                                                          x.ProductName == "test" &&
                                                                                                                          x.ProductDescription == "test"
                                                                                                                          );
        }
Beispiel #7
0
        public async Task should_send_two_echos(
            TestableContext context,
            Handler handler
            )
        {
            context.Extensions.Set("CommandDestination", "domain");

            var @event = context.Create <SaidHello>(x => { });

            await handler.Handle(@event, context).ConfigureAwait(false);

            Assert.Equal(2, context.SentMessages.Select(x => x.Message).OfType <Echo>().Count());
        }
Beispiel #8
0
        public async Task ShouldCreateBasketIndexWithoutUser(
            TestableContext context,
            BasketIndex handler
            )
        {
            var @event = context.Create <Events.Initiated>(x =>
            {
                x.BasketId = context.Id();
            });

            await handler.Handle(@event, context).ConfigureAwait(false);

            context.App.Check <Models.BasketIndex>(context.Id()).Added(x => x.Customer == null);
        }
Beispiel #9
0
        public async Task ShouldDestoyBasketIndex(
            TestableContext context,
            BasketIndex handler
            )
        {
            context.App.Plan <Models.BasketIndex>(context.Id()).Exists();
            var @event = context.Create <Events.Destroyed>(x =>
            {
                x.BasketId = context.Id();
            });

            await handler.Handle(@event, context).ConfigureAwait(false);

            context.App.Check <Models.BasketIndex>(context.Id()).Deleted();
        }
Beispiel #10
0
        public async Task ShouldRemoveItem(
            TestableContext context,
            BasketItemIndex handler
            )
        {
            context.App.Plan <Models.BasketItemIndex>(BasketItemIndex.ItemIdGenerator(context.Id(), context.Id())).Exists();

            var @event = context.Create <Entities.Item.Events.ItemRemoved>(x =>
            {
                x.BasketId  = context.Id();
                x.ProductId = context.Id();
            });

            await handler.Handle(@event, context).ConfigureAwait(false);

            context.App.Check <Models.BasketItemIndex>(BasketItemIndex.ItemIdGenerator(context.Id(), context.Id())).Deleted();
        }
Beispiel #11
0
        public async Task ShouldChangeQuantity(
            TestableContext context,
            BasketItemIndex handler
            )
        {
            context.App.Plan <Models.BasketItemIndex>(BasketItemIndex.ItemIdGenerator(context.Id(), context.Id())).Exists(new Models.BasketItemIndex
            {
                Quantity = 1
            });

            var @event = context.Create <Entities.Item.Events.QuantityUpdated>(x =>
            {
                x.BasketId  = context.Id();
                x.ProductId = context.Id();
                x.Quantity  = 2;
            });

            await handler.Handle(@event, context).ConfigureAwait(false);

            context.App.Check <Models.BasketItemIndex>(BasketItemIndex.ItemIdGenerator(context.Id(), context.Id())).Updated(x =>
                                                                                                                            x.Quantity == 2
                                                                                                                            );
        }