public void TestThatQueryCallsFoodItemGetAllOnSystemDataRepositoryWhenFoodGroupIdentifierIsNull()
        {
            var fixture = new Fixture();

            var systemDataRepositoryMock = MockRepository.GenerateMock <ISystemDataRepository>();

            systemDataRepositoryMock.Stub(m => m.Get <ITranslationInfo>(Arg <Guid> .Is.Anything))
            .Return(DomainObjectMockBuilder.BuildTranslationInfoMock())
            .Repeat.Any();
            systemDataRepositoryMock.Stub(m => m.DataProviderForFoodItemsGet())
            .Return(DomainObjectMockBuilder.BuildDataProviderMock())
            .Repeat.Any();
            systemDataRepositoryMock.Stub(m => m.FoodItemGetAll())
            .Return(DomainObjectMockBuilder.BuildFoodItemMockCollection())
            .Repeat.Any();

            var foodWasteObjectMapperMock = MockRepository.GenerateMock <IFoodWasteObjectMapper>();

            foodWasteObjectMapperMock.Stub(m => m.Map <IFoodItemCollection, IView>(Arg <IFoodItemCollection> .Is.Anything, Arg <CultureInfo> .Is.Anything))
            .Return(MockRepository.GenerateMock <IView>())
            .Repeat.Any();

            var foodItemCollectionGetQueryHandlerBase = new MyFoodItemCollectionGetQueryHandler(systemDataRepositoryMock, foodWasteObjectMapperMock, fixture.Create <bool>());

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

            var foodItemCollectionGetQuery = fixture.Build <FoodItemCollectionGetQuery>()
                                             .With(m => m.TranslationInfoIdentifier, Guid.NewGuid())
                                             .With(m => m.FoodGroupIdentifier, null)
                                             .Create();

            foodItemCollectionGetQueryHandlerBase.Query(foodItemCollectionGetQuery);

            systemDataRepositoryMock.AssertWasCalled(m => m.FoodItemGetAll());
        }
        public void TestThatConstructorInitializeFoodItemCollectionGetQueryHandlerBase(bool activeOnly)
        {
            var systemDataRepositoryMock              = MockRepository.GenerateMock <ISystemDataRepository>();
            var foodWasteObjectMapperMock             = MockRepository.GenerateMock <IFoodWasteObjectMapper>();
            var foodItemCollectionGetQueryHandlerBase = new MyFoodItemCollectionGetQueryHandler(systemDataRepositoryMock, foodWasteObjectMapperMock, activeOnly);

            Assert.That(foodItemCollectionGetQueryHandlerBase, Is.Not.Null);
            Assert.That(foodItemCollectionGetQueryHandlerBase.GetOnlyActive(), Is.EqualTo(activeOnly));
        }
        public void TestThatQueryCallsMapWithFoodItemCollectionContainingOnlyActiveFoodItemsOnFoodWasteObjectMapper()
        {
            var fixture = new Fixture();

            var dataProviderMock       = DomainObjectMockBuilder.BuildDataProviderMock();
            var foodItemMockCollection = new List <IFoodItem>
            {
                DomainObjectMockBuilder.BuildFoodItemMock(dataProvider: dataProviderMock),
                DomainObjectMockBuilder.BuildFoodItemMock(dataProvider: dataProviderMock),
                DomainObjectMockBuilder.BuildFoodItemMock(dataProvider: dataProviderMock),
                DomainObjectMockBuilder.BuildFoodItemMock(false, dataProviderMock),
                DomainObjectMockBuilder.BuildFoodItemMock(false, dataProviderMock)
            };
            var systemDataRepositoryMock = MockRepository.GenerateMock <ISystemDataRepository>();

            systemDataRepositoryMock.Stub(m => m.Get <ITranslationInfo>(Arg <Guid> .Is.Anything))
            .Return(DomainObjectMockBuilder.BuildTranslationInfoMock())
            .Repeat.Any();
            systemDataRepositoryMock.Stub(m => m.DataProviderForFoodItemsGet())
            .Return(dataProviderMock)
            .Repeat.Any();
            systemDataRepositoryMock.Stub(m => m.FoodItemGetAll())
            .Return(foodItemMockCollection)
            .Repeat.Any();

            var foodWasteObjectMapperMock = MockRepository.GenerateMock <IFoodWasteObjectMapper>();

            foodWasteObjectMapperMock.Stub(m => m.Map <IFoodItemCollection, IView>(Arg <IFoodItemCollection> .Is.NotNull, Arg <CultureInfo> .Is.Anything))
            .WhenCalled(e =>
            {
                var foodItemCollection = (IFoodItemCollection)e.Arguments.ElementAt(0);
                Assert.That(foodItemCollection, Is.Not.Null);
                Assert.That(foodItemCollection.Count, Is.EqualTo(foodItemMockCollection.Count(foodItem => foodItem.IsActive)));
                foreach (var foodItem in foodItemCollection)
                {
                    Assert.That(foodItem, Is.Not.Null);
                    Assert.That(foodItem.IsActive, Is.True);
                    Assert.That(foodItemMockCollection.Contains(foodItem), Is.True);
                }
            })
            .Return(MockRepository.GenerateMock <IView>())
            .Repeat.Any();

            var foodItemCollectionGetQueryHandlerBase = new MyFoodItemCollectionGetQueryHandler(systemDataRepositoryMock, foodWasteObjectMapperMock, true);

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

            var foodItemCollectionGetQuery = fixture.Build <FoodItemCollectionGetQuery>()
                                             .With(m => m.TranslationInfoIdentifier, Guid.NewGuid())
                                             .With(m => m.FoodGroupIdentifier, null)
                                             .Create();

            foodItemCollectionGetQueryHandlerBase.Query(foodItemCollectionGetQuery);

            foodWasteObjectMapperMock.AssertWasCalled(m => m.Map <IFoodItemCollection, IView>(Arg <IFoodItemCollection> .Is.NotNull, Arg <CultureInfo> .Is.Anything));
        }
        public void TestThatQueryThrowsArgumentNullExceptionWhenQueryIsNull()
        {
            var fixture = new Fixture();
            var systemDataRepositoryMock  = MockRepository.GenerateMock <ISystemDataRepository>();
            var foodWasteObjectMapperMock = MockRepository.GenerateMock <IFoodWasteObjectMapper>();

            var foodItemCollectionGetQueryHandlerBase = new MyFoodItemCollectionGetQueryHandler(systemDataRepositoryMock, foodWasteObjectMapperMock, fixture.Create <bool>());

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

            var exception = Assert.Throws <ArgumentNullException>(() => foodItemCollectionGetQueryHandlerBase.Query(null));

            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("query"));
            Assert.That(exception.InnerException, Is.Null);
        }