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"); }
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"); }
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.FindEntityByKey <Customer>(c1.EntityAspect.EntityKey); Assert.IsTrue(c1x.EntityAspect.EntityState.IsDeleted(), "should be deleted"); var c2x = em2.FindEntityByKey <Customer>(c2.EntityAspect.EntityKey); Assert.IsTrue(c2x.CompanyName == c2.CompanyName, "company names should match"); }
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()); }
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"); }
public async Task SaveCustomersAndNewOrder() { await _emTask; 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 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(); Assert.IsTrue(saveResult.Entities.Count == custs.Count() + 2, "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() == false, "hasChanges should be false"); Assert.IsTrue(_em1.GetChanges().Count() == 0, "should be no changes left"); }