コード例 #1
0
            public void Should_ThrowException_When_Valid_WithMessageAndArgs_And_NullPredicate()
            {
                var builder = new MemberSpecificationBuilder <object, int>();

                var args = new[] { Arg.Text("n", "v") };

                Assert.Throws <ArgumentNullException>(() => { builder.Valid(null, "message", args); });
            }
コード例 #2
0
        public void Should_Add_AsModelsCollectionRule_When_AsModelsCollection_And_Collection(Specification <MemberClass> itemSpecification)
        {
            var builder = new MemberSpecificationBuilder <object, Collection <MemberClass> >();

            builder.AsModelsCollection(itemSpecification);

            AssertCollectionRuleAdded(builder.Commands, itemSpecification);
        }
コード例 #3
0
            public void Should_ThrowException_When_Valid_And_ArgsWithoutMessage()
            {
                var builder = new MemberSpecificationBuilder <object, int>();

                Predicate <int> isValid = c => true;
                var             args    = new[] { Arg.Text("n", "v") };

                Assert.Throws <ArgumentNullException>(() => { builder.Valid(isValid, null, args); });
            }
コード例 #4
0
        public void Should_Add_AsCollectionRule_When_AsCollection_And_List()
        {
            var builder = new MemberSpecificationBuilder <object, List <int> >();

            var itemSpecification = new MemberSpecification <object, int>(x => x);

            builder.AsCollection(itemSpecification);

            AssertCollectionRuleAdded(builder.Commands, itemSpecification);
        }
コード例 #5
0
        public void Should_Add_SetOptional_When_SetOptional_ReferenceType()
        {
            var builderInterface = new MemberSpecificationBuilder <object, MemberClass>() as
                                   IMemberSpecificationBuilder <object, MemberClass>;

            builderInterface.SetOptional();

            var builder = (MemberSpecificationBuilder <object, MemberClass>)builderInterface;

            Assert.Single(builder.Commands);
            Assert.IsType <SetOptionalCommand>(builder.Commands.Single());
        }
コード例 #6
0
            public void Should_Add_SetRequiredCommand_When_SetRequired()
            {
                var builder = new MemberSpecificationBuilder <object, object>();

                builder.SetRequired("message");

                Assert.Single(builder.Commands);
                Assert.IsType <SetRequiredCommand>(builder.Commands.Single());

                var command = (SetRequiredCommand)builder.Commands.Single();

                Assert.Equal("SetRequired", command.Name);
            }
コード例 #7
0
            public void Should_Add_WithMessageCommand_When_WithMessage()
            {
                var builder = new MemberSpecificationBuilder <object, object>();

                builder.WithMessage("message");

                Assert.Single(builder.Commands);
                Assert.IsType <WithMessageCommand>(builder.Commands.Single());

                var command = (WithMessageCommand)builder.Commands.Single();

                Assert.Equal("WithMessage", command.Name);
                Assert.Equal("message", command.Message);
            }
コード例 #8
0
        public void Should_Add_AsModelRule_When_AsModel_When_NullSpecification()
        {
            var builder = new MemberSpecificationBuilder <object, MemberClass>();

            builder.AsModel();

            Assert.Single(builder.Commands);
            Assert.IsType <AsModelRule <MemberClass> >(builder.Commands.Single());

            var command = (AsModelRule <MemberClass>)builder.Commands.Single();

            Assert.Equal("AsModel", command.Name);
            Assert.Null(command.RuleSingleError);
            Assert.Null(command.Specification);
        }
コード例 #9
0
        public void Should_Add_SetRequired_When_SetRequired_ReferenceType()
        {
            var builderInterface = new MemberSpecificationBuilder <object, MemberClass>() as
                                   IMemberSpecificationBuilder <object, MemberClass>;

            builderInterface.SetRequired("error");

            var builder = (MemberSpecificationBuilder <object, MemberClass>)builderInterface;

            Assert.Single(builder.Commands);
            Assert.IsType <SetRequiredCommand>(builder.Commands.Single());

            var setRequiredCommand = (SetRequiredCommand)builder.Commands.Single();

            Assert.Equal("error", setRequiredCommand.Message);
        }
コード例 #10
0
        public static IMemberValidator Create <TModel, TMember>(MemberSpecification <TModel, TMember> memberSpecification, out IReadOnlyCollection <ICommand> commands)
            where TModel : class
        {
            var builder = new MemberSpecificationBuilder <TModel, TMember>();

            var processedBuilder = memberSpecification(builder);

            if (!ReferenceEquals(builder, processedBuilder))
            {
                throw new InvalidProcessedReferenceException(typeof(MemberSpecificationBuilder <TModel, TMember>));
            }

            commands = (processedBuilder as MemberSpecificationBuilder <TModel, TMember>)?.Commands;

            return(ConvertCommands(commands));
        }
