public void TestThatModifyDataSetsPrivacyPolicyAcceptedTimeToDateTimeNow()
        {
            var fixture = new Fixture();
            var claimValueProviderMock = MockRepository.GenerateMock <IClaimValueProvider>();
            var objectMapperMock       = MockRepository.GenerateMock <IFoodWasteObjectMapper>();
            var specificationMock      = MockRepository.GenerateMock <ISpecification>();
            var commonValidationsMock  = MockRepository.GenerateMock <ICommonValidations>();
            var exceptionBuilderMock   = MockRepository.GenerateMock <IExceptionBuilder>();

            var householdDataRepositoryMock = MockRepository.GenerateMock <IHouseholdDataRepository>();

            householdDataRepositoryMock.Stub(m => m.Update(Arg <IHouseholdMember> .Is.Anything))
            .Return(DomainObjectMockBuilder.BuildHouseholdMemberMock())
            .Repeat.Any();

            var householdMemberAcceptPrivacyPolicyCommandHandler = new HouseholdMemberAcceptPrivacyPolicyCommandHandler(householdDataRepositoryMock, claimValueProviderMock, objectMapperMock, specificationMock, commonValidationsMock, exceptionBuilderMock);

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

            var householdMemberMock = DomainObjectMockBuilder.BuildHouseholdMemberMock();

            var testTime = DateTime.Now;

            householdMemberAcceptPrivacyPolicyCommandHandler.ModifyData(householdMemberMock, fixture.Create <HouseholdMemberAcceptPrivacyPolicyCommand>());

            householdMemberMock.AssertWasCalled(m => m.PrivacyPolicyAcceptedTime = Arg <DateTime> .Is.GreaterThanOrEqual(testTime));
            householdMemberMock.AssertWasCalled(m => m.PrivacyPolicyAcceptedTime = Arg <DateTime> .Is.LessThanOrEqual(testTime.AddSeconds(1)));
        }
        public void TestThatModifyDataReturnsActivatedHouseholdMemberFromHouseholdDataRepository()
        {
            var fixture = new Fixture();
            var claimValueProviderMock = MockRepository.GenerateMock <IClaimValueProvider>();
            var objectMapperMock       = MockRepository.GenerateMock <IFoodWasteObjectMapper>();
            var specificationMock      = MockRepository.GenerateMock <ISpecification>();
            var commonValidationsMock  = MockRepository.GenerateMock <ICommonValidations>();
            var exceptionBuilderMock   = MockRepository.GenerateMock <IExceptionBuilder>();

            var activatedHouseholdMemberMock = DomainObjectMockBuilder.BuildHouseholdMemberMock();
            var householdDataRepositoryMock  = MockRepository.GenerateMock <IHouseholdDataRepository>();

            householdDataRepositoryMock.Stub(m => m.Update(Arg <IHouseholdMember> .Is.Anything))
            .Return(activatedHouseholdMemberMock)
            .Repeat.Any();

            var householdMemberAcceptPrivacyPolicyCommandHandler = new HouseholdMemberAcceptPrivacyPolicyCommandHandler(householdDataRepositoryMock, claimValueProviderMock, objectMapperMock, specificationMock, commonValidationsMock, exceptionBuilderMock);

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

            var result = householdMemberAcceptPrivacyPolicyCommandHandler.ModifyData(DomainObjectMockBuilder.BuildHouseholdMemberMock(), fixture.Create <HouseholdMemberAcceptPrivacyPolicyCommand>());

            Assert.That(result, Is.Not.Null);
            Assert.That(result, Is.EqualTo(activatedHouseholdMemberMock));
        }
        public void TestThatConstructorInitializeHouseholdMemberAcceptPrivacyPolicyCommandHandler()
        {
            var householdDataRepositoryMock = MockRepository.GenerateMock <IHouseholdDataRepository>();
            var claimValueProviderMock      = MockRepository.GenerateMock <IClaimValueProvider>();
            var objectMapperMock            = MockRepository.GenerateMock <IFoodWasteObjectMapper>();
            var specificationMock           = MockRepository.GenerateMock <ISpecification>();
            var commonValidationsMock       = MockRepository.GenerateMock <ICommonValidations>();
            var exceptionBuilderMock        = MockRepository.GenerateMock <IExceptionBuilder>();

            var householdMemberAcceptPrivacyPolicyCommandHandler = new HouseholdMemberAcceptPrivacyPolicyCommandHandler(householdDataRepositoryMock, claimValueProviderMock, objectMapperMock, specificationMock, commonValidationsMock, exceptionBuilderMock);

            Assert.That(householdMemberAcceptPrivacyPolicyCommandHandler, Is.Not.Null);
            Assert.That(householdMemberAcceptPrivacyPolicyCommandHandler.ShouldBeActivated, Is.False);
            Assert.That(householdMemberAcceptPrivacyPolicyCommandHandler.ShouldHaveAcceptedPrivacyPolicy, Is.False);
            Assert.That(householdMemberAcceptPrivacyPolicyCommandHandler.RequiredMembership, Is.EqualTo(Membership.Basic));
        }
        public void TestThatAddValidationRulesThrowsArgumentNullExceptionWhenCommandIsNull()
        {
            var householdDataRepositoryMock = MockRepository.GenerateMock <IHouseholdDataRepository>();
            var claimValueProviderMock      = MockRepository.GenerateMock <IClaimValueProvider>();
            var objectMapperMock            = MockRepository.GenerateMock <IFoodWasteObjectMapper>();
            var specificationMock           = MockRepository.GenerateMock <ISpecification>();
            var commonValidationsMock       = MockRepository.GenerateMock <ICommonValidations>();
            var exceptionBuilderMock        = MockRepository.GenerateMock <IExceptionBuilder>();

            var householdMemberAcceptPrivacyPolicyCommandHandler = new HouseholdMemberAcceptPrivacyPolicyCommandHandler(householdDataRepositoryMock, claimValueProviderMock, objectMapperMock, specificationMock, commonValidationsMock, exceptionBuilderMock);

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

            var exception = Assert.Throws <ArgumentNullException>(() => householdMemberAcceptPrivacyPolicyCommandHandler.AddValidationRules(DomainObjectMockBuilder.BuildHouseholdMemberMock(), null, specificationMock));

            Assert.That(exception, Is.Not.Null);
            Assert.That(exception.ParamName, Is.Not.Null);
            Assert.That(exception.ParamName, Is.Not.Empty);
            Assert.That(exception.ParamName, Is.EqualTo("command"));
            Assert.That(exception.InnerException, Is.Null);
        }
        public void TestThatModifyDataThrowsArgumentNullExceptionWhenHouseholdMemberIsNull()
        {
            var fixture = new Fixture();
            var householdDataRepositoryMock = MockRepository.GenerateMock <IHouseholdDataRepository>();
            var claimValueProviderMock      = MockRepository.GenerateMock <IClaimValueProvider>();
            var objectMapperMock            = MockRepository.GenerateMock <IFoodWasteObjectMapper>();
            var specificationMock           = MockRepository.GenerateMock <ISpecification>();
            var commonValidationsMock       = MockRepository.GenerateMock <ICommonValidations>();
            var exceptionBuilderMock        = MockRepository.GenerateMock <IExceptionBuilder>();

            var householdMemberAcceptPrivacyPolicyCommandHandler = new HouseholdMemberAcceptPrivacyPolicyCommandHandler(householdDataRepositoryMock, claimValueProviderMock, objectMapperMock, specificationMock, commonValidationsMock, exceptionBuilderMock);

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

            var exception = Assert.Throws <ArgumentNullException>(() => householdMemberAcceptPrivacyPolicyCommandHandler.ModifyData(null, fixture.Create <HouseholdMemberAcceptPrivacyPolicyCommand>()));

            Assert.That(exception, Is.Not.Null);
            Assert.That(exception.ParamName, Is.Not.Null);
            Assert.That(exception.ParamName, Is.Not.Empty);
            Assert.That(exception.ParamName, Is.EqualTo("householdMember"));
            Assert.That(exception.InnerException, Is.Null);
        }