コード例 #1
0
ファイル: QueryTests.cs プロジェクト: yayasoft/Breeze
        public async Task NestedExpand3Levels()
        {
            var em1 = await TestFns.NewEm(_serviceName);

            var q0 = new EntityQuery <Order>().Take(5).Expand("OrderDetails.Product.Category");

            var r0 = await q0.Execute(em1);

            Assert.IsTrue(r0.Count() > 0, "should have returned some orders");
            Assert.IsTrue(r0.All(o => o.OrderDetails.Any(od => od.Product.Category != null)));
        }
コード例 #2
0
ファイル: ComplexTypeTests.cs プロジェクト: iarly/Breeze
        public async Task CheckDefaultValues()
        {
            var em1 = await TestFns.NewEm(_serviceName);

            var supplier    = em1.CreateEntity <Supplier>();
            var companyName = supplier.CompanyName;
            var location    = supplier.Location;

            Assert.IsTrue(location.GetType() == typeof(Location));
            var city = location.City;
        }
コード例 #3
0
        public async Task FkFixup()
        {
            var em1 = await TestFns.NewEm(_serviceName);

            var cust1  = em1.CreateEntity <Customer>(EntityState.Unchanged);
            var order1 = em1.CreateEntity <Order>(EntityState.Unchanged);

            order1.CustomerID = cust1.CustomerID;
            Assert.IsTrue(cust1.Orders.Contains(order1), "should contain order1");
            Assert.IsTrue(order1.Customer == cust1, "customer should be attached");
        }
コード例 #4
0
ファイル: QueryTests.cs プロジェクト: yayasoft/Breeze
        public async Task WithEntityManager()
        {
            var em1 = await TestFns.NewEm(_serviceName);

            var q       = new EntityQuery <Foo.Customer>("Customers");
            var q2      = q.Where(c => c.CompanyName.StartsWith("C"));
            var q3      = q2.OrderBy(c => c.CompanyName).Take(2);
            var results = await q3.With(em1).Execute();

            Assert.IsTrue(results.Count() == 2);
        }
コード例 #5
0
ファイル: NamedQueryTests.cs プロジェクト: iarly/Breeze
        public async Task CustomersStartingWith()
        {
            var em1 = await TestFns.NewEm(_serviceName);

            var q         = new EntityQuery <Customer>("CustomersStartingWith").WithParameter("companyName", "A");
            var rp        = q.GetResourcePath();
            var customers = await q.Execute(em1);

            Assert.IsTrue(customers.Count() > 0, "should be some results");
            Assert.IsTrue(customers.All(c => c.CompanyName.StartsWith("A")));
        }
コード例 #6
0
ファイル: SaveTests.cs プロジェクト: yayasoft/Breeze
        public async Task SaveWithServerExit()
        {
            var em1 = await TestFns.NewEm(_serviceName);

            //  ok(true, "Skipped test - OData does not support server interception or alt resources");
            CreateParentAndChildren(em1);
            var so  = new SaveOptions("SaveWithExit", tag: "exit");
            var sr0 = await em1.SaveChanges(so);

            Assert.IsTrue(sr0.Entities.Count == 0);
        }
コード例 #7
0
ファイル: QueryTests.cs プロジェクト: yayasoft/Breeze
        public async Task NestedExpand()
        {
            var em1 = await TestFns.NewEm(_serviceName);

            var q0 = new EntityQuery <OrderDetail>().Take(5).Expand(od => od.Order.Customer);

            var r0 = await q0.Execute(em1);

            Assert.IsTrue(r0.Count() > 0, "should have returned some orderDetails");
            Assert.IsTrue(r0.All(od => od.Order != null && od.Order.Customer != null));
        }
コード例 #8
0
ファイル: QueryTests.cs プロジェクト: yayasoft/Breeze
        public async Task WhereOrderByTake()
        {
            var em1 = await TestFns.NewEm(_serviceName);

            var q       = new EntityQuery <Foo.Customer>("Customers");
            var q2      = q.Where(c => c.CompanyName.StartsWith("C"));
            var q3      = q2.OrderBy(c => c.CompanyName).Take(2);
            var results = await q3.Execute(em1);

            Assert.IsTrue(results.Count() == 2);
            Assert.IsTrue(results.All(r1 => r1.GetType() == typeof(Foo.Customer)), "should all get customers");
        }