コード例 #11
0
        public void Should_Add_AsNullableRule_When_AsNullable()
        {
            var builder = new MemberSpecificationBuilder <object, int?>();

            var memberSpecification = new MemberSpecification <object, int>(x => x);

            builder.AsNullable(memberSpecification);

            Assert.Single(builder.Commands);
            Assert.IsType <AsNullableRule <object, int> >(builder.Commands.Single());

            var command = (AsNullableRule <object, int>)builder.Commands.Single();

            Assert.Equal("AsNullable", command.Name);
            Assert.Null(command.RuleSingleError);
            Assert.Same(memberSpecification, command.MemberSpecification);
        }
コード例 #12
0
            public void Should_Add_AsCollectionRule_When_AsCollection()
            {
                var builder = new MemberSpecificationBuilder <object, IEnumerable <int> >();

                var itemSpecification = new MemberSpecification <object, int>(x => x);

                builder.AsCollection <object, IEnumerable <int>, int>(itemSpecification);

                Assert.Single(builder.Commands);
                Assert.IsType <AsCollectionRule <object, int> >(builder.Commands.Single());

                var command = (AsCollectionRule <object, int>)builder.Commands.Single();

                Assert.Equal("AsCollection", command.Name);
                Assert.Null(command.RuleSingleError);
                Assert.Same(itemSpecification, command.ItemSpecification);
                Assert.NotNull(command.ItemSpecification);
            }
コード例 #13
0
            public void Should_Add_AsRelativeRule_When_AsRelative()
            {
                var builder = new MemberSpecificationBuilder <object, int>();

                Predicate <object> isValid = c => true;

                builder.AsRelative(isValid);

                Assert.Single(builder.Commands);
                Assert.IsType <AsRelativeRule <object> >(builder.Commands.Single());

                var command = (AsRelativeRule <object>)builder.Commands.Single();

                Assert.Equal("AsRelative", command.Name);
                Assert.Null(command.RuleSingleError);
                Assert.Null(command.Error);
                Assert.Same(isValid, command.IsValid);
            }
コード例 #14
0
            public void Should_Add_AsModelRule_When_AsModel_And_SpecificationDefined()
            {
                var builder = new MemberSpecificationBuilder <object, MemberClass>();

                var specification = new Specification <MemberClass>(x => x);

                builder.AsModel(specification);

                Assert.Single(builder.Commands);
                Assert.IsType <AsModelRule <MemberClass> >(builder.Commands.Single());

                var command = (AsModelRule <MemberClass>)builder.Commands.Single();

                Assert.Equal("AsModel", command.Name);
                Assert.Null(command.RuleSingleError);
                Assert.Same(specification, command.Specification);
                Assert.Equal(specification.GetHashCode().ToString(), command.SpecificationId);
            }
コード例 #15
0
        public void Should_AddMultipleCommands()
        {
            var builder = new MemberSpecificationBuilder <object, MemberClass>();

            builder
            .SetOptional()
            .SetRequired("required")
            .Valid(x => false)
            .WithMessage("message")
            .AsRelative(x => true)
            .AsModel();

            Assert.Equal(6, builder.Commands.Count);
            Assert.IsType <SetOptionalCommand>(builder.Commands.ElementAt(0));
            Assert.IsType <SetRequiredCommand>(builder.Commands.ElementAt(1));
            Assert.IsType <ValidRule <MemberClass> >(builder.Commands.ElementAt(2));
            Assert.IsType <WithMessageCommand>(builder.Commands.ElementAt(3));
            Assert.IsType <AsRelativeRule <object> >(builder.Commands.ElementAt(4));
            Assert.IsType <AsModelRule <MemberClass> >(builder.Commands.ElementAt(5));
        }
コード例 #16
0
            public void Should_Add_AsCollectionRule_With_AsModelRuleForItems_When_AsModelsCollection_And_SpecificationFromRepository()
            {
                var builder = new MemberSpecificationBuilder <object, IEnumerable <MemberClass> >();

                builder.AsModelsCollection <object, IEnumerable <MemberClass>, MemberClass>();

                Assert.Single(builder.Commands);
                Assert.IsType <AsCollectionRule <object, MemberClass> >(builder.Commands.Single());

                var command = (AsCollectionRule <object, MemberClass>)builder.Commands.Single();

                Assert.Equal("AsCollection", command.Name);
                Assert.Null(command.RuleSingleError);
                Assert.NotNull(command.MemberValidator);
                Assert.NotNull(command.ItemSpecification);
                Assert.False(command.MemberValidator.IsOptional);

                Assert.Null(((AsModelRule <MemberClass>)command.MemberValidator.Rules.Single()).Specification);
                Assert.Null(((AsModelRule <MemberClass>)command.MemberValidator.Rules.Single()).SpecificationId);
            }
