Example #1
0
        public void CanStoreOneCustomizationInTwoProducts()
        {
            long customizationId;

            using (var session = sessionFactory.OpenSession())
                using (var tx = session.BeginTransaction())
                {
                    var customizationRepository = new Repository <Customization>(session);
                    var customization           = new Customization {
                        Name = "Milk", PossibleValues = { "skim", "semi", "whole" }
                    };
                    customizationRepository.MakePersistent(customization);
                    customizationId = customization.Id;

                    var productRepository = new Repository <Product>(session);
                    productRepository.MakePersistent(new Product
                    {
                        Name           = "Coffee 3",
                        Price          = 10.4m,
                        Customizations = { customization }
                    });
                    productRepository.MakePersistent(new Product {
                        Name = "Coffee 4", Price = 5.4m, Customizations = { customization }
                    });

                    tx.Commit();
                }

            using (var session = sessionFactory.OpenSession())
            {
                new Repository <Product>(session)
                .Retrieve(p => p.Customizations.Any(c => c.Id == customizationId))
                .Count().Should().Be.EqualTo(2);
            }
        }
        public void InitializeData()
        {
            using (var session = sessionFactory.OpenSession())
              using (var tx = session.BeginTransaction())
              {
            var milk = new Customization
                   {
                     Name = "Milk",
                     PossibleValues = {"skim", "semi", "whole"}
                   };

            var size = new Customization
                   {
                     Name = "Size",
                     PossibleValues = {"small", "medium", "large"}
                   };

            var shots = new Customization
                    {
                      Name = "Shots",
                      PossibleValues = {"single", "double", "triple"}
                    };

            var whippedCream = new Customization
                           {
                             Name = "Whipped Cream",
                             PossibleValues = {"yes", "no"}
                           };

            var kindOfCookie = new Customization
                           {
                             Name = "Kind",
                             PossibleValues = {"chocolate chip", "ginger"}
                           };

            var customizationRepository = new Repository<Customization>(session);
            customizationRepository.MakePersistent(milk, size, shots, whippedCream, kindOfCookie);
            var productRepository = new Repository<Product>(session);

            var coffees = new[] {"Latte", "Capuccino", "Espresso", "Tea"}
              .Select(
            coffeName =>
            new Product {Name = coffeName, Price = (decimal) coffeName.First()/10, Customizations = {milk, size, shots}})
              .ToArray();

            productRepository.MakePersistent(coffees);

            productRepository.MakePersistent(new Product
                                         {
                                           Name = "Hot Chocolate",
                                           Price = 10.5m,
                                           Customizations = {milk, size, whippedCream}
                                         });
            productRepository.MakePersistent(new Product {Name = "Cookie", Price = 1, Customizations = {kindOfCookie}});
            tx.Commit();
              }
        }
Example #3
0
        public void CanStoreAProduct()
        {
            //Database.SetInitializer(new DropCreateDatabaseAlways<CoffeeShopContext>());
            long id;
            using (var session = m_sessionFactory.OpenSession())
            using (var tx = session.BeginTransaction())
            {
                var repository = new Repository<Product>(session);
                var product = new Product
                {
                    Name = "Coffee 1",
                    Price = 10.4m
                };

                repository.MakePersistent(product);
                id = product.Id;
                tx.Commit();
            }

            using (var session = m_sessionFactory.OpenSession())
            using (session.BeginTransaction())
            {
                var repository = new Repository<Product>(session);
                Product product = repository.GetById(id);

                product.Satisfy(p => p.Name == "Coffee 1" && p.Price == 10.4m);
            }
        }
Example #4
0
        public void CanStoreAProduct()
        {
            //Database.SetInitializer(new DropCreateDatabaseAlways<CoffeeShopContext>());
            long id;

            using (var session = sessionFactory.OpenSession())
                using (var tx = session.BeginTransaction())
                {
                    var repository = new Repository <Product>(session);
                    var product    = new Product
                    {
                        Name  = "Coffee 1",
                        Price = 10.4m
                    };

                    repository.MakePersistent(product);
                    id = product.Id;
                    tx.Commit();
                }

            using (var session = sessionFactory.OpenSession())
                using (session.BeginTransaction())
                {
                    var     repository = new Repository <Product>(session);
                    Product product    = repository.GetById(id);

                    product.Satisfy(p => p.Name == "Coffee 1" && p.Price == 10.4m);
                }
        }
