示例#1
0
        public async Task WHEN_Cart_has_no_valid_fulfillmentLocationId_SHOULD_invoke_UpdateShipment()
        {
            //Arrange
            _container.Use(OvertureClientFactory.Create());
            var sut = _container.CreateInstance <FixCartService>();

            //Act
            await sut.FixCartAsync(new FixCartParam
            {
                Cart = new ProcessedCart
                {
                    CultureName = "en-US",
                    Payments    = new List <Payment>
                    {
                        new Payment()
                    },
                    Shipments = new List <Shipment>
                    {
                        new Shipment()
                    }
                }
            });

            //Assert
            _container.Verify <ICartRepository>(r => r.UpdateShipmentAsync(It.IsNotNull <UpdateShipmentParam>()));
        }
示例#2
0
        public void WHEN_Scope_Is_NullOrWhitespace_SHOULD_Throw_ArgumentException(string scope)
        {
            // Arrange
            _container.Use(OvertureClientFactory.Create());
            var repository = _container.CreateInstance <CartRepository>();
            var param      = new UpdateLineItemParam
            {
                ScopeId     = null,
                CultureInfo = TestingExtensions.GetRandomCulture(),
                CustomerId  = GetRandom.Guid(),
                CartName    = GetRandom.String(32),
                LineItemId  = GetRandom.Guid(),
                Quantity    = GetRandom.PositiveInt(),
                GiftMessage = GetRandom.String(32),
                GiftWrap    = GetRandom.Boolean(),
            };

            // Act
            Expression <Func <Task <ProcessedCart> > > expression = () => repository.UpdateLineItemAsync(param);
            var exception = Assert.ThrowsAsync <ArgumentException>(() => expression.Compile().Invoke());

            //Assert
            exception.ParamName.Should().BeEquivalentTo(GetParamsInfo(expression)[0].Name);
            exception.Message.Should().StartWith(GetMessageOfNullWhiteSpace(nameof(param.ScopeId)));
        }
示例#3
0
        public async Task WHEN_Cart_already_has_fullfillmentLocationId_SHOULD_not_invoke_UpdateShipment()
        {
            //Arrange
            _container.Use(OvertureClientFactory.CreateMockWithValue(_dummyCart));
            var sut = _container.CreateInstance <FixCartService>();

            //Act
            var cart = await sut.FixCartAsync(new FixCartParam
            {
                Cart = new ProcessedCart
                {
                    Payments = new List <Payment>
                    {
                        new Payment()
                    },
                    Shipments = new List <Shipment>
                    {
                        new Shipment
                        {
                            FulfillmentLocationId = Guid.NewGuid()
                        }
                    }
                }
            });

            //Assert
            cart.Should().NotBeNull();
            _container.Verify <ICartRepository>(r => r.UpdateShipmentAsync(It.IsNotNull <UpdateShipmentParam>()), Times.Never());
        }
        public void WHEN_Param_Is_NullOrWhitespace_SHOULD_Throw_ArgumentException(string scope, string cultureName,
                                                                                  string cartName, string customerId, string productId, int quantity, string paramName)
        {
            // Arrange
            _container.Use(OvertureClientFactory.Create());
            var repository = _container.CreateInstance <WishListRepository>();
            var param      = new AddLineItemParam
            {
                Scope       = scope,
                CultureInfo =
                    string.IsNullOrWhiteSpace(cultureName) ? null : CultureInfo.GetCultureInfo(cultureName),
                CustomerId = string.IsNullOrWhiteSpace(customerId) ? Guid.Empty : GetRandom.Guid(),
                CartName   = cartName,
                ProductId  = productId,
                VariantId  = GetRandom.String(10),
                Quantity   = quantity
            };

            // Act
            var exception = Assert.ThrowsAsync <ArgumentException>(() => repository.AddLineItemAsync(param));

            //Assert
            exception.ParamName.Should().BeSameAs("param");
            exception.Message.Should().Contain(paramName);
        }
        public void WHEN_Passing_Null_Parameters_SHOULD_Throw_ArgumentNullException()
        {
            //Arrange
            _container.Use(OvertureClientFactory.Create());
            var cartRepository = _container.CreateInstance <WishListRepository>();

            // Act
            Expression <Func <Task <ProcessedCart> > > expression = () => cartRepository.RemoveLineItemAsync(null);
            var exception = Assert.ThrowsAsync <ArgumentNullException>(() => expression.Compile().Invoke());

            //Assert
            exception.ParamName.Should().BeEquivalentTo(GetParamsInfo(expression)[0].Name);
        }