コード例 #17
0
            public void Should_Add_ValidRule_When_Valid_With_Message()
            {
                var builder = new MemberSpecificationBuilder <object, int>();

                Predicate <int> isValid = c => true;

                builder.Valid(isValid, "message");

                Assert.Single(builder.Commands);
                Assert.IsType <ValidRule <int> >(builder.Commands.Single());

                var command = (ValidRule <int>)builder.Commands.Single();

                Assert.Equal("Valid", command.Name);
                Assert.Null(command.RuleSingleError);
                Assert.NotNull(command.Error);
                Assert.Equal("message", command.Error.Message);
                Assert.Null(command.Error.Arguments);
                Assert.Same(isValid, command.IsValid);
            }
コード例 #18
0
            public void Should_Add_AsCollectionRule_With_AsModelRuleForItems_When_AsModelsCollection_And_SpecificationDefined()
            {
                var builder = new MemberSpecificationBuilder <object, IEnumerable <MemberClass> >();

                var itemModelSpecification = new Specification <MemberClass>(x => x);

                builder.AsModelsCollection <object, IEnumerable <MemberClass>, MemberClass>(itemModelSpecification);

                Assert.Single(builder.Commands);
                Assert.IsType <AsCollectionRule <object, MemberClass> >(builder.Commands.Single());

                var command = (AsCollectionRule <object, MemberClass>)builder.Commands.Single();

                Assert.Equal("AsCollection", command.Name);
                Assert.Null(command.RuleSingleError);
                Assert.NotNull(command.ItemSpecification);
                Assert.False(command.MemberValidator.IsOptional);

                Assert.Same(itemModelSpecification, ((AsModelRule <MemberClass>)command.MemberValidator.Rules.Single()).Specification);
                Assert.Equal(itemModelSpecification.GetHashCode().ToString(), ((AsModelRule <MemberClass>)command.MemberValidator.Rules.Single()).SpecificationId);
            }
コード例 #19
0
            public void Should_Add_AsNullableRule_When_AsNullable_And_AdvancedSpecification()
            {
                var builder = new MemberSpecificationBuilder <object, int?>();

                Predicate <int> innerPredicate = z => true;

                var memberSpecification = new MemberSpecification <object, int>(x => x.Valid(innerPredicate).SetSingleError("single_message"));

                builder.AsNullable(memberSpecification);

                Assert.Single(builder.Commands);
                Assert.IsType <AsNullableRule <object, int> >(builder.Commands.Single());

                var command = (AsNullableRule <object, int>)builder.Commands.Single();

                Assert.Equal("AsNullable", command.Name);
                Assert.Null(command.RuleSingleError);
                Assert.Same(memberSpecification, command.MemberSpecification);
                Assert.NotNull(command.MemberSpecification);
                Assert.Equal("single_message", command.MemberValidator.SingleError.Message);
                Assert.Same(innerPredicate, ((ValidRule <int>)command.MemberValidator.Rules.Single()).IsValid);
            }
コード例 #20
0
            public void Should_ThrowException_When_AsCollection_And_NullMemberSpecification()
            {
                var builder = new MemberSpecificationBuilder <object, IEnumerable <int> >();

                Assert.Throws <ArgumentNullException>(() => { builder.AsCollection <object, IEnumerable <int>, int>(null); });
            }
コード例 #21
0
            public void Should_ThrowException_When_WithMessage_And_NullMessage()
            {
                var builder = new MemberSpecificationBuilder <object, int>();

                Assert.Throws <ArgumentNullException>(() => { builder.WithMessage(null); });
            }
コード例 #22
0
            public void Should_ThrowException_When_Valid_And_NullPredicate()
            {
                var builder = new MemberSpecificationBuilder <object, int>();

                Assert.Throws <ArgumentNullException>(() => { builder.Valid(null); });
            }
コード例 #23
0
        public void Should_HaveNoCommandsInitially()
        {
            var builder = new MemberSpecificationBuilder <object, object>();

            Assert.Empty(builder.Commands);
        }
コード例 #24
0
        public void Should_ThrowException_When_NullCommand()
        {
            var builder = new MemberSpecificationBuilder <object, MemberClass>();

            Assert.Throws <ArgumentNullException>(() => { builder.AddCommand(null); });
        }
コード例 #25
0
            public void Should_Add_AsRelativeRule_When_AsRelative_And_NullPredicate()
            {
                var builder = new MemberSpecificationBuilder <object, int>();

                Assert.Throws <ArgumentNullException>(() => { builder.AsRelative(null); });
            }
コード例 #26
0
            public void Should_ThrowException_When_SetRequired_With_NullMessage()
            {
                var builder = new MemberSpecificationBuilder <object, object>();

                Assert.Throws <ArgumentNullException>(() => { builder.SetRequired(null); });
            }
コード例 #27
0
            public void Should_ThrowException_When_AsNullable_And_NullMemberSpecification()
            {
                var builder = new MemberSpecificationBuilder <object, int?>();

                Assert.Throws <ArgumentNullException>(() => { builder.AsNullable(null); });
            }