public void TestThatGetDataReturnsHouseholdForHouseholdIdentifier()
        {
            HouseholdDataGetQueryHandler 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.That(householdMock, Is.Not.Null);

            // ReSharper disable PossibleInvalidOperationException
            Guid householdIdentifier = householdMock.Identifier.Value;
            // ReSharper restore PossibleInvalidOperationException
            HouseholdDataGetQuery householdDataGetQuery = BuildHouseholdDataGetQuery(householdIdentifier);

            IHousehold result = sut.GetData(householdMemberMock, householdDataGetQuery, DomainObjectMockBuilder.BuildTranslationInfoMock());

            Assert.That(result, Is.Not.Null);
            Assert.That(result, Is.EqualTo(householdMock));
        }
        public void TestThatGetDataCallsTranslateOnHouseholdForHouseholdIdentifier()
        {
            HouseholdDataGetQueryHandler 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.That(householdMock, Is.Not.Null);

            // ReSharper disable PossibleInvalidOperationException
            Guid householdIdentifier = householdMock.Identifier.Value;
            // ReSharper restore PossibleInvalidOperationException
            HouseholdDataGetQuery householdDataGetQuery = BuildHouseholdDataGetQuery(householdIdentifier);

            ITranslationInfo translationInfoMock = DomainObjectMockBuilder.BuildTranslationInfoMock();

            sut.GetData(householdMemberMock, householdDataGetQuery, translationInfoMock);

            householdMock.AssertWasCalled(m => m.Translate(Arg <CultureInfo> .Is.Equal(translationInfoMock.CultureInfo), Arg <bool> .Is.Equal(false), Arg <bool> .Is.Equal(true)), opt => opt.Repeat.Once());
        }
        public void TestThatConstructorInitializeHouseholdDataGetQueryHandler()
        {
            HouseholdDataGetQueryHandler 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 TestThatGetDataThrowsArgumentNullExceptionWhenTranslationInfoIsNull()
        {
            HouseholdDataGetQueryHandler sut = CreateSut();

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

            ArgumentNullException result = Assert.Throws <ArgumentNullException>(() => sut.GetData(DomainObjectMockBuilder.BuildHouseholdMemberMock(), BuildHouseholdDataGetQuery(), null));

            TestHelper.AssertArgumentNullExceptionIsValid(result, "translationInfo");
        }
        public void TestThatGetDataCallsHouseholdsOnHouseholdMember()
        {
            HouseholdDataGetQueryHandler 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);

            // ReSharper disable PossibleInvalidOperationException
            Guid householdIdentifier = householdMemberMock.Households.First().Identifier.Value;
            // ReSharper restore PossibleInvalidOperationException
            HouseholdDataGetQuery householdDataGetQuery = BuildHouseholdDataGetQuery(householdIdentifier);

            sut.GetData(householdMemberMock, householdDataGetQuery, DomainObjectMockBuilder.BuildTranslationInfoMock());

            householdMemberMock.AssertWasCalled(m => m.Households, opt => opt.Repeat.Times(3 + 1)); // Tree times in the unit test and one time in the query handler.
        }
        public void TestThatGetDataThrowsIntranetBusinessExceptionWhenHouseholdIdentifierDoesNotExistOnHouseholdMember()
        {
            HouseholdDataGetQueryHandler 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);

            Guid householdIdentifier = Guid.NewGuid();

            Assert.That(householdMemberMock.Households.Any(household => household.Identifier.HasValue && household.Identifier.Value == householdIdentifier), Is.False);

            HouseholdDataGetQuery householdDataGetQuery = BuildHouseholdDataGetQuery(householdIdentifier);

            IntranetBusinessException result = Assert.Throws <IntranetBusinessException>(() => sut.GetData(householdMemberMock, householdDataGetQuery, DomainObjectMockBuilder.BuildTranslationInfoMock()));

            TestHelper.AssertIntranetBusinessExceptionIsValid(result, ExceptionMessage.IdentifierUnknownToSystem, householdIdentifier);
        }