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

            Assert.That(sut, Is.Not.Null);
            Assert.That(sut.ModifyDataIsCalled, 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.ModifyData(householdMemberMock, command);
            Assert.That(sut.ModifyDataIsCalled, 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 TestThatModifyDataCallsIsNotNullWithHouseholdOnCommonValidations()
        {
            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.ModifyData(householdMemberMock, command);

            _commonValidationsMock.AssertWasCalled(m => m.IsNotNull(Arg <IHousehold> .Is.Equal(householdMock)), opt => opt.Repeat.Once());
        }
        public void TestThatModifyDataCallsEvaluateOnSpecification()
        {
            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.ModifyData(householdMemberMock, command);

            _specificationMock.AssertWasCalled(m => m.Evaluate(), opt => opt.Repeat.Once());
        }
        public void TestThatModifyDataCallsHouseholdsOnHouseholdMember()
        {
            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.ModifyData(householdMemberMock, command);

            householdMemberMock.AssertWasCalled(m => m.Households, opt => opt.Repeat.Times(4)); // Tree times in the test and one time in AddValidationRules.
        }
        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 TestThatModifyDataReturnsResultFromModifyDataCalledWithHousehold()
        {
            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();

            IIdentifiable result = sut.ModifyData(householdMemberMock, command);

            Assert.That(result, Is.Not.Null);
            Assert.That(result, Is.EqualTo(sut.ModifyDataResult));
        }