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); } } }
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); } } }
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); } } }