public void NullablesToNormal()
        {
            var promotionInput = new PromotionInput {};
            var promotion = new cm.Promotion();

            promotion.InjectFrom<NullablesToNormal>(promotionInput);
            Assert.AreEqual(default(DateTime), promotion.Start);
        }
        public void NormalToNullables()
        {
            var promotion = new Promotion {};
            var promotionInput = new PromotionInput();

            promotionInput.InjectFrom<NormalToNullables>(promotion);

            Assert.AreEqual(null, promotionInput.Start);
        }
        public void EntitiesToIntsTest()
        {
            var promotion = new cm.Promotion { Products = new List<cm.Product> { new cm.Product { Id = 3 }, new cm.Product { Id = 7 } } };

            var promotionInput = new PromotionInput();

            promotionInput.InjectFrom<EntitiesToInts>(promotion);

            Assert.IsNotNull(promotionInput.Products);
            Assert.AreEqual(2, promotionInput.Products.Count());
            Assert.AreEqual(3, promotionInput.Products.First());
        }
        public void IntsToEntities()
        {
            WindsorRegistrar.RegisterSingleton(typeof(IRepo<>), typeof(Repo<>));
            WindsorRegistrar.RegisterSingleton(typeof(IDbContextFactory), typeof(DbContextFactory));
            using (var scope = new TransactionScope())
            {
                var repo = new Repo<cm.Product>(new DbContextFactory());
                var product1 = new cm.Product { Name = "a" };
                var product2 = new cm.Product { Name = "b" };

                product1 = repo.Insert(product1);
                product2 = repo.Insert(product2);
                repo.Save();

                var promotionInput = new PromotionInput { Products = new List<int> { product1.Id, product2.Id } };
                var promotion = new cm.Promotion();

                promotion.InjectFrom<IntsToEntities>(promotionInput);

                Assert.IsNotNull(promotion.Products);
                Assert.AreEqual(2, promotion.Products.Count);
                Assert.AreEqual(product1.Id, promotion.Products.First().Id);
            }
        }