public void It_should_return_results_ordered_by_the_specified_entity_property()
        {
            // ARRANGE
            IUnitOfWork uow = null;
            var repository = Fixture.CreatePageRepository(out uow);

            for (int i = 0; i < 20; i++)
            {
                var customer = new Customer { FirstName = "Joe" + i, LastName = "Jellybean" + i };
                repository.Add<Customer>(customer);
            }
            uow.SaveChanges();

            // ACT
            var entities = repository.FindAll<Customer, int>(new Specification<Customer>(c => c.LastName.StartsWith("Jellybean")),	// specification
                                                             c => c.Id,
                                                             pageIndex: 1,
                                                             pageSize: 4).ToList();

            // ASSERT
            Assert.AreEqual(4, entities.Count);
            Assert.AreEqual("Jellybean4", entities[0].LastName);
            Assert.AreEqual("Jellybean5", entities[1].LastName);
            Assert.AreEqual("Jellybean6", entities[2].LastName);
            Assert.AreEqual("Jellybean7", entities[3].LastName);
        }
        public void It_should_throw_an_exception()
        {
            // ARRANGE
            Repository repository = Fixture.CreateRepository();

            // ACT
            var newCustomer = new Customer { FirstName = "Joe", LastName = "JellyBean" };	// transient entity

            // ASSERT
            var exception = Assert.Throws<InvalidOperationException>(() => repository.Delete<Customer>(newCustomer));

            Assert.AreEqual("The object cannot be deleted because it was not found in the ObjectStateManager.", exception.Message);
        }
        public void It_should_throw_exception()
        {
            // ARRANGE
            var builder = Fixture.DbContextBuilder;
            var entity = new Customer();					// not of type EntityTypeConfiguration and of non-generic
            var baseType = entity.GetType().BaseType;

            // ASSERT
            var exception = Assert.Throws<InvalidOperationException>(() =>
            {
                // ACT
                var result = builder.IsMappingClass(baseType);
            });
            Assert.AreEqual("This operation is only valid on generic types.", exception.Message);
        }