public void CheckEmptyRepositoryDoesNotIncludeFamilyView()
        {
            var repositoryViews = new FamilyQueryRepository();

            var entities = repositoryViews.GetEntities<PersonProjection>();

            entities.Count().ShouldEqual(0);
        }
        public void CheckSimpleInterceptor()
        {
            var repositoryViews = new FamilyQueryRepository(new AdditionalViewsInterceptor());

            // Act
            var entities = repositoryViews.GetEntities<PersonProjection>();
            entities.Count().ShouldEqual(11);
            entities.Any(p => p.AdditionalQueryData != null).ShouldEqual(false);
        }
        public void CheckSimpleInterceptorWithStrategy()
        {
            // Arrange
            var repositoryViews = new FamilyQueryRepository(new AdditionalViewsInterceptor());

            // Act
            var entities = repositoryViews.GetEntities<PersonProjection>(new TakeQueryStrategy(2));

            // Assert
            entities.Count().ShouldEqual(2);
        }
        public void CheckAdditionalDataIsPassedToTheProjection()
        {
            // Arrange
            var repositoryViews = new FamilyQueryRepository(new AdditionalViewsInterceptor());
            var additionQueryData = "Dummy" ;

            // Act
            var entities = repositoryViews.GetEntities<PersonProjection>(additionQueryData);

            // Assert
            entities.Any(p => p.AdditionalQueryData == null).ShouldEqual(false);
        }
        public void CheckSingleQueryEventHandlerThrowExceptionFlagFalse()
        {
            // Arrange
            var eventHandler = new TestRepositoryQueriedEvent();
            var repository   = new FamilyQueryRepository(new QueryEventHandler(eventHandler));

            // Act
            var entity     = repository.GetEntity <Person>(p => p.Id == Names.AimmeOsborne, false);
            var queryEvent = (SimpleRepositoryQueryEvent)eventHandler.QueriedEventList.Single();

            // Assert
            Assert.IsNotNull(entity);
            Assert.IsFalse(queryEvent.ThrowExceptionIfZeroOrManyFound.Value);
        }
        //[Test]
        public void CheckSimpleEntitiesQueryEventHandler()
        {
            // Arrange
            var eventHandler = new TestRepositoryQueriedEvent();
            var repository   = new FamilyQueryRepository(new QueryEventHandler(eventHandler));

            // Act
            repository.GetEntities <Person>();
            var queryEvent = (SimpleRepositoryQueryEvent)eventHandler.QueriedEventList.Single();

            // Assert
            Assert.IsInstanceOf <DefaultQueryStrategy>(queryEvent.QueryStrategy);
            Assert.IsTrue(queryEvent.QueryStrategy == null);
            Assert.IsNull(queryEvent.ThrowExceptionIfZeroOrManyFound);
        }