public void ShouldBeValid_WhenNameIsValid(string name) { var actual = ProductName.TryCreate(name); Check.That(actual) .IsEqualTo( Validation.Valid(new ProductName(name))); }
public void ShouldBeInvalid_WhenHasInvalidCharacters(string name) { var actual = ProductName.TryCreate(name); Check.That(actual) .IsEqualTo( Validation.Invalid <ProductName>( new ProductName.InvalidCharactersValidationError())); }
public void ShouldBeInvalid_WhenExceedsMaxLength() { var name = new string('e', ProductName.MaxLength + 10); var actual = ProductName.TryCreate(name); Check.That(actual) .IsEqualTo( Validation.Invalid <ProductName>( new ProductName.ExceedsMaxLengthValidationError())); }
public static void Demo(ILogger logger) { logger.Information("==== Demo for ValueObjectAttribute ===="); var bread = ProductName.Create("Bread"); logger.Information("Product name: {Bread}", bread); string valueOfTheProductName = bread; logger.Information("Implicit conversion of ProductName -> string: {Key}", valueOfTheProductName); try { ProductName.Create(" "); logger.Warning("This line won't be reached."); } catch (ValidationException) { logger.Information("ValidationException is thrown because a product name cannot be an empty string."); } var validationResult = ProductName.TryCreate("Milk", out var milk); if (validationResult == ValidationResult.Success) { logger.Information("Product name '{Name}' created with 'TryCreate'.", milk); } // Thanks to setting "NullInFactoryMethodsYieldsNull = true" var nullProduct = ProductName.Create(null); logger.Information("Null-Product name: {NullProduct}", nullProduct); var nullValidationResult = ProductName.TryCreate(null, out nullProduct); if (nullValidationResult == ValidationResult.Success) { logger.Information("Null-Product name: {NullProduct}", nullProduct); } }
public Validation<UncreatedProduct> Validate() { var name = ProductName.TryCreate(Name); var description = ProductDescription.TryCreate(Description); var dimension = Dimension.Validate(); var weight = Shared.Domain.Weight.TryGrams(Weight); var categories = ValidateCategories(CategoryIds); var errors = name.SafeGetErrors() .Concat(description.SafeGetErrors()) .Concat(dimension.SafeGetErrors()) .Concat(weight.SafeGetErrors()) .Concat(categories.SafeGetErrors()) .ToList(); return errors.ToValidation(() => new UncreatedProduct( name.Value, description.Value, dimension.Value, weight.Value, categories.Value)); }
public Validation <ProductName> Validate() => ProductName.TryCreate(Name);