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 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 TestThatConstructorInitializeHouseholdRemoveHouseholdMemberCommandHandler()
        {
            HouseholdRemoveHouseholdMemberCommandHandler sut = CreateSut();

            Assert.That(sut, Is.Not.Null);
            Assert.That(sut.ShouldBeActivated, Is.True);
            Assert.That(sut.ShouldHaveAcceptedPrivacyPolicy, Is.True);
            Assert.That(sut.RequiredMembership, Is.EqualTo(Membership.Basic));
        }
        public void TestThatAddValidationRulesThrowsArgumentNullExceptionWhenHouseholdIsNull()
        {
            HouseholdRemoveHouseholdMemberCommandHandler sut = CreateSut();

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

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

            TestHelper.AssertArgumentNullExceptionIsValid(result, "household");
        }
        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");
        }
        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 TestThatAddValidationRulesThrowsArgumentNullExceptionWhenSpecificationIsNull()
        {
            HouseholdRemoveHouseholdMemberCommandHandler sut = CreateSut();

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

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

            TestHelper.AssertArgumentNullExceptionIsValid(result, "specification");
        }
        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 TestThatAddValidationRulesDoesNotCallsEvaluateOnSpecification()
        {
            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.AddValidationRules(DomainObjectMockBuilder.BuildHouseholdMock(), householdRemoveHouseholdMemberCommand, _specificationMock);

            _specificationMock.AssertWasNotCalled(m => m.Evaluate());
        }
        public void TestThatAddValidationRulesCallsMailAddressOnClaimValueProvider()
        {
            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.AddValidationRules(DomainObjectMockBuilder.BuildHouseholdMock(), householdRemoveHouseholdMemberCommand, _specificationMock);

            _claimValueProviderMock.AssertWasCalled(m => m.MailAddress, opt => opt.Repeat.Once());
        }
        public void TestThatAddValidationRulesCallsIsMailAddressWithMailAddressOnDomainObjectValidations()
        {
            HouseholdRemoveHouseholdMemberCommandHandler sut = CreateSut();

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

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

            sut.AddValidationRules(DomainObjectMockBuilder.BuildHouseholdMock(), householdRemoveHouseholdMemberCommand, _specificationMock);

            _domainObjectValidationsMock.AssertWasCalled(m => m.IsMailAddress(Arg <string> .Is.Equal(mailAddress)), 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 TestThatAddValidationRulesCallsEqualsWithMailAddressAndCurrentUserMailAddressOnCommonValidations()
        {
            string currentUserMailAddress = _fixture.Create <string>();

            HouseholdRemoveHouseholdMemberCommandHandler sut = CreateSut(currentUserMailAddress: currentUserMailAddress);

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

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

            sut.AddValidationRules(DomainObjectMockBuilder.BuildHouseholdMock(), householdRemoveHouseholdMemberCommand, _specificationMock);

            _commonValidationsMock.AssertWasCalled(m => m.Equals(Arg <string> .Is.Equal(mailAddress), Arg <string> .Is.Equal(currentUserMailAddress), Arg <StringComparison> .Is.Equal(StringComparison.OrdinalIgnoreCase)), opt => opt.Repeat.Once());
        }