Exemplo n.º 1
0
        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");
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
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");
        }
Exemplo n.º 4
0
        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
            });
        }
Exemplo n.º 5
0
        private Product CreateProduct(EntityManager em)
        {
            var product = new Product();

            em.AddEntity(product);
            product.ProductName = "Test.NET_" + TestFns.RandomSuffix(7);
            return(product);
        }
Exemplo n.º 6
0
        //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);
        }
Exemplo n.º 7
0
        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");
        }
Exemplo n.º 8
0
        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);
        }