コード例 #9
0
        public async Task AttachDetachReattach()
        {
            var em1 = await TestFns.NewEm(_serviceName);

            var order = em1.CreateEntity <Order>(EntityState.Unchanged);

            Assert.IsTrue(order.EntityAspect.IsAttached && order.EntityAspect.EntityState.IsUnchanged());
            em1.DetachEntity(order);
            Assert.IsTrue(order.EntityAspect.IsDetached);
            em1.AttachEntity(order);
            Assert.IsTrue(order.EntityAspect.IsAttached && order.EntityAspect.EntityState.IsUnchanged());
        }
コード例 #10
0
        public async Task ServerSideProjection()
        {
            var entityManager = await TestFns.NewEm(_serviceName);

            // Query from service that projects User onto UserPartial, omitting the Password property
            var query1 = EntityQuery.From("UserPartials", new {
                Id        = 0L,
                UserName  = "",
                FirstName = "",
                LastName  = "",
                Email     = ""
                            // Even though this works, sending every user's roles seems unwise
                            // Roles = user.UserRoles.Select(ur => ur.Role)
            });
            var users1 = await query1.Execute(entityManager);

            Assert.IsTrue(users1.Any(), "UserPartials query should produce data");
            var user1 = users1.First();

            var usersInCache = entityManager.GetEntities <User>();

            Assert.IsFalse(usersInCache.Any(), "UserPartials query should not have retrieved User entities into cacha");

            var rolesInCache = entityManager.GetEntities <Role>();

            Assert.IsFalse(rolesInCache.Any(), "UserPartials query should not have retrieved Role entities into cacha");

            // Query from similar service that accepts parameter
            var query2 = EntityQuery.From("GetUserById", new {
                Id        = 0L,
                UserName  = "",
                FirstName = "",
                LastName  = "",
                Email     = "",
                // Roles = Enumerable.Empty<Role>()
                RoleNames = ""
                            // Even though this works, sending every user's roles seems unwise
                            // Roles = user.UserRoles.Select(ur => ur.Role)
            }).WithParameter("Id", 3);

            var users2 = await query2.Execute(entityManager);

            Assert.IsTrue(users2.Count() == 1, "GetUserById query should return exactly 1 user");
            var user2 = users2.First();

            var usersInCache2 = entityManager.GetEntities <User>();

            Assert.IsFalse(usersInCache2.Any(), "GetUserById query should not have retrieved User entities into cacha");

            var roleNames = user2.GetPropValue <String>("RoleNames");

            Assert.IsTrue(!String.IsNullOrEmpty(roleNames), "User with Id 3 should have defined roles");
        }
コード例 #11
0
ファイル: QueryTests.cs プロジェクト: yayasoft/Breeze
        public async Task SimpleAnonEntitySelect()
        {
            var em1 = await TestFns.NewEm(_serviceName);

            var q1 = new EntityQuery <Order>().Select(o => new { o.Customer }).Take(5);
            var r1 = await q1.Execute(em1);

            Assert.IsTrue(r1.Count() == 5);
            var ok = r1.All(r => r.Customer.GetType() == typeof(Customer));

            Assert.IsTrue(ok);
        }
コード例 #12
0
ファイル: EntityManagerTests.cs プロジェクト: yayasoft/Breeze
        public async Task LoadNavigationPropertyNonscalar()
        {
            var em1 = await TestFns.NewEm(_serviceName);

            TestFns.RunInWpfSyncContext(async() => {
                var q0 = new EntityQuery <Customer>().Where(c => c.Orders.Any()).Take(3);
                var r0 = await q0.Execute(em1);
                // Task.WaitAll(r0.Select(c => c.EntityAspect.LoadNavigationProperty("Orders")).ToArray());
                await Task.WhenAll(r0.Select(c => c.EntityAspect.LoadNavigationProperty("Orders")));
                Assert.IsTrue(r0.All(c => c.Orders.Count() > 0));
            });
        }
