public void Use_CheckFactory_for_creating_checks() { var behaviorFactory = Substitute.For <INZazuWpfFieldBehaviorFactory>(); var serializer = Substitute.For <INZazuTableDataSerializer>(); var checkFactory = Substitute.For <ICheckFactory>(); var checkDefinition = new CheckDefinition { Type = "required" }; var fieldDefinition = new FieldDefinition { Key = "test", Type = "string", Checks = new[] { checkDefinition } }; var check = new RequiredCheck(checkDefinition.Settings, null, null, 0, fieldDefinition); checkFactory.CreateCheck(checkDefinition, fieldDefinition, Arg.Any <Func <FormData> >(), Arg.Any <INZazuTableDataSerializer>(), Arg.Any <int>()).Returns(check); var sut = new NZazuFieldFactory(); sut.Use(behaviorFactory); sut.Use(checkFactory); sut.Use(serializer); var field = (NZazuField)sut.CreateField(fieldDefinition); checkFactory.Received(1).CreateCheck(checkDefinition, fieldDefinition, Arg.Any <Func <FormData> >(), Arg.Any <INZazuTableDataSerializer>(), Arg.Any <int>()); field.Should().NotBeNull(); field.Check.Should().Be(check); }
public void Use_AggregateCheck_for_multiple_checks() { var behaviorFactory = Substitute.For <INZazuWpfFieldBehaviorFactory>(); var serializer = Substitute.For <INZazuTableDataSerializer>(); var checkFactory = Substitute.For <ICheckFactory>(); var checkDefinition1 = new CheckDefinition { Type = "required" }; var checkDefinition2 = new CheckDefinition { Type = "length", Settings = new Dictionary <string, string> { { "Min", "4" }, { "Max", "6" } } }; var fieldDefinition = new FieldDefinition { Key = "test", Type = "string", Checks = new[] { checkDefinition1, checkDefinition2 } }; var check1 = new RequiredCheck(checkDefinition1.Settings, null, null, 0, fieldDefinition); var check2 = new StringLengthCheck(checkDefinition2.Settings, null, null, 0, fieldDefinition); checkFactory.CreateCheck(checkDefinition1, fieldDefinition, Arg.Any <Func <FormData> >(), Arg.Any <INZazuTableDataSerializer>(), Arg.Any <int>()).Returns(check1); checkFactory.CreateCheck(checkDefinition2, fieldDefinition, Arg.Any <Func <FormData> >(), Arg.Any <INZazuTableDataSerializer>(), Arg.Any <int>()).Returns(check2); var sut = new NZazuFieldFactory(); sut.Use(behaviorFactory); sut.Use(checkFactory); sut.Use(serializer); var field = (NZazuField)sut.CreateField(fieldDefinition); checkFactory.Received(1).CreateCheck(checkDefinition1, fieldDefinition, Arg.Any <Func <FormData> >(), Arg.Any <INZazuTableDataSerializer>(), Arg.Any <int>()); checkFactory.Received(1).CreateCheck(checkDefinition2, fieldDefinition, Arg.Any <Func <FormData> >(), Arg.Any <INZazuTableDataSerializer>(), Arg.Any <int>()); var aggregateCheck = (AggregateCheck)field.Check; aggregateCheck.Should().NotBeNull(); aggregateCheck.Checks.Should().BeEquivalentTo(check1, check2); }