示例#6
0
        public void WHEN_Passing_Null_Parameters_SHOULD_Throw_ArgumentNullException()
        {
            // Arrange
            _container.Use(OvertureClientFactory.Create());
            var repository = _container.CreateInstance <CartRepository>();

            // Act
            var exception = Assert.ThrowsAsync <ArgumentNullException>(() => repository.UpdateLineItemAsync(null));

            //Assert
            exception.ParamName.Should().BeSameAs("param");
            exception.Message.Should().Contain("param");
        }
        public void WHEN_Dependencies_Return_NullValues_SHOULD_Succeed()
        {
            // Arrange
            _container.Use(OvertureClientFactory.CreateWithNullValues());

            // Act
            var result = _repository.RetrieveCountry(new RetrieveCountryParam
            {
                IsoCode     = GetRandom.String(32),
                CultureInfo = TestingExtensions.GetRandomCulture()
            }).Result;

            // Assert
            result.Should().NotBeNull();
        }
        public void WHEN_IsoCode_Is_NullOrWhitespace_SHOULD_Throw_ArgumentException(string isoCode)
        {
            // Arrange
            _container.Use(OvertureClientFactory.Create());
            var param = new RetrieveCountryParam
            {
                IsoCode     = isoCode,
                CultureInfo = TestingExtensions.GetRandomCulture()
            };

            // Act
            var exception = Assert.ThrowsAsync <ArgumentException>(() => _repository.RetrieveCountry(param));

            //Assert
            exception.ParamName.Should().BeSameAs("param");
            exception.Message.Should().Contain("IsoCode");
        }
        public async Task WHEN_Dependencies_Return_Null_Values_SHOULD_Succeed()
        {
            //Arrange
            Container.Use(OvertureClientFactory.CreateWithNullValues());
            var repository = Container.CreateInstance <CartRepository>();

            //Act
            var result = await repository.CompleteCheckoutAsync(new CompleteCheckoutParam
            {
                CartName    = GetRandom.String(10),
                CultureInfo = CultureInfo.CurrentCulture,
                CustomerId  = GetRandom.Guid(),
                Scope       = GetRandom.String(10),
            });

            // Assert
            result.Should().NotBeNull();
        }
        public async Task WHEN_Dependencies_Return_NullValues_SHOULD_Succeed()
        {
            //Arrange
            _container.Use(OvertureClientFactory.CreateWithNullValues());
            var cartRepository = _container.CreateInstance <CartRepository>();

            // Act
            var result = await cartRepository.RemoveLineItemAsync(new RemoveLineItemParam
            {
                Scope       = GetRandom.String(32),
                CultureInfo = TestingExtensions.GetRandomCulture(),
                CustomerId  = GetRandom.Guid(),
                CartName    = GetRandom.String(32),
                LineItemId  = GetRandom.Guid()
            });

            // Assert
            result.Should().NotBeNull();
        }
        public void WHEN_Dependencies_Return_NullValues_SHOULD_Succeed()
        {
            //Arrange
            _container.Use(OvertureClientFactory.CreateWithNullValues());
            var cartRepository = _container.CreateInstance <CartRepository>();

            // Act
            var result = cartRepository.GetCartsByCustomerIdAsync(new GetCartsByCustomerIdParam
            {
                Scope              = GetRandom.String(32),
                CultureInfo        = TestingExtensions.GetRandomCulture(),
                CustomerId         = GetRandom.Guid(),
                IncludeChildScopes = GetRandom.Boolean()
            }).Result;

            // Assert
            result.Should().NotBeNull();
            result.Should().NotBeEmpty();
            result.Should().HaveCount(1);
        }
        public void WHEN_CultureInfo_Is_Null_SHOULD_Throw_ArgumentException()
        {
            //Arrange
            _container.Use(OvertureClientFactory.Create());
            var cartRepository = _container.CreateInstance <CartRepository>();
            var param          = new GetCartsByCustomerIdParam
            {
                Scope              = GetRandom.String(32),
                CultureInfo        = null,
                CustomerId         = GetRandom.Guid(),
                IncludeChildScopes = GetRandom.Boolean()
            };

            // Act
            var exception = Assert.ThrowsAsync <ArgumentException>(() => cartRepository.GetCartsByCustomerIdAsync(param));

            //Assert
            exception.ParamName.Should().BeSameAs("param");
            exception.Message.Should().Contain("param.CultureInfo");
        }
        public void WHEN_Scope_Is_NullOrWhitespace_SHOULD_Throw_ArgumentException(string scope)
        {
            //Arrange
            _container.Use(OvertureClientFactory.Create());
            var cartRepository = _container.CreateInstance <CartRepository>();
            var param          = new RemoveLineItemParam
            {
                Scope       = scope,
                CultureInfo = TestingExtensions.GetRandomCulture(),
                CustomerId  = GetRandom.Guid(),
                CartName    = GetRandom.String(32),
                LineItemId  = GetRandom.Guid()
            };

            // Act
            var exception = Assert.ThrowsAsync <ArgumentException>(() => cartRepository.RemoveLineItemAsync(param));

            //Assert
            exception.ParamName.Should().BeSameAs("param");
            exception.Message.Should().Contain("param.Scope");
        }
        public void WHEN_VariantId_Is_NullOrWhitespace_SHOULD_Succeed(string variantId)
        {
            //Arrange
            _container.Use(OvertureClientFactory.Create());
            var repository = _container.CreateInstance <WishListRepository>();

            // Act
            var result = repository.AddLineItemAsync(new AddLineItemParam
            {
                Scope       = GetRandom.String(32),
                CultureInfo = TestingExtensions.GetRandomCulture(),
                CustomerId  = GetRandom.Guid(),
                CartName    = GetRandom.String(32),
                ProductId   = GetRandom.String(32),
                VariantId   = variantId,
                Quantity    = 1000
            }).Result;

            // Assert
            result.Should().NotBeNull("Missing CustomerID or WishList are expected to be created automatically");
        }
