public async Task SaveAdded() { var em1 = await TestFns.NewEm(_serviceName); var supplier = new Supplier(); supplier.CompanyName = "Test-" + TestFns.RandomSuffix(5); var companyName = supplier.CompanyName; supplier.Location = new Location() { Region = "USA", Address = "123 Main Street", City = "San Diego", PostalCode = "12345" }; em1.AddEntity(supplier); var sr = await em1.SaveChanges(); Assert.IsTrue(sr.Entities.Count == 1); var ek = sr.Entities.First().EntityAspect.EntityKey; var _em2 = new EntityManager(em1); var q1 = ek.ToQuery <Supplier>(); var r1 = await q1.Execute(_em2); Assert.IsTrue(r1.Count() == 1); Assert.IsTrue(r1.First().CompanyName == companyName, "should have set the companyName"); Assert.IsTrue(r1.First().Location.City == "San Diego"); Assert.IsTrue(r1.First().Location.PostalCode == "12345"); }
public async Task DeleteTestEntities() { var em1 = await TestFns.NewEm(_serviceName); var supplier = new Supplier(); supplier.CompanyName = "Test-" + TestFns.RandomSuffix(5); var companyName = supplier.CompanyName; supplier.Location = new Location() { Region = "USA", Address = "123 Main Street", City = "San Diego", PostalCode = "12345" }; em1.AddEntity(supplier); var sr = await em1.SaveChanges(); Assert.IsTrue(sr.Entities.Count == 1); var q1 = new EntityQuery <Supplier>().Where(s => s.CompanyName.StartsWith("Test")); var r1 = await em1.ExecuteQuery(q1); Assert.IsTrue(r1.Count() > 0); r1.ForEach(r => r.EntityAspect.Delete()); var sr2 = await em1.SaveChanges(); Assert.IsTrue(sr2.Entities.Count == r1.Count()); Assert.IsTrue(em1.GetEntities().Count() == 0); var r2 = await em1.ExecuteQuery(q1); Assert.IsTrue(r2.Count() == 0); }
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"); }
private TwoCusts CreateParentAndChildren(EntityManager em) { var cust1 = new Customer(); cust1.CompanyName = "Test1_" + TestFns.RandomSuffix(8); cust1.City = "Oakland"; cust1.RowVersion = 13; cust1.Fax = "510 999-9999"; em.AddEntity(cust1); var cust2 = em.CreateEntity <Customer>(); cust2.CompanyName = "Test2_" + TestFns.RandomSuffix(8); cust2.City = "Emeryville"; cust2.RowVersion = 1; cust2.Fax = "510 888-8888"; var order1 = new Order(); order1.OrderDate = DateTime.Today; var order2 = em.CreateEntity <Order>(); order1.OrderDate = DateTime.Today; cust1.Orders.Add(order1); cust1.Orders.Add(order2); Assert.IsTrue(cust1.Orders.Count == 2); Assert.IsTrue(cust2.Orders.Count == 0); return(new TwoCusts() { Cust1 = cust1, Cust2 = cust2 }); }
private Product CreateProduct(EntityManager em) { var product = new Product(); em.AddEntity(product); product.ProductName = "Test.NET_" + TestFns.RandomSuffix(7); return(product); }
//test("save/mods with EntityErrorsException", function () { // if (testFns.DEBUG_ODATA) { // ok(true, "Skipped test - OData does not support server interception or alt resources"); // return; // }; // if (testFns.DEBUG_MONGO) { // ok(true, "Skipped test - Mongo does not YET support server side validation"); // return; // }; // var em = newEm(); // var zzz = createParentAndChildren(em); // var cust1 = zzz.cust1; // stop(); // em.saveChanges().then(function (sr) { // zzz.cust1.setProperty("contactName", "foo"); // zzz.cust2.setProperty("contactName", "foo"); // zzz.order1.setProperty("freight", 888.11); // zzz.order2.setProperty("freight", 888.11); // ok(zzz.cust1.entityAspect.entityState.isModified(), "cust1 should be modified"); // ok(zzz.order1.entityAspect.entityState.isModified(), "order1 should be modified"); // var so = new SaveOptions({ resourceName: "SaveWithEntityErrorsException", tag: "entityErrorsException" }); // return em.saveChanges(null, so); // }).then(function(sr2) { // ok(false, "should not get here"); // }).fail(function (e) { // ok(e.entityErrors, "should have server errors"); // ok(e.entityErrors.length === 2, "2 order entities should have failed"); // ok(zzz.order1.entityAspect.getValidationErrors().length === 1); // var order2Errs = zzz.order2.entityAspect.getValidationErrors(); // ok(order2Errs.length === 1, "should be 1 error for order2"); // ok(order2Errs[0].propertyName === "orderID", "errant property should have been 'orderID'"); // // now save it properly // return em.saveChanges(); // }).then(function (sr) { // ok(sr.entities.length === 4, "should have saved ok"); // }).fail(testFns.handleFail).fin(start); //}); //test("save with client side validation error", function () { // var em = newEm(); // var zzz = createParentAndChildren(em); // var cust1 = zzz.cust1; // cust1.setProperty("companyName", null); // stop(); // em.saveChanges().then(function (sr) { // ok(false, "should not get here"); // }).fail(function (e) { // ok(e.entityErrors, "should be a entityError"); // ok(e.entityErrors.length === 1, "should be only one error"); // ok(!e.entityErrors[0].isServerError, "should NOT be a server error"); // var errors = cust1.entityAspect.getValidationErrors(); // ok(errors[0].errorMessage === errors[0].errorMessage, "error message should appear on the cust"); // }).fin(start); //}); //test("save with server side entity level validation error", function () { // if (testFns.DEBUG_ODATA) { // ok(true, "Skipped test - OData does not support server interception or alt resources"); // return; // }; // if (testFns.DEBUG_MONGO) { // ok(true, "Skipped test - Mongo does not YET support server side validation"); // return; // }; // var em = newEm(); // var zzz = createParentAndChildren(em); // var cust1 = zzz.cust1; // cust1.setProperty("companyName", "error"); // stop(); // em.saveChanges().then(function(sr) { // ok(false, "should not get here"); // }).fail(function (e) { // ok(e.entityErrors, "should be a server error"); // ok(e.entityErrors.length === 1, "should be only one server error"); // var errors = cust1.entityAspect.getValidationErrors(); // ok(errors[0].errorMessage === e.entityErrors[0].errorMessage, "error message should appear on the cust"); // }).fin(start); //}); //test("save with server side entity level validation error + repeat", function () { // if (testFns.DEBUG_ODATA) { // ok(true, "Skipped test - OData does not support server interception or alt resources"); // return; // }; // if (testFns.DEBUG_MONGO) { // ok(true, "Skipped test - Mongo does not YET support server side validation"); // return; // }; // var em = newEm(); // var zzz = createParentAndChildren(em); // var cust1 = zzz.cust1; // cust1.setProperty("companyName", "error"); // stop(); // em.saveChanges().then(function (sr) { // ok(false, "should not get here"); // }).fail(function (e) { // ok(e.entityErrors, "should be a server error"); // ok(e.entityErrors.length === 1, "should be only one server error"); // var errors = cust1.entityAspect.getValidationErrors(); // ok(errors.length === 1, "should only be 1 error"); // ok(errors[0].errorMessage === e.entityErrors[0].errorMessage, "error message should appear on the cust"); // return em.saveChanges(); // }).fail(function(e2) { // ok(e2.entityErrors, "should be a server error"); // ok(e2.entityErrors.length === 1, "should be only one server error"); // var errors = cust1.entityAspect.getValidationErrors(); // ok(errors.length === 1, "should only be 1 error"); // ok(errors[0].errorMessage === e2.entityErrors[0].errorMessage, "error message should appear on the cust"); // }).fin(start); //}); //test("add UserRole", function () { // if (testFns.DEBUG_MONGO) { // ok(true, "TODO for Mongo - needs to be written specifically for Mongo - should succeed in Mongo"); // return; // } // var em = newEm(); // var roleId; // var userId = 6; // var p2 = breeze.Predicate.create("userId", "ne", userId); // var p1 = breeze.Predicate.create("userRoles", "all", p2); // var q = new EntityQuery("Roles").where(p1).take(1); // stop(); // q.using(em).execute().then(function (data) { // ok(data.results.length === 1, "should be one result"); // var role = data.results[0]; // roleId = role.getProperty("id"); // var newUserRole = em.createEntity('UserRole', { // userId: userId, // roleId: roleId // }); // return em.saveChanges(); // }).then(function (sr) { // ok(true, "save succeeded"); // var resultRole = sr.entities[0]; // var roleId2 = resultRole.getProperty("roleId"); // ok(roleId2 === roleId, "roleIds match"); // var userId2 = resultRole.getProperty("userId"); // ok(userId2 === userId, "userIds match"); // // delete entity // resultRole.entityAspect.setDeleted(); // return em.saveChanges(); // }).then(function (sr) { // ok(true, "delete succeeded"); // }).fail(function (e) { // ok(false, "error on save: " + e.message); // }).fail(testFns.handleFail).fin(start); //}); private Order CreateOrder(EntityManager em) { var order = new Order(); em.AddEntity(order); order.ShipName = "Test.NET_" + TestFns.RandomSuffix(7); return(order); }
public async Task RejectChangesAfterSave() { var em1 = await TestFns.NewEm(_serviceName); var supplier = new Supplier(); em1.AddEntity(supplier); supplier.CompanyName = "Test_" + TestFns.RandomSuffix(10); supplier.Location.City = "LA"; var sr1 = await em1.SaveChanges(); Assert.IsTrue(sr1.Entities.Count == 1); Assert.IsTrue(supplier.Location.City == "LA"); var r1 = await supplier.EntityAspect.EntityKey.ToQuery <Supplier>().Execute(em1); Assert.IsTrue(r1.Count() == 1); Assert.IsTrue(r1.First() == supplier); supplier.Location.City = "Fooo"; Assert.IsTrue(supplier.EntityAspect.HasChanges()); supplier.EntityAspect.RejectChanges(); Assert.IsTrue(supplier.Location.City == "LA"); }
public async Task SaveModifiedCpOnly() { 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 sr = await em1.SaveChanges(); Assert.IsTrue(sr.Entities.Count == 1); em1.Clear(); var q1 = new EntityQuery <Supplier>().Where(s => s.Location.PostalCode == val); var r1 = await q1.Execute(em1); Assert.IsTrue(r1.Count() == 1); }