Example #5
0
        public void CanStoreOneCustomizationInTwoProducts()
        {
            long customizationId;
            using (var session = m_sessionFactory.OpenSession())
            using (var tx = session.BeginTransaction())
            {
                var customizationRepository = new Repository<Customization>(session);
                var customization = new Customization { Name = "Milk", PossibleValues = { "skim", "semi", "whole" } };
                customizationRepository.MakePersistent(customization);
                customizationId = customization.Id;

                var productRepository = new Repository<Product>(session);
                productRepository.MakePersistent(new Product
                {
                    Name = "Coffee 3",
                    Price = 10.4m,
                    Customizations = { customization }
                });
                productRepository.MakePersistent(new Product { Name = "Coffee 4", Price = 5.4m, Customizations = { customization } });

                tx.Commit();
            }

            using (var session = m_sessionFactory.OpenSession())
            {
                new Repository<Product>(session)
                    .Retrieve(p => p.Customizations.Any(c => c.Id == customizationId))
                    .Count().Should().Be.EqualTo(2);
            }
        }
Example #6
0
        public void CanStoreTwoProducts()
        {
            using (var session = sessionFactory.OpenSession())
                using (var tx = session.BeginTransaction())
                {
                    var repository = new Repository <Product>(session);

                    repository.MakePersistent(new Product {
                        Name = "Coffee 3", Price = 10.4m
                    });
                    repository.MakePersistent(new Product {
                        Name = "Coffee 4", Price = 5.4m
                    });

                    tx.Commit();
                }
        }
Example #7
0
        public void InsertingShouldWork()
        {
            var cudGroup = new Repository<Group>(connectionString);
            var entity = new Group{Name = "Test", Description = "Abcd"};
            cudGroup.MakePersistent(entity);

            mongoDb.GetCollection(MongoDbConstants.Collections.Groups)
                .FindOneById(entity.Id.Value.ToBson())
                .Should().Not.Be.Null();
        }
Example #8
0
        public void CanStoreAOrder()
        {
            long id;

            using (var session = sessionFactory.OpenSession())
                using (var tx = session.BeginTransaction())
                {
                    var productRepository = new Repository <Product>(session);
                    var product           = new Product {
                        Name = "Latte", Price = 10.4m
                    };
                    productRepository.MakePersistent(product);

                    var orderRepository = new Repository <Order>(session);
                    var order           = new Order
                    {
                        Date     = new DateTime(2011, 1, 1),
                        Location = Location.InShop
                    };

                    order.AddItem(new OrderItem
                    {
                        Product     = product,
                        UnitPrice   = 10.4m,
                        Preferences =
                        {
                            { "Milk", "skim"  },
                            { "Size", "small" }
                        }
                    });

                    order.AddItem(new OrderItem
                    {
                        Product     = product,
                        UnitPrice   = 10.4m,
                        Preferences = { { "Shots", "single" } }
                    });

                    orderRepository.MakePersistent(order);
                    id = order.Id;
                    tx.Commit();
                }

            using (var context = sessionFactory.OpenSession())
            {
                var repository = new Repository <Order>(context);
                var order      = repository.GetById(id);
                order.Satisfy(o => o.Location == Location.InShop &&
                              o.Items.Count() == 2 &&
                              o.Items.Any(i => i.Preferences.ContainsKey("Shots")) &&
                              o.Items.Any(i => i.Preferences.ContainsKey("Milk") && i.Preferences.ContainsKey("Size")));
            }
        }
Example #9
0
        public void InsertingShouldWork()
        {
            var cudGroup = new Repository <Group>(connectionString);
            var entity   = new Group {
                Name = "Test", Description = "Abcd"
            };

            cudGroup.MakePersistent(entity);

            mongoDb.GetCollection(MongoDbConstants.Collections.Groups)
            .FindOneById(entity.Id.Value.ToBson())
            .Should().Not.Be.Null();
        }
Example #10
0
        public void VersionNumberGrowOnEachUpdate()
        {
            long id;
            int  version;

            using (var session = sessionFactory.OpenSession())
                using (var tx = session.BeginTransaction())
                {
                    var productRepository = new Repository <Product>(session);
                    var product           = new Product {
                        Name = "Latte", Price = 10.4m
                    };
                    productRepository.MakePersistent(product);

                    var orderRepository = new Repository <Order>(session);
                    var order           = new Order
                    {
                        Date     = new DateTime(2011, 1, 1),
                        Location = Location.InShop,
                    };
                    order.AddItem(new OrderItem
                    {
                        Product     = product,
                        UnitPrice   = 10.4m,
                        Preferences =
                        {
                            { "Milk", "skim"  },
                            { "Size", "small" }
                        }
                    });
                    orderRepository.MakePersistent(order);
                    order.Pay("1234", "jose");
                    id = order.Id;

                    tx.Commit();
                    version = order.Version;
                }
            using (var session = sessionFactory.OpenSession())
                using (var tx = session.BeginTransaction())
                {
                    var order = session.Get <Order>(id);
                    order.Location = Location.TakeAway;
                    tx.Commit();

                    order.Version.Should().Be.GreaterThan(version);
                }
        }
