Ejemplo n.º 1
0
        public void Should_Throw_Offset_Cannot_Be_Negative()
        {
            using (var store = GetDocumentStore())
            {
                var index = new Index();
                index.Execute(store);

                using (var session = store.OpenSession())
                {
                    for (int i = 0; i < 10; i++)
                    {
                        session.Store(new User
                        {
                            Name      = $"user_{i}",
                            LastName  = $"lastname_{i}",
                            AddressId = $"Address_{i}",
                            Age       = i
                        });
                    }

                    session.SaveChanges();
                }

                WaitForIndexing(store);
                using (var session = store.OpenSession())
                {
                    var query = session.Query <Index.Result, Index>().Where(x => x.Age > 5);

                    var PageSize = 25;
                    var pageNum  = 1;
                    var query2   = query
                                   .OrderBy(u => u.Name)
                                   .ThenBy(u => u.LastName)
                                   .ThenBy(u => u.AddressId)
                                   .Skip(PageSize * (pageNum - 1))
                                   .Take(PageSize);
                    Assert.Equal("from index 'Index' where Age > $p0 order by Name, LastName, AddressId limit $p1, $p2", query2.ToString());
                    var res = query2.ToArray();
                    Assert.Equal(4, res.Length);

                    pageNum = 0;
                    query2  = query
                              .OrderBy(u => u.Name)
                              .ThenBy(u => u.LastName)
                              .ThenBy(u => u.AddressId)
                              .Skip(PageSize * (pageNum - 1))
                              .Take(PageSize);
                    Assert.Equal("from index 'Index' where Age > $p0 order by Name, LastName, AddressId limit $p1, $p2", query2.ToString());

                    var x = Assert.ThrowsAny <RavenException>(() => query2.ToArray());
                    Assert.Contains("Offset (Start) cannot be negative, but was -25.", x.Message);
                }
            }
        }
Ejemplo n.º 2
0
        public void CanTranslateProperlyIdToMethodWhenLoadDocumentIsUsed()
        {
            using (var store = GetDocumentStore())
            {
                var index           = new Index();
                var indexDefinition = index.CreateIndexDefinition();

                Assert.Contains("CategoryId = Id(this0.category)", indexDefinition.Maps.First());

                index.Execute(store);

                using (var session = store.OpenSession())
                {
                    session.Store(new Product
                    {
                        Id       = "products/1",
                        Name     = "P1",
                        Category = "categories/1"
                    });

                    session.Store(new Category
                    {
                        Id          = "categories/1",
                        Name        = "C1",
                        Description = "D1"
                    });

                    session.SaveChanges();
                }

                WaitForIndexing(store);

                using (var session = store.OpenSession())
                {
                    var products = session
                                   .Advanced
                                   .DocumentQuery <Product, Index>()
                                   .WhereEquals("CategoryId", "categories/1")
                                   .ToList();

                    Assert.Equal(1, products.Count);
                }
            }
        }
Ejemplo n.º 3
0
        public void WaitForIndexesAfterSaveChangesCanExitWhenThrowOnTimeoutIsFalse()
        {
            using (var store = GetDocumentStore())
            {
                var index = new Index();
                index.Execute(store);
                store.Maintenance.Send(new DisableIndexOperation(index.IndexName));

                var indexStats = store.Maintenance.Send(new GetIndexStatisticsOperation(index.IndexName));
                Assert.Equal(IndexState.Disabled, indexStats.State);
                Assert.Equal(IndexRunningStatus.Disabled, indexStats.Status);

                using (var session = store.OpenSession())
                {
                    session.Store(new User
                    {
                        Name = "user1"
                    });
                    session.Advanced.WaitForIndexesAfterSaveChanges(timeout: TimeSpan.FromSeconds(3), throwOnTimeout: false);
                    session.SaveChanges();
                }

                using (var session = store.OpenSession())
                {
                    session.Store(new User
                    {
                        Name = "user1"
                    });
                    session.Advanced.WaitForIndexesAfterSaveChanges(timeout: TimeSpan.FromSeconds(3), throwOnTimeout: true);

                    var error = Assert.Throws <RavenException>(() => session.SaveChanges());
                    Assert.StartsWith("System.TimeoutException", error.Message);
                    Assert.Contains("could not verify that 1 indexes has caught up with the changes as of etag", error.Message);
                }
            }
        }