示例#15
0
        public void WHEN_Passing_Valid_Parameters_SHOULD_Succeed()
        {
            //Arrange
            _container.Use(OvertureClientFactory.CreateMockWithValue(_dummyCart));
            var repository = _container.CreateInstance <CartRepository>();

            // Act
            var result = repository.AddLineItemAsync(new AddLineItemParam
            {
                Scope       = GetRandom.String(32),
                CultureInfo = TestingExtensions.GetRandomCulture(),
                CustomerId  = GetRandom.Guid(),
                CartName    = GetRandom.String(32),
                ProductId   = GetRandom.String(32),
                VariantId   = GetRandom.String(32),
                Quantity    = GetRandom.Int(1, 10000)
            }).Result;

            // Assert
            result.Should().NotBeNull("Missing CustomerID or Cart are expected to be created automatically");
        }
        public void WHEN_CustomerId_Is_Empty_SHOULD_Throw_ArgumentException()
        {
            // Arrange
            _container.Use(OvertureClientFactory.Create());
            var repository = _container.CreateInstance <WishListRepository>();
            var param      = new GetCartParam
            {
                Scope       = "Canada",
                CultureInfo = CultureInfo.GetCultureInfo("en-CA"),
                CustomerId  = Guid.Empty,
                CartName    = "WishList"
            };

            // Act
            Expression <Func <Task <ProcessedCart> > > expression = () => repository.GetWishListAsync(param);
            var exception = Assert.ThrowsAsync <ArgumentException>(() => expression.Compile().Invoke());

            //Assert
            exception.ParamName.Should().BeEquivalentTo(GetParamsInfo(expression)[0].Name);
            exception.Message.Should().StartWith(GetMessageOfEmpty(nameof(param.CustomerId)));
        }
        public void WHEN_CultureInfo_Is_Null_SHOULD_Throw_ArgumentException()
        {
            //Arrange
            _container.Use(OvertureClientFactory.Create());
            var cartRepository = _container.CreateInstance <CartRepository>();
            var param          = new GetCartsByCustomerIdParam
            {
                Scope              = GetRandom.String(32),
                CultureInfo        = null,
                CustomerId         = GetRandom.Guid(),
                IncludeChildScopes = GetRandom.Boolean()
            };

            // Act
            Expression <Func <Task <List <CartSummary> > > > expression = () => cartRepository.GetCartsByCustomerIdAsync(param);
            var exception = Assert.ThrowsAsync <ArgumentException>(() => expression.Compile().Invoke());

            //Assert
            exception.ParamName.Should().BeEquivalentTo(GetParamsInfo(expression)[0].Name);
            exception.Message.Should().StartWith(GetMessageOfNull(nameof(param.CultureInfo)));
        }
