public void TestThatAddValidationRulesCallsAddValidationRulesWithHousehold()
        {
            MyHouseholdDataModificationCommandHandler <MyHouseholdDataModificationCommand> sut = CreateSut();

            Assert.That(sut, Is.Not.Null);
            Assert.That(sut.AddValidationRulesIsCalled, Is.False);
            Assert.That(sut.HandledHousehold, Is.Null);
            Assert.That(sut.HandledCommand, Is.Null);

            IHouseholdMember householdMemberMock = DomainObjectMockBuilder.BuildHouseholdMemberMock();

            Assert.That(householdMemberMock, Is.Not.Null);
            Assert.That(householdMemberMock.Households, Is.Not.Null);
            Assert.That(householdMemberMock.Households, Is.Not.Empty);

            IHousehold householdMock = householdMemberMock.Households.FirstOrDefault();

            Assert.That(householdMock, Is.Not.Null);

            MyHouseholdDataModificationCommand command = _fixture.Build <MyHouseholdDataModificationCommand>()
                                                         // ReSharper disable PossibleInvalidOperationException
                                                         .With(m => m.HouseholdIdentifier, householdMock.Identifier.Value)
                                                         // ReSharper restore PossibleInvalidOperationException
                                                         .Create();

            sut.AddValidationRules(householdMemberMock, command, _specificationMock);
            Assert.That(sut.AddValidationRulesIsCalled, Is.True);
            Assert.That(sut.HandledHousehold, Is.Not.Null);
            Assert.That(sut.HandledHousehold, Is.EqualTo(householdMock));
            Assert.That(sut.HandledCommand, Is.Not.Null);
            Assert.That(sut.HandledCommand, Is.EqualTo(command));
        }
        public void TestThatAddValidationRulesCallsIsNotNullWithHouseholdOnCommonValidations()
        {
            MyHouseholdDataModificationCommandHandler <MyHouseholdDataModificationCommand> sut = CreateSut();

            Assert.That(sut, Is.Not.Null);

            IHouseholdMember householdMemberMock = DomainObjectMockBuilder.BuildHouseholdMemberMock();

            Assert.That(householdMemberMock, Is.Not.Null);
            Assert.That(householdMemberMock.Households, Is.Not.Null);
            Assert.That(householdMemberMock.Households, Is.Not.Empty);

            IHousehold householdMock = householdMemberMock.Households.FirstOrDefault();

            Assert.IsNotNull(householdMock);

            MyHouseholdDataModificationCommand command = _fixture.Build <MyHouseholdDataModificationCommand>()
                                                         // ReSharper disable PossibleInvalidOperationException
                                                         .With(m => m.HouseholdIdentifier, householdMock.Identifier.Value)
                                                         // ReSharper restore PossibleInvalidOperationException
                                                         .Create();

            sut.AddValidationRules(householdMemberMock, command, _specificationMock);

            _commonValidationsMock.AssertWasCalled(m => m.IsNotNull(Arg <IHousehold> .Is.Equal(householdMock)), opt => opt.Repeat.Once());
        }
        public void TestThatAddValidationRulesCallsIsSatisfiedByOnSpecification1Time()
        {
            MyHouseholdDataModificationCommandHandler <MyHouseholdDataModificationCommand> sut = CreateSut();

            Assert.That(sut, Is.Not.Null);

            IHouseholdMember householdMemberMock = DomainObjectMockBuilder.BuildHouseholdMemberMock();

            Assert.That(householdMemberMock, Is.Not.Null);
            Assert.That(householdMemberMock.Households, Is.Not.Null);
            Assert.That(householdMemberMock.Households, Is.Not.Empty);

            MyHouseholdDataModificationCommand command = _fixture.Build <MyHouseholdDataModificationCommand>()
                                                         // ReSharper disable PossibleInvalidOperationException
                                                         .With(m => m.HouseholdIdentifier, householdMemberMock.Households.First().Identifier.Value)
                                                         // ReSharper restore PossibleInvalidOperationException
                                                         .Create();

            sut.AddValidationRules(householdMemberMock, command, _specificationMock);

            _specificationMock.AssertWasCalled(m => m.IsSatisfiedBy(Arg <Func <bool> > .Is.NotNull, Arg <IntranetBusinessException> .Is.NotNull), opt => opt.Repeat.Once());
        }
        public void TestThatAddValidationRulesCallsHouseholdsOnHouseholdMember()
        {
            MyHouseholdDataModificationCommandHandler <MyHouseholdDataModificationCommand> sut = CreateSut();

            Assert.That(sut, Is.Not.Null);

            IHouseholdMember householdMemberMock = DomainObjectMockBuilder.BuildHouseholdMemberMock();

            Assert.That(householdMemberMock, Is.Not.Null);
            Assert.That(householdMemberMock.Households, Is.Not.Null);
            Assert.That(householdMemberMock.Households, Is.Not.Empty);

            MyHouseholdDataModificationCommand command = _fixture.Build <MyHouseholdDataModificationCommand>()
                                                         // ReSharper disable PossibleInvalidOperationException
                                                         .With(m => m.HouseholdIdentifier, householdMemberMock.Households.First().Identifier.Value)
                                                         // ReSharper restore PossibleInvalidOperationException
                                                         .Create();

            sut.AddValidationRules(householdMemberMock, command, _specificationMock);

            householdMemberMock.AssertWasCalled(m => m.Households, opt => opt.Repeat.Times(4)); // Tree times in the test and one time in AddValidationRules.
        }
        public void TestThatAddValidationRulesThrowsArgumentNullExceptionWhenSpecificationIsNull()
        {
            MyHouseholdDataModificationCommandHandler <MyHouseholdDataModificationCommand> sut = CreateSut();

            Assert.That(sut, Is.Not.Null);

            ArgumentNullException result = Assert.Throws <ArgumentNullException>(() => sut.AddValidationRules(DomainObjectMockBuilder.BuildHouseholdMemberMock(), _fixture.Create <MyHouseholdDataModificationCommand>(), null));

            TestHelper.AssertArgumentNullExceptionIsValid(result, "specification");
        }
        public void TestThatAddValidationRulesThrowsArgumentNullExceptionWhenHouseholdMemberIsNull()
        {
            MyHouseholdDataModificationCommandHandler <MyHouseholdDataModificationCommand> sut = CreateSut();

            Assert.That(sut, Is.Not.Null);

            ArgumentNullException result = Assert.Throws <ArgumentNullException>(() => sut.AddValidationRules((IHouseholdMember)null, _fixture.Create <MyHouseholdDataModificationCommand>(), _specificationMock));

            TestHelper.AssertArgumentNullExceptionIsValid(result, "householdMember");
        }