public async Task SaveModifiedCpAndNonCp()
        {
            var em1 = await TestFns.NewEm(_serviceName);

            var q0 = EntityQuery.From <Supplier>().Where(s => s.CompanyName.StartsWith("P"));
            var r0 = await q0.With(em1).Execute();

            Assert.IsTrue(r0.Count() > 0);
            var supplier = r0.First();
            var val      = "foo-" + TestFns.RandomSuffix(5);
            var oldVal   = supplier.Location.PostalCode;

            Assert.IsTrue(val != oldVal);
            supplier.Location.PostalCode = val;
            var oldCompanyName = supplier.CompanyName;

            supplier.CompanyName = TestFns.MorphString(supplier.CompanyName);
            var newCompanyName = supplier.CompanyName;
            var sr             = await em1.SaveChanges();

            Assert.IsTrue(sr.Entities.Count == 1);
            var _em2 = new EntityManager(em1);
            var q1   = new EntityQuery <Supplier>().Where(s => s.Location.PostalCode == val);
            var r1   = await q1.Execute(_em2);

            Assert.IsTrue(r1.Count() == 1);
            Assert.IsTrue(r1.First().CompanyName == newCompanyName, "should have changed the companyName");
        }
Beispiel #2
0
        public async Task CaptureAddlSavesDoneOnServer()
        {
            var em1 = await TestFns.NewEm(_serviceName);

            //        ok(true, "Skipped test - OData does not support server interception or alt resources");
            //        ok(true, "N/A for Mongo - test not yet implemented - requires server side async call");
            var q = new EntityQuery <Category>().Where(c => c.CategoryName.StartsWith("Beverage")).Expand("Products");
            var r = await q.Execute(em1);

            var category = r.First();
            var products = category.Products;
            var prices   = products.Select(p => p.UnitPrice).ToList();

            category.CategoryName = TestFns.MorphString(category.CategoryName);
            var so = new SaveOptions(tag: "increaseProductPrice");
            var sr = await em1.SaveChanges(null, so);

            Assert.IsTrue(sr.Entities.Count == 13, "should have saved 13 entities + 1 category + 12 products");
            Assert.IsTrue(sr.Entities.OfType <Product>().Count() == 12, "should be 12 products");
            var ek  = category.EntityAspect.EntityKey;
            var em2 = new EntityManager(em1);
            var r2  = await em2.ExecuteQuery(ek.ToQuery <Category>().Expand("Products"));

            var cat2      = r2.First();
            var products2 = cat2.Products;

            var newPrices = products2.Select(p => p.UnitPrice).ToList();

            Assert.IsTrue(!prices.SequenceEqual(newPrices), "prices should have changed");
        }
Beispiel #3
0
        public async Task ExpImpDeleted()
        {
            var em1 = await TestFns.NewEm(_serviceName);

            var c1 = new Customer()
            {
                CompanyName = "Test_1", City = "Oakland", RowVersion = 13, Fax = "510 999-9999"
            };
            var c2 = new Customer()
            {
                CompanyName = "Test_2", City = "Oakland", RowVersion = 13, Fax = "510 999-9999"
            };

            em1.AddEntity(c1);
            em1.AddEntity(c2);
            var sr = await em1.SaveChanges();

            Assert.IsTrue(sr.Entities.Count == 2);
            c1.EntityAspect.Delete();
            c2.CompanyName = TestFns.MorphString(c2.CompanyName);
            var exportedEntities = em1.ExportEntities(null, false);
            var em2 = new EntityManager(em1);

            em2.ImportEntities(exportedEntities);
            var c1x = em2.GetEntityByKey <Customer>(c1.EntityAspect.EntityKey);

            Assert.IsTrue(c1x.EntityAspect.EntityState.IsDeleted(), "should be deleted");
            var c2x = em2.GetEntityByKey <Customer>(c2.EntityAspect.EntityKey);

            Assert.IsTrue(c2x.CompanyName == c2.CompanyName, "company names should match");
        }
Beispiel #4
0
        public async Task SaveModifiedCustomers()
        {
            var em1 = await TestFns.NewEm(_serviceName);

            var q     = new EntityQuery <Customer>("Customers").Where(c => c.CompanyName.StartsWith("A"));
            var custs = await q.Execute(em1);

            Assert.IsTrue(custs.Count() > 0, "should be some results");
            custs.ForEach(c => c.Fax = TestFns.MorphString(c.Fax));
            var saveResult = await em1.SaveChanges();

            Assert.IsTrue(saveResult.Entities.Count == custs.Count());
        }
Beispiel #5
0
        public async Task PartialSave()
        {
            var em1 = await TestFns.NewEm(_serviceName);

            var q      = new EntityQuery <Customer>("Customers").Where(c => c.CompanyName.StartsWith("A"));
            var custsx = await q.Execute(em1);

            var custs = custsx.ToList();

            Assert.IsTrue(custs.Count() > 0, "should be some results");
            custs.ForEach(c => c.Fax = TestFns.MorphString(c.Fax));
            var cust1 = em1.CreateEntity <Customer>();

            cust1.CompanyName = "Test001";
            var cust1Key  = cust1.EntityAspect.EntityKey;
            var order1    = em1.CreateEntity <Order>();
            var order1Key = order1.EntityAspect.EntityKey;

            order1.Customer = cust1;
            var custCount = em1.GetEntities <Customer>().Count();

            Assert.IsTrue(em1.HasChanges(), "hasChanges should be true");
            Assert.IsTrue(em1.GetChanges().Count() > 0, "should have changes");
            var saveResult = await em1.SaveChanges(new IEntity[] { custs[0], cust1, order1 });

            Assert.IsTrue(custs[1].EntityAspect.EntityState.IsModified());
            Assert.IsTrue(saveResult.Entities.Count == 3, "should have returned the correct number of entities");
            Assert.IsTrue(order1Key != order1.EntityAspect.EntityKey, "order1 entityKey should have changed");
            Assert.IsTrue(cust1Key != cust1.EntityAspect.EntityKey, "cust1 entityKey should have changed");
            Assert.IsTrue(order1.Customer == cust1, "cust attachment should be the same");
            Assert.IsTrue(cust1.Orders.Contains(order1), "order attachment should be the same");
            Assert.IsTrue(saveResult.KeyMappings[order1Key] == order1.EntityAspect.EntityKey, "keyMapping for order should be avail");
            Assert.IsTrue(saveResult.KeyMappings[cust1Key] == cust1.EntityAspect.EntityKey, "keyMapping for order should be avail");
            Assert.IsTrue(em1.GetEntities <Customer>().Count() == custCount, "should be the same number of custs");
            Assert.IsTrue(order1.EntityAspect.EntityState.IsUnchanged());
            Assert.IsTrue(cust1.EntityAspect.EntityState.IsUnchanged());
            Assert.IsTrue(em1.HasChanges(), "hasChanges should be true");
            Assert.IsTrue(em1.GetChanges().Count() == custs.Count - 1, "should be some changes left");
        }