示例#18
0
        public void WHEN_Dependencies_Return_NullValues_SHOULD_Succeed()
        {
            //Arrange
            _container.Use(OvertureClientFactory.CreateWithNullValues());
            var repository = _container.CreateInstance <CartRepository>();

            // Act
            var result = repository.UpdateLineItemAsync(new UpdateLineItemParam
            {
                ScopeId     = GetRandom.String(32),
                CultureInfo = TestingExtensions.GetRandomCulture(),
                CustomerId  = GetRandom.Guid(),
                CartName    = GetRandom.String(32),
                LineItemId  = GetRandom.Guid(),
                Quantity    = 1000,
                GiftMessage = GetRandom.String(32),
                GiftWrap    = GetRandom.Boolean(),
            }).Result;

            // Assert
            result.Should().NotBeNull();
        }
        public void WHEN_CultureInfo_Is_Null_SHOULD_Throw_ArgumentException()
        {
            // Arrange
            _container.Use(OvertureClientFactory.Create());
            var repository = _container.CreateInstance <WishListRepository>();
            var param      = new RemoveLineItemParam
            {
                Scope       = "Canada",
                CultureInfo = null,
                CustomerId  = Guid.NewGuid(),
                CartName    = "WishList",
                LineItemId  = Guid.NewGuid()
            };

            // Act
            Expression <Func <Task <ProcessedCart> > > expression = () => repository.RemoveLineItemAsync(param);
            var exception = Assert.ThrowsAsync <ArgumentException>(() => expression.Compile().Invoke());

            //Assert
            exception.ParamName.Should().BeEquivalentTo(GetParamsInfo(expression)[0].Name);
            exception.Message.Should().StartWith(GetMessageOfNullWhiteSpace(nameof(param.CultureInfo)));
        }
        public void WHEN_Id_Is_Empty_SHOULD_Throw_ArgumentException()
        {
            //Arrange
            _container.Use(OvertureClientFactory.Create());
            var cartRepository = _container.CreateInstance <CartRepository>();
            var param          = new RemoveLineItemParam
            {
                Scope       = GetRandom.String(32),
                CultureInfo = TestingExtensions.GetRandomCulture(),
                CustomerId  = GetRandom.Guid(),
                CartName    = GetRandom.String(32),
                LineItemId  = Guid.Empty
            };

            // Act
            Expression <Func <Task <ProcessedCart> > > expression = () => cartRepository.RemoveLineItemAsync(param);
            var exception = Assert.ThrowsAsync <ArgumentException>(() => expression.Compile().Invoke());

            //Assert
            exception.ParamName.Should().BeEquivalentTo(GetParamsInfo(expression)[0].Name);
            exception.Message.Should().StartWith(GetMessageOfEmpty(nameof(param.LineItemId)));
        }
示例#21
0
        public void WHEN_Quantity_Is_Not_Positive_SHOULD_Throw_ArgumentException(int quantity)
        {
            // Arrange
            _container.Use(OvertureClientFactory.Create());
            var repository = _container.CreateInstance <CartRepository>();
            var param      = new AddLineItemParam
            {
                Scope       = GetRandom.String(32),
                CultureInfo = TestingExtensions.GetRandomCulture(),
                CustomerId  = GetRandom.Guid(),
                CartName    = GetRandom.String(32),
                ProductId   = GetRandom.String(32),
                VariantId   = GetRandom.String(32),
                Quantity    = quantity
            };

            // Act
            var exception = Assert.ThrowsAsync <ArgumentException>(() => repository.AddLineItemAsync(param));

            //Assert
            exception.ParamName.Should().BeSameAs("param");
            exception.Message.Should().Contain("param.Quantity");
        }
示例#22
0
        public void WHEN_CultureInfo_Is_Null_SHOULD_Throw_ArgumentException()
        {
            // Arrange
            _container.Use(OvertureClientFactory.Create());
            var repository = _container.CreateInstance <CartRepository>();
            var param      = new AddLineItemParam
            {
                Scope       = GetRandom.String(32),
                CultureInfo = null,
                CustomerId  = GetRandom.Guid(),
                CartName    = GetRandom.String(32),
                ProductId   = GetRandom.String(32),
                VariantId   = GetRandom.String(32),
                Quantity    = GetRandom.Int(1, 100)
            };

            // Act
            var exception = Assert.ThrowsAsync <ArgumentException>(() => repository.AddLineItemAsync(param));

            //Assert
            exception.ParamName.Should().BeSameAs("param");
            exception.Message.Should().Contain("param.CultureInfo");
        }