Example #11
0
 public void CanStoreACustomization()
 {
     long customizationId;
     using (var session = m_sessionFactory.OpenSession())
     using(var tx = session.BeginTransaction())
     {
         var repository = new Repository<Customization>(session);
         var customization = new Customization { Name = "Milk", PossibleValues = { "skim", "semi", "whole" } };
         repository.MakePersistent(customization);
         customizationId = customization.Id;
         tx.Commit();
     }
     using (var session = m_sessionFactory.OpenSession())
     {
         var repository = new Repository<Customization>(session);
         Customization readed = repository.GetById(customizationId);
         readed.Satisfy(c => c.Name == "Milk" && c.PossibleValues.SequenceEqual(new[] { "skim", "semi", "whole" }));
     }
 }
        public void CanStoreAnOrderWithPayment()
        {
            long id;
              using (var session = sessionFactory.OpenSession())
              using (var tx = session.BeginTransaction())
              {
            var productRepository = new Repository<Product>(session);
            var product = new Product {Name = "Latte", Price = 10.4m};
            productRepository.MakePersistent(product);

            var orderRepository = new Repository<Order>(session);
            var order = new Order
                    {
                      Date = new DateTime(2011, 1, 1),
                      Location = Location.InShop,
                    };
            order.AddItem(new OrderItem
                      {
                        Product = product,
                        UnitPrice = 10.4m,
                        Preferences =
                          {
                            {"Milk", "skim"},
                            {"Size", "small"}
                          }
                      });
            orderRepository.MakePersistent(order);
            order.Pay("1234", "jose");
            id = order.Id;
            tx.Commit();
              }

              using (var context = sessionFactory.OpenSession())
              {
            var repository = new Repository<Order>(context);
            var order = repository.GetById(id);
            order.Satisfy(o => o.Location == Location.InShop
                           && o.Items.Count() == 1
                           && o.Payment != null);
              }
        }
Example #13
0
        public void CanChangeStatus()
        {
            long id;

            using (var session = sessionFactory.OpenSession())
                using (var tx = session.BeginTransaction())
                {
                    var productRepository = new Repository <Product>(session);
                    var product           = new Product {
                        Name = "Latte", Price = 10.4m
                    };
                    productRepository.MakePersistent(product);

                    var orderRepository = new Repository <Order>(session);
                    var order           = new Order
                    {
                        Date     = new DateTime(2011, 1, 1),
                        Location = Location.InShop,
                    };
                    order.AddItem(new OrderItem
                    {
                        Product     = product,
                        UnitPrice   = 10.4m,
                        Preferences =
                        {
                            { "Milk", "skim"  },
                            { "Size", "small" }
                        }
                    });
                    orderRepository.MakePersistent(order);
                    order.Cancel("cascasas");
                    id = order.Id;
                    tx.Commit();
                }
            using (var session = sessionFactory.OpenSession())
                using (session.BeginTransaction())
                {
                    session.Get <Order>(id).Status.Should().Be.EqualTo(OrderStatus.Canceled);
                }
        }
Example #14
0
        public void CanStoreACustomization()
        {
            long customizationId;

            using (var session = sessionFactory.OpenSession())
                using (var tx = session.BeginTransaction())
                {
                    var repository    = new Repository <Customization>(session);
                    var customization = new Customization {
                        Name = "Milk", PossibleValues = { "skim", "semi", "whole" }
                    };
                    repository.MakePersistent(customization);
                    customizationId = customization.Id;
                    tx.Commit();
                }
            using (var session = sessionFactory.OpenSession())
            {
                var           repository = new Repository <Customization>(session);
                Customization readed     = repository.GetById(customizationId);
                readed.Satisfy(c => c.Name == "Milk" && c.PossibleValues.SetEquals(new[] { "skim", "semi", "whole" }));
            }
        }
        public void CanChangeStatus()
        {
            long id;
              using (var session = sessionFactory.OpenSession())
              using (var tx = session.BeginTransaction())
              {
            var productRepository = new Repository<Product>(session);
            var product = new Product {Name = "Latte", Price = 10.4m};
            productRepository.MakePersistent(product);

            var orderRepository = new Repository<Order>(session);
            var order = new Order
                    {
                      Date = new DateTime(2011, 1, 1),
                      Location = Location.InShop,
                    };
            order.AddItem(new OrderItem
                      {
                        Product = product,
                        UnitPrice = 10.4m,
                        Preferences =
                          {
                            {"Milk", "skim"},
                            {"Size", "small"}
                          }
                      });
            orderRepository.MakePersistent(order);
            order.Cancel("cascasas");
            id = order.Id;
            tx.Commit();
              }
              using (var session = sessionFactory.OpenSession())
              using (session.BeginTransaction())
              {
            session.Get<Order>(id).Status.Should().Be.EqualTo(OrderStatus.Canceled);
              }
        }