コード例 #13
0
ファイル: QueryTests.cs プロジェクト: yayasoft/Breeze
        public async Task NonGenericQuery()
        {
            var em1 = await TestFns.NewEm(_serviceName);

            var q  = new EntityQuery <Foo.Customer>("Customers");
            var q2 = q.Where(c => c.CompanyName.StartsWith("C")).Take(3);
            var q3 = (EntityQuery)q2;

            var results = await em1.ExecuteQuery(q3);

            Assert.IsTrue(results.Cast <Object>().Count() == 3);
        }
コード例 #14
0
ファイル: EntityManagerTests.cs プロジェクト: yayasoft/Breeze
        public async Task LoadNavigationPropertyScalar()
        {
            var em1 = await TestFns.NewEm(_serviceName);

            TestFns.RunInWpfSyncContext(async() => {
                var q0 = new EntityQuery <Order>().Where(o => o.Customer != null).Take(3);
                var r0 = await q0.Execute(em1);
                // Task.WaitAll(r0.Select(o => o.EntityAspect.LoadNavigationProperty("Customer")).ToArray());
                await Task.WhenAll(r0.Select(o => o.EntityAspect.LoadNavigationProperty("Customer")));
                Assert.IsTrue(r0.All(o => o.Customer != null));
            });
        }
コード例 #15
0
ファイル: LocalQueryTests.cs プロジェクト: iarly/Breeze
        public async Task WithOnlyExpand()
        {
            var em1 = await TestFns.NewEm(_serviceName);

            var q  = new EntityQuery <Customer>().Take(3);
            var r0 = await em1.ExecuteQuery(q);

            var q1 = new EntityQuery <Customer>().Expand("Orders");
            var r1 = q1.ExecuteLocally(em1);

            Assert.IsTrue(r0.Count() == r1.Count());
        }
コード例 #16
0
ファイル: QueryTests.cs プロジェクト: yayasoft/Breeze
        public async Task SimpleAnonEntityCollectionSelect()
        {
            var em1 = await TestFns.NewEm(_serviceName);

            var q1 = new EntityQuery <Customer>().Where(c => c.CompanyName.StartsWith("C")).Select(c => new { c.Orders });
            var r1 = await q1.Execute(em1);

            Assert.IsTrue(r1.Count() > 0);
            var ok = r1.All(r => r.Orders.Count() > 0);

            Assert.IsTrue(ok);
        }
コード例 #17
0
 public async Task Projection() {
   try {
     var entityManager = await TestFns.NewEm(_serviceName);
     // Next line does not work because of MS OData restrictions.
     // var productNames = await new EntityQuery<Product>().Select(p => p.ProductName).Execute(entityManager);
     var productNames = await new EntityQuery<Product>().Select(p => new { p.ProductName }).Execute(entityManager);
     Assert.IsTrue(productNames.Any(), "Projection query should return items");
   } catch (Exception e) {
     var message = TestFns.FormatException(e);
     Assert.Fail(message);
   }
 }
コード例 #18
0
ファイル: QueryTests.cs プロジェクト: yayasoft/Breeze
        public async Task Take0WithInlineCount()
        {
            var em1 = await TestFns.NewEm(_serviceName);

            var q0 = new EntityQuery <Customer>().Take(0).InlineCount();

            var r0 = await q0.Execute(em1);

            Assert.IsTrue(r0.Count() == 0);
            var count = ((IHasInlineCount)r0).InlineCount;

            Assert.IsTrue(count > 0);
        }
コード例 #19
0
ファイル: ExportImportTests.cs プロジェクト: yayasoft/Breeze
        public async Task ExpEntities()
        {
            var em1 = await TestFns.NewEm(_serviceName);

            var q = new EntityQuery <Foo.Customer>("Customers").Take(5);

            var results = await q.Execute(em1);

            Assert.IsTrue(results.Count() > 0);
            var exportedEntities = em1.ExportEntities();

            File.WriteAllText("c:/temp/emExport.txt", exportedEntities);
        }