示例#23
0
        public void WHEN_Scope_Is_NullOrWhitespace_SHOULD_Throw_ArgumentException(string scope)
        {
            // Arrange
            _container.Use(OvertureClientFactory.Create());
            var repository = _container.CreateInstance <CartRepository>();
            var param      = new UpdateLineItemParam
            {
                ScopeId     = null,
                CultureInfo = TestingExtensions.GetRandomCulture(),
                CustomerId  = GetRandom.Guid(),
                CartName    = GetRandom.String(32),
                LineItemId  = GetRandom.Guid(),
                Quantity    = GetRandom.PositiveInt(),
                GiftMessage = GetRandom.String(32),
                GiftWrap    = GetRandom.Boolean(),
            };

            // Act
            var exception = Assert.ThrowsAsync <ArgumentException>(() => repository.UpdateLineItemAsync(param));

            //Assert
            exception.ParamName.Should().BeSameAs("param");
            exception.Message.Should().Contain("param.ScopeId");
        }
示例#24
0
        public void WHEN_Quantity_Is_Not_Positive_SHOULD_Throw_ArgumentOutOfRangeException(int quantity)
        {
            // Arrange
            _container.Use(OvertureClientFactory.Create());
            var repository = _container.CreateInstance <CartRepository>();
            var param      = new AddLineItemParam
            {
                Scope       = GetRandom.String(32),
                CultureInfo = TestingExtensions.GetRandomCulture(),
                CustomerId  = GetRandom.Guid(),
                CartName    = GetRandom.String(32),
                ProductId   = GetRandom.String(32),
                VariantId   = GetRandom.String(32),
                Quantity    = quantity
            };

            // Act
            Expression <Func <Task <ProcessedCart> > > expression = () => repository.AddLineItemAsync(param);
            var exception = Assert.ThrowsAsync <ArgumentOutOfRangeException>(() => expression.Compile().Invoke());

            //Assert
            exception.ParamName.Should().BeEquivalentTo(GetParamsInfo(expression)[0].Name);
            exception.Message.Should().StartWith(GetMessageOfZeroNegative(nameof(param.Quantity)));
        }
示例#25
0
        public void WHEN_CultureInfo_Is_Null_SHOULD_Throw_ArgumentException()
        {
            // Arrange
            _container.Use(OvertureClientFactory.Create());
            var repository = _container.CreateInstance <CartRepository>();
            var param      = new AddLineItemParam
            {
                Scope       = GetRandom.String(32),
                CultureInfo = null,
                CustomerId  = GetRandom.Guid(),
                CartName    = GetRandom.String(32),
                ProductId   = GetRandom.String(32),
                VariantId   = GetRandom.String(32),
                Quantity    = GetRandom.Int(1, 100)
            };

            // Act
            Expression <Func <Task <ProcessedCart> > > expression = () => repository.AddLineItemAsync(param);
            var exception = Assert.ThrowsAsync <ArgumentException>(() => expression.Compile().Invoke());

            //Assert
            exception.ParamName.Should().BeEquivalentTo(GetParamsInfo(expression)[0].Name);
            exception.Message.Should().StartWith(GetMessageOfNull(nameof(param.CultureInfo)));
        }
        public void WHEN_ProductId_Is_NullOrWhitespace_SHOULD_Throw_ArgumentException(string productId)
        {
            // Arrange
            _container.Use(OvertureClientFactory.Create());
            var repository = _container.CreateInstance <WishListRepository>();
            var param      = new AddLineItemParam
            {
                Scope       = "Canada",
                CultureInfo = CultureInfo.GetCultureInfo("en-CA"),
                CustomerId  = Guid.NewGuid(),
                CartName    = "WishList",
                ProductId   = productId,
                VariantId   = "VariantId",
                Quantity    = 1
            };

            // Act
            Expression <Func <Task <ProcessedCart> > > expression = () => repository.AddLineItemAsync(param);
            var exception = Assert.ThrowsAsync <ArgumentException>(() => expression.Compile().Invoke());

            //Assert
            exception.ParamName.Should().BeEquivalentTo(GetParamsInfo(expression)[0].Name);
            exception.Message.Should().StartWith(GetMessageOfNullWhiteSpace(nameof(param.ProductId)));
        }