Example #16
0
        public void CanStoreAOrder()
        {
            long id;
            using (var session = m_sessionFactory.OpenSession())
            using(var tx = session.BeginTransaction())
            {
                var productRepository = new Repository<Product>(session);
                var product = new Product { Name = "Latte", Price = 10.4m };
                productRepository.MakePersistent(product);

                var orderRepository = new Repository<Order>(session);
                var order = new Order
                {
                    Date = new DateTime(2011, 1, 1),
                    Location = Location.InShop
                };

                order.AddItem(new OrderItem
                                  {
                                      Product = product,
                                      UnitPrice = 10.4m,
                                      Preferences =
                                          {
                                              {"Milk", "skim"},
                                              {"Size", "small"}
                                          }
                                  });

                order.AddItem(new OrderItem
                                {
                                    Product = product,
                                    UnitPrice = 10.4m,
                                    Preferences = { { "Shots", "single" } }
                                });

                orderRepository.MakePersistent(order);
                id = order.Id;
                tx.Commit();
            }

            using (var context = m_sessionFactory.OpenSession())
            {
                var repository = new Repository<Order>(context);
                var order = repository.GetById(id);
                order.Satisfy(a_o => a_o.Location == Location.InShop
                                && a_o.Items.Count() == 2
                                && a_o.Items.Any(a_i => a_i.Preferences.ContainsKey("Shots"))
                                && a_o.Items.Any(a_i => a_i.Preferences.ContainsKey("Milk") && a_i.Preferences.ContainsKey("Size")));
            }
        }
        public void VersionNumberGrowOnEachUpdate()
        {
            long id;
              int version;
              using (var session = sessionFactory.OpenSession())
              using (var tx = session.BeginTransaction())
              {
            var productRepository = new Repository<Product>(session);
            var product = new Product {Name = "Latte", Price = 10.4m};
            productRepository.MakePersistent(product);

            var orderRepository = new Repository<Order>(session);
            var order = new Order
                    {
                      Date = new DateTime(2011, 1, 1),
                      Location = Location.InShop,
                    };
            order.AddItem(new OrderItem
                      {
                        Product = product,
                        UnitPrice = 10.4m,
                        Preferences =
                          {
                            {"Milk", "skim"},
                            {"Size", "small"}
                          }
                      });
            orderRepository.MakePersistent(order);
            order.Pay("1234", "jose");
            id = order.Id;

            tx.Commit();
            version = order.Version;
              }
              using (var session = sessionFactory.OpenSession())
              using (var tx = session.BeginTransaction())
              {
            var order = session.Get<Order>(id);
            order.Location = Location.TakeAway;
            tx.Commit();

            order.Version.Should().Be.GreaterThan(version);
              }
        }
Example #18
0
        public void InitializeData()
        {
            using (var session = sessionFactory.OpenSession())
                using (var tx = session.BeginTransaction())
                {
                    var milk = new Customization
                    {
                        Name           = "Milk",
                        PossibleValues = { "skim", "semi", "whole" }
                    };

                    var size = new Customization
                    {
                        Name           = "Size",
                        PossibleValues = { "small", "medium", "large" }
                    };

                    var shots = new Customization
                    {
                        Name           = "Shots",
                        PossibleValues = { "single", "double", "triple" }
                    };

                    var whippedCream = new Customization
                    {
                        Name           = "Whipped Cream",
                        PossibleValues = { "yes", "no" }
                    };

                    var kindOfCookie = new Customization
                    {
                        Name           = "Kind",
                        PossibleValues = { "chocolate chip", "ginger" }
                    };


                    var customizationRepository = new Repository <Customization>(session);
                    customizationRepository.MakePersistent(milk, size, shots, whippedCream, kindOfCookie);
                    var productRepository = new Repository <Product>(session);

                    var coffees = new[] { "Latte", "Capuccino", "Espresso", "Tea" }
                    .Select(
                        coffeName =>
                        new Product {
                        Name = coffeName, Price = (decimal)coffeName.First() / 10, Customizations = { milk, size, shots }
                    })
                    .ToArray();

                    productRepository.MakePersistent(coffees);

                    productRepository.MakePersistent(new Product
                    {
                        Name           = "Hot Chocolate",
                        Price          = 10.5m,
                        Customizations = { milk, size, whippedCream }
                    });
                    productRepository.MakePersistent(new Product {
                        Name = "Cookie", Price = 1, Customizations = { kindOfCookie }
                    });
                    tx.Commit();
                }
        }
Example #19
0
        public void CanStoreTwoProducts()
        {
            using (var session = m_sessionFactory.OpenSession())
            using (var tx = session.BeginTransaction())
            {
                var repository = new Repository<Product>(session);

                repository.MakePersistent(new Product { Name = "Coffee 3", Price = 10.4m });
                repository.MakePersistent(new Product { Name = "Coffee 4", Price = 5.4m });

                tx.Commit();
            }
        }