コード例 #1
0
ファイル: ProductNameTest.cs プロジェクト: cmoinard/Ecommerce
        public void ShouldBeValid_WhenNameIsValid(string name)
        {
            var actual = ProductName.TryCreate(name);

            Check.That(actual)
            .IsEqualTo(
                Validation.Valid(new ProductName(name)));
        }
コード例 #2
0
ファイル: ProductNameTest.cs プロジェクト: cmoinard/Ecommerce
        public void ShouldBeInvalid_WhenHasInvalidCharacters(string name)
        {
            var actual = ProductName.TryCreate(name);

            Check.That(actual)
            .IsEqualTo(
                Validation.Invalid <ProductName>(
                    new ProductName.InvalidCharactersValidationError()));
        }
コード例 #3
0
ファイル: ProductNameTest.cs プロジェクト: cmoinard/Ecommerce
        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()));
        }
コード例 #4
0
    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);
        }
    }
コード例 #5
0
ファイル: ProductDto.cs プロジェクト: cmoinard/Ecommerce
        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));
        }
コード例 #6
0
 public Validation <ProductName> Validate() =>
 ProductName.TryCreate(Name);