Ejemplo n.º 1
0
        public async Task ProcessesOnlyMembershipTypes()
        {
            CustomerAddress addr     = new CustomerAddress("name", "street1", null, "zip", "city", "country");
            Customer        customer = new Customer("first", "last");

            customer.Addresses.Add(addr);

            Product book  = new Product("book", new BookProductType());
            Product video = new Product("video", new VideoProductType());

            PhysicalProductTypeProcessor proc = new PhysicalProductTypeProcessor();

            PurchaseOrder     validorder1 = new PurchaseOrder(1, customer, addr);
            PurchaseOrderLine validLine1  = new PurchaseOrderLine(book);

            validorder1.OrderLines.Add(validLine1);

            var ex1 = await Record.ExceptionAsync(async() => {
                await proc.ProcessAsync(validorder1, validLine1);
            });

            Assert.Null(ex1);

            PurchaseOrder     validorder2 = new PurchaseOrder(1, customer, addr);
            PurchaseOrderLine validLine2  = new PurchaseOrderLine(book);

            validorder2.OrderLines.Add(validLine2);

            var ex2 = await Record.ExceptionAsync(async() => {
                await proc.ProcessAsync(validorder1, validLine2);
            });

            Assert.Null(ex2);
        }
Ejemplo n.º 2
0
        public void FailsOnProcessingOtherProductTpes()
        {
            PhysicalProductTypeProcessor proc = new PhysicalProductTypeProcessor();

            Product bookMembership = new Product("book membership", new BookMembershipProductType());

            Assert.False(proc.CanProcess(bookMembership));
        }
Ejemplo n.º 3
0
        public async Task CantProcessInvalidOrder()
        {
            PhysicalProductTypeProcessor proc = new PhysicalProductTypeProcessor();

            var ex = await Record.ExceptionAsync(async() => {
                await proc.ProcessAsync(new PurchaseOrder(), new PurchaseOrderLine());
            });

            Assert.NotNull(ex);
            Assert.IsType <ValidationErrorException>(ex);
        }
Ejemplo n.º 4
0
        public async Task CantProcessNullOrderLine()
        {
            PhysicalProductTypeProcessor proc = new PhysicalProductTypeProcessor();

            var ex = await Record.ExceptionAsync(async() => {
                await proc.ProcessAsync(new PurchaseOrder(), null);
            });

            Assert.NotNull(ex);
            Assert.IsType <ArgumentNullException>(ex);
        }
Ejemplo n.º 5
0
        public void CanProcessIPhysicalProductType()
        {
            PhysicalProductTypeProcessor proc = new PhysicalProductTypeProcessor();

            Product book = new Product("socme", new BookProductType());

            Assert.True(proc.CanProcess(book));

            Product video = new Product("asf", new VideoProductType());

            Assert.True(proc.CanProcess(video));
        }
Ejemplo n.º 6
0
        public async Task ProcessingFailsWhenNotSupportedTypePassed()
        {
            CustomerAddress addr     = new CustomerAddress("name", "street1", null, "zip", "city", "country");
            Customer        customer = new Customer("first", "last");

            customer.Addresses.Add(addr);

            Product bookMembership = new Product("book membership", new BookMembershipProductType());

            PhysicalProductTypeProcessor proc = new PhysicalProductTypeProcessor();

            PurchaseOrder     invalidOrder = new PurchaseOrder(1, customer, addr);
            PurchaseOrderLine invalidLine  = new PurchaseOrderLine(bookMembership);

            invalidOrder.OrderLines.Add(invalidLine);

            var ex3 = await Record.ExceptionAsync(async() => {
                await proc.ProcessAsync(invalidOrder, invalidLine);
            });

            Assert.NotNull(ex3);
            Assert.IsType <NotSupportedException>(ex3);
        }
Ejemplo n.º 7
0
        public async Task ShipmentSlipGetsGeneratedForPhysicalProductType()
        {
            CustomerAddress addr     = new CustomerAddress("name", "street1", null, "zip", "city", "country");
            Customer        customer = new Customer("first", "last");

            customer.Addresses.Add(addr);

            Product book = new Product("book", new BookProductType());
            PhysicalProductTypeProcessor proc = new PhysicalProductTypeProcessor();

            PurchaseOrder     validorder = new PurchaseOrder(1, customer, addr);
            PurchaseOrderLine validLine  = new PurchaseOrderLine(book);

            validorder.OrderLines.Add(validLine);

            Assert.Null(validorder.ShippingSlip);

            var ex2 = await Record.ExceptionAsync(async() => {
                await proc.ProcessAsync(validorder, validLine);
            });

            Assert.Null(ex2);
            Assert.NotNull(validorder.ShippingSlip);
        }