public async Task ValidateShipment_RuleSetStrict_PriceError() { //Arrange var cartService = new Moq.Mock <ICartService>(); cartService.Setup(x => x.GetAvailableShippingMethodsAsync(It.IsAny <ShoppingCart>())).Returns(Task.FromResult(ShippingMethods)); var cart = GetValidCart(); var shipment = Faker.PickRandom(cart.Shipments); shipment.Price = new Money(shipment.Price.Amount + 1m, Usd); cart.Shipments.Add(shipment); //Act var validator = new CartShipmentValidator(cart, cartService.Object); var result = await validator.ValidateAsync(shipment, ruleSet : "strict"); //Assertion Assert.False(result.IsValid); Assert.Single(result.Errors); Assert.Collection(result.Errors, x => { Assert.Equal(nameof(shipment.Price), x.PropertyName); }); Assert.Single(shipment.ValidationErrors); Assert.Collection(shipment.ValidationErrors, x => { Assert.Equal(nameof(PriceError), x.ErrorCode); }); }
public async Task ValidateShipment_RuleSetDefault_PriceError() { // Arrange var shipment = new CartModule.Core.Model.Shipment { ShipmentMethodCode = "shippingMethodCode", ShipmentMethodOption = ":)", }; shipment.Price = _shippingRate.Rate + 1; // Act var validator = new CartShipmentValidator(); var result = await validator.ValidateAsync(new ShipmentValidationContext { Shipment = shipment, AvailShippingRates = _context.AvailShippingRates }); // Assert result.IsValid.Should().BeFalse(); result.Errors.Should().NotBeEmpty(); result.Errors.Should().HaveCount(1); result.Errors.Should().Contain(x => x.ErrorCode == "SHIPMENT_METHOD_PRICE_CHANGED"); }
public async Task ValidateShipment_RuleSetDefault_ShipmentMethodCodeIsEmpty_Valid() { // Arrange var shipment = new CartModule.Core.Model.Shipment { ShipmentMethodCode = string.Empty }; // Act var validator = new CartShipmentValidator(_context.AvailShippingRates); var result = await validator.ValidateAsync(shipment, ruleSet : "default"); // Assert result.IsValid.Should().BeTrue(); result.Errors.Should().BeEmpty(); }
public async Task ValidateShipment_RuleSetStrict_Valid() { //Arrange var cartService = new Moq.Mock <ICartService>(); cartService.Setup(x => x.GetAvailableShippingMethodsAsync(It.IsAny <ShoppingCart>())).Returns(Task.FromResult(ShippingMethods)); var cart = GetValidCart(); //Act var validator = new CartShipmentValidator(cart, cartService.Object); var shipmentForValidation = cart.Shipments[0]; var result = await validator.ValidateAsync(shipmentForValidation, ruleSet : "strict"); //Assertion Assert.True(result.IsValid); Assert.Empty(result.Errors); Assert.Empty(shipmentForValidation.ValidationErrors); }
public async Task ValidateShipment_RuleSetStrict_UnavailableMethodError() { // Arrange var shipment = new CartModule.Core.Model.Shipment { ShipmentMethodCode = "UnavailableShipmentMethod" }; // Act var validator = new CartShipmentValidator(_context.AvailShippingRates); var result = await validator.ValidateAsync(shipment, ruleSet : "strict"); // Assert result.IsValid.Should().BeFalse(); result.Errors.Should().NotBeEmpty(); result.Errors.Should().HaveCount(1); result.Errors.Should().Contain(x => x.ErrorCode == "SHIPMENT_METHOD_UNAVAILABLE"); }
public async Task ValidateShipment_RuleSetDefault_ShipmentMethodCodeIsNull_Valid() { // Arrange var shipment = new CartModule.Core.Model.Shipment { ShipmentMethodCode = null }; // Act var validator = new CartShipmentValidator(); var result = await validator.ValidateAsync(new ShipmentValidationContext { Shipment = shipment, AvailShippingRates = _context.AvailShippingRates }); // Assert result.IsValid.Should().BeTrue(); result.Errors.Should().BeEmpty(); }
public async Task ValidateShipment_RuleSetStrict_UnavailableMethodError() { //Arrange var cartService = new Moq.Mock <ICartService>(); cartService.Setup(x => x.GetAvailableShippingMethodsAsync(It.IsAny <ShoppingCart>())).Returns(Task.FromResult(ShippingMethods)); var cart = GetValidCart(); var testShipments = new Faker <Shipment>() .CustomInstantiator(f => new Shipment(Usd)) .RuleFor(s => s.ShipmentMethodCode, f => f.Random.Guid().ToString()); var unavailableShipment = testShipments.Generate(); cart.Shipments.Add(unavailableShipment); //Act var validator = new CartShipmentValidator(cart, cartService.Object); var result = await validator.ValidateAsync(unavailableShipment, ruleSet : "strict"); //Assertion Assert.False(result.IsValid); Assert.Single(result.Errors); Assert.Collection(result.Errors, x => { Assert.Equal(nameof(unavailableShipment.ShipmentMethodCode), x.PropertyName); }); Assert.Single(unavailableShipment.ValidationErrors); Assert.Collection(unavailableShipment.ValidationErrors, x => { Assert.Equal(nameof(UnavailableError), x.ErrorCode); }); }