コード例 #20
0
ファイル: NamedQueryTests.cs プロジェクト: iarly/Breeze
        public async Task CompanyNamesAndIds2()
        {
            var em1 = await TestFns.NewEm(_serviceName);

            var q  = EntityQuery.From("CompanyNamesAndIds", new { CompanyName = "", CustomerID = new Guid() });
            var rp = q.GetResourcePath();
            var companyNamesAndIds = await q.Execute(em1);

            Assert.IsTrue(companyNamesAndIds.Count() > 0, "should be some results");
            Assert.IsTrue(companyNamesAndIds.All(x => {
                return(x.CompanyName.Length > 0 && x.CustomerID != null);
            }));
        }
コード例 #21
0
        public async Task RejectChangesValidationFixup()
        {
            var em1 = await TestFns.NewEm(_serviceName);

            var cust1 = new Customer();

            em1.AttachEntity(cust1);
            Assert.IsTrue(cust1.EntityAspect.ValidationErrors.Count == 1);
            cust1.CompanyName = "valid name";
            Assert.IsTrue(cust1.EntityAspect.ValidationErrors.Count == 0);
            cust1.EntityAspect.RejectChanges();
            Assert.IsTrue(cust1.EntityAspect.ValidationErrors.Count == 1);
        }
コード例 #22
0
        public async Task CreateEntity()
        {
            var em1 = await TestFns.NewEm(_serviceName);

            var emp1 = em1.CreateEntity(typeof(Employee));

            Assert.IsTrue(emp1.EntityAspect.EntityState == EntityState.Added);
            var emp3 = em1.CreateEntity <Employee>(EntityState.Detached);

            emp3.LastName = "Smith";
            Assert.IsTrue(emp3.EntityAspect.EntityState.IsDetached());
            Assert.IsTrue(emp3.LastName == "Smith");
        }
コード例 #23
0
ファイル: QueryTests.cs プロジェクト: yayasoft/Breeze
        public async Task SimpleEntitySelect()
        {
            Assert.Inconclusive("Known issue with OData - use an anon projection instead");
            var em1 = await TestFns.NewEm(_serviceName);

            var q1 = new EntityQuery <Order>().Where(o => true).Select(o => o.Customer).Take(5);
            var r1 = await q1.Execute(em1);

            Assert.IsTrue(r1.Count() == 5);
            var ok = r1.All(r => r.GetType() == typeof(Customer));

            Assert.IsTrue(ok);
        }
コード例 #24
0
ファイル: QueryTests.cs プロジェクト: yayasoft/Breeze
        public async Task QueryWithAddFn()
        {
            var em1 = await TestFns.NewEm(_serviceName);

            var q0 = new EntityQuery <Employee>().Where(e => e.EmployeeID + e.ReportsToEmployeeID.Value > 3);
            var r0 = await q0.Execute(em1);

            Assert.IsTrue(r0.Count() > 0);
            Assert.IsTrue(r0.All(e => e.EmployeeID + e.ReportsToEmployeeID > 3));
            var r1 = q0.ExecuteLocally(em1);

            Assert.IsTrue(r1.Count() == r0.Count());
        }
コード例 #25
0
ファイル: QueryTests.cs プロジェクト: yayasoft/Breeze
        public async Task QueryWithMonthFn()
        {
            var em1 = await TestFns.NewEm(_serviceName);

            var q0 = new EntityQuery <Employee>().Where(e => e.HireDate.Value.Month > 6 && e.HireDate.Value.Month < 11);
            var r0 = await q0.Execute(em1);

            Assert.IsTrue(r0.Count() > 0);
            Assert.IsTrue(r0.All(e => e.HireDate.Value.Month > 6 && e.HireDate.Value.Month < 11));
            var r1 = q0.ExecuteLocally(em1);

            Assert.IsTrue(r1.Count() == r0.Count());
        }
コード例 #26
0
ファイル: LocalQueryTests.cs プロジェクト: iarly/Breeze
        public async Task SimpleQuery()
        {
            var em1 = await TestFns.NewEm(_serviceName);

            var q = new EntityQuery <Customer>();

            var r0 = await em1.ExecuteQuery(q);

            Assert.IsTrue(r0.Cast <Object>().Count() > 0);
            var r1 = q.ExecuteLocally(em1);

            Assert.IsTrue(r0.Count() == r1.Count());
        }
