public async Task TestSaveChanges(string actionName)
        {
            var serviceProvider = CreateServiceProvider();
            var em = serviceProvider.GetService <BreezeEntityManager>();

            em.SetSessionProvider(serviceProvider.GetService <ISessionProvider>());
            var order = em.CreateEntity <Order>();

            order.Name           = "test";
            order.Active         = true;
            order.Status         = OrderStatus.Delivered;
            order.TotalPrice     = 10.3m;
            order.Address.City   = "City";
            order.Address.Street = "Street";

            var compositeOrder = new CompositeOrder(1999, 1, "A")
            {
                TotalPrice = 10.8m
            };

            em.SetAdded(compositeOrder);

            var jObject = await PostAsync <JObject>(actionName, em.GetSaveBundle());

            var entities = jObject.Property("Entities").Value.Value <JArray>();

            Assert.Equal(2, entities.Count);

            var keyMappings = jObject.Property("KeyMappings").Value.Value <JArray>().ToObject <List <KeyMapping> >();
            var keyMapping  = Assert.Single(keyMappings);

            Assert.NotNull(keyMapping);
            order = em.Get <Order>(keyMapping.RealValue);
            Assert.NotNull(order);

            em.Clear();
            em.SetDeleted(order);
            em.SetDeleted(compositeOrder);

            jObject = await PostAsync <JObject>(actionName, em.GetSaveBundle());

            var deletedKeys = jObject.Property("DeletedKeys").Value.Value <JArray>().ToObject <List <EntityKey> >();

            Assert.Equal(2, deletedKeys.Count);
        }
Example #2
0
        protected virtual void FillDatabase(ISession session)
        {
            var products = new Product[10];

            for (var i = 0; i < 10; i++)
            {
                var product = new Product {
                    Name = $"Product{i}", Category = i % 2 == 0 ? "paper" : null
                };
                products[i] = product;
                session.Save(product);
            }

            for (var i = 0; i < 10; i++)
            {
                var person = new Person {
                    Name = $"Person{i}"
                };
                var passport = new Passport
                {
                    Country        = $"Country{i}",
                    ExpirationDate = DateTime.UtcNow.AddYears(10),
                    Number         = 123456 + i,
                    Owner          = person
                };
                person.Passport = passport;
                var card = new IdentityCard {
                    Code = $"Code{i}", Owner = person
                };
                person.IdentityCard = card;

                session.Save(person);
                session.Save(card);
            }

            for (var i = 0; i < 10; i++)
            {
                var order = new Order
                {
                    Name   = $"Order{i}",
                    Active = true,
                    Status = OrderStatus.Delivered
                };
                for (var j = 0; j < 10; j++)
                {
                    order.Products.Add(new OrderProduct
                    {
                        Order      = order,
                        Product    = products[(i + j) % 10],
                        TotalPrice = 10,
                        Quantity   = 1
                    });
                    order.FkProducts.Add(new OrderProductFk
                    {
                        Order      = order,
                        Product    = products[(i + j) % 10],
                        TotalPrice = 10,
                        Quantity   = 1
                    });
                }

                session.Save(order);

                var compositeOrder = new CompositeOrder
                {
                    Status     = $"Status{i}",
                    Number     = i,
                    Year       = 2000,
                    TotalPrice = 15.8m
                };
                for (var j = 0; j < 10; j++)
                {
                    compositeOrder.CompositeOrderRows.Add(new CompositeOrderRow
                    {
                        CompositeOrder = compositeOrder,
                        Product        = products[(i + j) % 10],
                        Price          = (int)(i * j),
                        Quantity       = i + j
                    });
                }

                session.Save(compositeOrder);

                var parentDog = new Dog
                {
                    Name       = $"Dog{i}",
                    BirthDate  = DateTime.UtcNow.AddYears(-10),
                    BodyWeight = 14.8,
                    Pregnant   = true,
                };
                session.Save(parentDog);
                var parentCat = new Cat
                {
                    Name       = $"Cat{i}",
                    BirthDate  = DateTime.UtcNow.AddYears(-10),
                    BodyWeight = 19.8,
                    Pregnant   = false,
                };
                session.Save(parentCat);

                for (var j = 0; j < 10; j++)
                {
                    var hasParent = j % 2 == 0;
                    var dog       = new Dog
                    {
                        Name       = $"Dog{j}",
                        BirthDate  = DateTime.UtcNow.AddYears(-(i + j)),
                        BodyWeight = 14.8,
                        Parent     = hasParent ? parentDog : null
                    };
                    session.Save(dog);
                    if (hasParent)
                    {
                        parentDog.Children.Add(dog);
                    }

                    var cat = new Cat
                    {
                        Name       = $"Cat{j}",
                        BirthDate  = DateTime.UtcNow.AddYears(-(i + j)),
                        BodyWeight = 14.8,
                        Parent     = hasParent ? parentCat : null
                    };
                    session.Save(cat);
                    if (hasParent)
                    {
                        parentCat.Children.Add(cat);
                    }
                }
            }
        }