public void TestThatModifyDataCallsHouseholdMemberRemoveWithHouseholdMemberForMailAddressOnHousehold()
        {
            HouseholdRemoveHouseholdMemberCommandHandler sut = CreateSut();

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

            IHousehold householdMock = DomainObjectMockBuilder.BuildHouseholdMock();

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

            IHouseholdMember householdMemberMock = householdMock.HouseholdMembers.ElementAt(_random.Next(0, householdMock.HouseholdMembers.Count() - 1));

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

            HouseholdRemoveHouseholdMemberCommand householdRemoveHouseholdMemberCommand = _fixture.Build <HouseholdRemoveHouseholdMemberCommand>()
                                                                                          .With(m => m.HouseholdIdentifier, Guid.NewGuid())
                                                                                          .With(m => m.MailAddress, householdMemberMock.MailAddress)
                                                                                          .Create();

            sut.ModifyData(householdMock, householdRemoveHouseholdMemberCommand);

            householdMock.AssertWasCalled(m => m.HouseholdMemberRemove(Arg <IHouseholdMember> .Is.Equal(householdMemberMock)), opt => opt.Repeat.Once());
        }
        public void TestThatModifyDataCallsIsNotNullWithNullOnCommonValidationsWhenHouseholdDoesNotHaveHouseholdMemberWithMailAddress()
        {
            HouseholdRemoveHouseholdMemberCommandHandler sut = CreateSut();

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

            IHousehold householdMock = DomainObjectMockBuilder.BuildHouseholdMock();

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

            string mailAddress = _fixture.Create <string>();

            Assert.That(householdMock.HouseholdMembers.Any(householdMember => string.Compare(householdMember.MailAddress, mailAddress, StringComparison.OrdinalIgnoreCase) == 0), Is.False);

            HouseholdRemoveHouseholdMemberCommand householdRemoveHouseholdMemberCommand = _fixture.Build <HouseholdRemoveHouseholdMemberCommand>()
                                                                                          .With(m => m.HouseholdIdentifier, Guid.NewGuid())
                                                                                          .With(m => m.MailAddress, mailAddress)
                                                                                          .Create();

            sut.ModifyData(householdMock, householdRemoveHouseholdMemberCommand);

            _commonValidationsMock.AssertWasCalled(m => m.IsNotNull(Arg <IHouseholdMember> .Is.Null), opt => opt.Repeat.Once());
        }
        public void TestThatModifyDataCallsEvaluateOnSpecification()
        {
            HouseholdRemoveHouseholdMemberCommandHandler sut = CreateSut();

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

            HouseholdRemoveHouseholdMemberCommand householdRemoveHouseholdMemberCommand = _fixture.Build <HouseholdRemoveHouseholdMemberCommand>()
                                                                                          .With(m => m.HouseholdIdentifier, Guid.NewGuid())
                                                                                          .With(m => m.MailAddress, _fixture.Create <string>())
                                                                                          .Create();

            sut.ModifyData(DomainObjectMockBuilder.BuildHouseholdMock(), householdRemoveHouseholdMemberCommand);

            _specificationMock.AssertWasCalled(m => m.Evaluate(), opt => opt.Repeat.Once());
        }
        public void TestThatModifyDataCallsIsSatisfiedByOnSpecification1Time()
        {
            HouseholdRemoveHouseholdMemberCommandHandler sut = CreateSut();

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

            HouseholdRemoveHouseholdMemberCommand householdRemoveHouseholdMemberCommand = _fixture.Build <HouseholdRemoveHouseholdMemberCommand>()
                                                                                          .With(m => m.HouseholdIdentifier, Guid.NewGuid())
                                                                                          .With(m => m.MailAddress, _fixture.Create <string>())
                                                                                          .Create();

            sut.ModifyData(DomainObjectMockBuilder.BuildHouseholdMock(), householdRemoveHouseholdMemberCommand);

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

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

            IHousehold householdMock = DomainObjectMockBuilder.BuildHouseholdMock();

            HouseholdRemoveHouseholdMemberCommand householdRemoveHouseholdMemberCommand = _fixture.Build <HouseholdRemoveHouseholdMemberCommand>()
                                                                                          .With(m => m.HouseholdIdentifier, Guid.NewGuid())
                                                                                          .With(m => m.MailAddress, _fixture.Create <string>())
                                                                                          .Create();

            sut.ModifyData(householdMock, householdRemoveHouseholdMemberCommand);

            _householdDataRepositoryMock.AssertWasCalled(m => m.Update(Arg <IHousehold> .Is.Equal(householdMock)), opt => opt.Repeat.Once());
        }
        public void TestThatModifyDataReturnsResultFromUpdateCalledWithHouseholdOnHouseholdDataRepository()
        {
            IHousehold updatedHouseholdMock = DomainObjectMockBuilder.BuildHouseholdMock();

            HouseholdRemoveHouseholdMemberCommandHandler sut = CreateSut(updatedHouseholdMock);

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

            HouseholdRemoveHouseholdMemberCommand householdRemoveHouseholdMemberCommand = _fixture.Build <HouseholdRemoveHouseholdMemberCommand>()
                                                                                          .With(m => m.HouseholdIdentifier, Guid.NewGuid())
                                                                                          .With(m => m.MailAddress, _fixture.Create <string>())
                                                                                          .Create();

            IIdentifiable result = sut.ModifyData(DomainObjectMockBuilder.BuildHouseholdMock(), householdRemoveHouseholdMemberCommand);

            Assert.That(result, Is.Not.Null);
            Assert.That(result, Is.EqualTo(updatedHouseholdMock));
        }
        public void TestThatModifyDataThrowsArgumentNullExceptionWhenHouseholdRemoveHouseholdMemberCommandIsNull()
        {
            HouseholdRemoveHouseholdMemberCommandHandler sut = CreateSut();

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

            ArgumentNullException result = Assert.Throws <ArgumentNullException>(() => sut.ModifyData(DomainObjectMockBuilder.BuildHouseholdMock(), null));

            TestHelper.AssertArgumentNullExceptionIsValid(result, "command");
        }
        public void TestThatModifyDataThrowsArgumentNullExceptionWhenHouseholdIsNull()
        {
            HouseholdRemoveHouseholdMemberCommandHandler sut = CreateSut();

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

            ArgumentNullException result = Assert.Throws <ArgumentNullException>(() => sut.ModifyData(null, _fixture.Create <HouseholdRemoveHouseholdMemberCommand>()));

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