コード例 #27
0
ファイル: LocalQueryTests.cs プロジェクト: iarly/Breeze
        public async Task GuidQuery()
        {
            var em1 = await TestFns.NewEm(_serviceName);

            var q = new EntityQuery <Customer>().Take(3);
            var r = await em1.ExecuteQuery(q);

            Assert.IsTrue(r.Count() == 3, "should be no results");
            var q1 = new EntityQuery <Customer>().Where(c => c.CustomerID.Equals(Guid.NewGuid()));
            var r1 = q1.ExecuteLocally(em1);

            Assert.IsTrue(r1.Count() == 0);
        }
コード例 #28
0
ファイル: SaveTests.cs プロジェクト: yayasoft/Breeze
        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());
        }
コード例 #29
0
        public async Task RemoveFromNavCollection()
        {
            var em1 = await TestFns.NewEm(_serviceName);

            var cust1  = new Customer();
            var order1 = new Order();
            var order2 = new Order();

            em1.AddEntity(cust1);
            var orders = cust1.Orders;

            orders.Add(order1);
            orders.Add(order2);

            var collectionChangedList = new List <NotifyCollectionChangedEventArgs>();

            orders.CollectionChanged += (s, e) => {
                collectionChangedList.Add(e);
            };
            var propChangedList = new List <PropertyChangedEventArgs>();

            ((INotifyPropertyChanged)order1).PropertyChanged += (s, e) => {
                propChangedList.Add(e);
            };
            orders.Remove(order1);
            Assert.IsTrue(collectionChangedList.Last().Action == NotifyCollectionChangedAction.Remove);
            Assert.IsTrue(collectionChangedList.Last().OldItems.Contains(order1), "change event should contain order1");

            Assert.IsTrue(propChangedList.Any(args => args.PropertyName == "Customer"), "propChange should mention Customer");
            Assert.IsTrue(propChangedList.Any(args => args.PropertyName == "CustomerID"), "propChange should mention CustomerID");

            Assert.IsTrue(!orders.Contains(order1), "order1 should have been removed");
            Assert.IsTrue(order1.Customer == null, "Customer should be null");
            Assert.IsTrue(order1.CustomerID == null, "CustomerID should be null"); // null because not required.
            Assert.IsTrue(order1.EntityAspect.EntityState.IsAdded());
            Assert.IsTrue(orders.Count == 1, "count should be 1");

            collectionChangedList.Clear();
            propChangedList.Clear();
            order1.Customer = cust1;
            Assert.IsTrue(collectionChangedList.Last().Action == NotifyCollectionChangedAction.Add);
            Assert.IsTrue(collectionChangedList.Last().NewItems.Contains(order1), "change event should contain order1");
            Assert.IsTrue(propChangedList.Any(args => args.PropertyName == "Customer"), "propChange should mention Customer");
            Assert.IsTrue(propChangedList.Any(args => args.PropertyName == "CustomerID"), "propChange should mention CustomerID");

            Assert.IsTrue(orders.Contains(order1), "order1 should be back");
            Assert.IsTrue(order1.Customer == cust1, "Customer should be back");
            Assert.IsTrue(order1.CustomerID == cust1.CustomerID, "CustomerID should be back"); // null because not required.
            Assert.IsTrue(order1.EntityAspect.EntityState.IsAdded());
            Assert.IsTrue(orders.Count == 2, "count should be 2");
        }
コード例 #30
0
ファイル: ComplexTypeTests.cs プロジェクト: iarly/Breeze
        public async Task QueryByComplexProp()
        {
            var em1 = await TestFns.NewEm(_serviceName);

            var q = new EntityQuery <Supplier>().Where(c => c.Location.City.StartsWith("P") && c.CompanyName != null);
            // var q = new EntityQuery<Supplier>().Where(c => c.CompanyName.StartsWith("P") && c.Location.City != null && c.Location.Address != null);

            var x         = q.GetResourcePath();
            var suppliers = await em1.ExecuteQuery(q);

            Assert.IsTrue(suppliers.Count() > 0, "should have returned some suppliers");
            // Assert.IsTrue(suppliers.All(s => s.Location.City != null && s.Location.Address != null));
            Assert.IsTrue(suppliers.All(s => s.Location.City.StartsWith("P") && s.CompanyName != null), "should match query");
        }