public void ShouldNotFailIfOnNullDocumentRowsFromCouchDb() { var dbApiMock = new Mock <IDatabaseApi>(); dbApiMock .Setup(a => a.Query(It.IsAny <ViewQuery>())) .Returns( (ViewQuery query) => new ViewQueryResult(query: query, rows: new[] { new ViewResultRow( new object[] { "key1", 0 }.ToJsonFragment(), new { Title = "Object title", Subject = "some" }.ToJsonFragment(), null, null ) }, totalCount: 1, offset: 0).ToTask <IViewQueryResult>() ); var session = new CouchSession(Default.Settings, Mock.Of <ICouchApi>(c => c.Db("testdb") == dbApiMock.Object)); IViewQueryResult <Entity> queryResult = session.Synchronously.Query <Entity>(new ViewQuery { IncludeDocs = true }); Assert.Equal(1, queryResult.Count); Assert.Equal(1, queryResult.Count()); Assert.Null(queryResult.First()); }
internal static ViewQuery GetNextPageQuery(IViewQueryResult queryResult) { return(NextPageQueries.GetOrAdd( queryResult, r => { if (queryResult.Count == queryResult.TotalCount || queryResult.Count == 0) { return null; } else { var nextPageQuery = queryResult.Query.Clone(); var lastItem = queryResult.Rows.Last(); nextPageQuery.Skip = 1; if (nextPageQuery.StartKey != null) { nextPageQuery.StartKey = lastItem.Key; } if (lastItem.DocumentId.HasValue()) { nextPageQuery.StartDocumentId = lastItem.DocumentId; } return nextPageQuery; } })); }
public void ShouldBindDocumentsCorrectly() { Entity entity = Entity.CreateStandard(); var dbApiMock = new Mock <IDatabaseApi>(MockBehavior.Loose); dbApiMock .Setup(ca => ca.Query(It.IsAny <ViewQuery>())) .Returns( (ViewQuery query) => new ViewQueryResult( query, new[] { new ViewResultRow( Entity.StandardDocId.ToJsonFragment(), new { rev = Entity.StandardRevision }.ToJsonFragment(), Entity.StandardDocId, Entity.CreateDocWithRevision() ) }, totalCount: 1, offset: 0 ).ToTask <IViewQueryResult>() ); var session = new CouchSession(Default.Settings, Mock.Of <ICouchApi>(c => c.Db("testdb") == dbApiMock.Object)); IViewQueryResult <Entity> queryResult = session.Synchronously.Query <Entity>(new ViewQuery { ViewName = "_all_docs", IncludeDocs = true }); Entity firstRow = queryResult.First(); Assert.NotNull(firstRow); Assert.Equal(Entity.StandardEntityId, firstRow.Id); Assert.Equal(Entity.StandardRevision, firstRow.Revision); Assert.Equal(entity.Age, firstRow.Age); Assert.Equal(entity.Date, firstRow.Date); Assert.Equal(entity.Name, firstRow.Name); }
public void ShouldNotFailIfOnNullValueRowsFromCouchDB() { var dbApiMock = new Mock <IDatabaseApi>(); dbApiMock .Setup(a => a.Query(It.IsAny <ViewQuery>())) .Returns( (ViewQuery query) => new ViewQueryResult(query: query, rows: new[] { new ViewResultRow( new object[] { "key1", 0 }.ToJsonFragment(), null, Entity.StandardDocId, Entity.CreateDocWithRevision() ) }, totalCount: 1, offset: 0).ToTask <IViewQueryResult>() ); var session = new CouchSession(Default.Settings, Mock.Of <ICouchApi>(c => c.Db("testdb") == dbApiMock.Object)); IViewQueryResult <ViewData> queryResult = session.Synchronously.Query <ViewData>(new ViewQuery()); Assert.Equal(1, queryResult.Count); Assert.Equal(1, queryResult.Count()); Assert.Null(queryResult.First()); }
public void ShouldMapEntitiesIfTypeIsCompatible() { var dbApiMock = new Mock <IDatabaseApi>(); dbApiMock .Setup(a => a.Query(It.IsAny <ViewQuery>())) .Returns( (ViewQuery q) => new ViewQueryResult(query: q, rows: new[] { new ViewResultRow( new object[] { "key1", 0 }.ToJsonFragment(), new { Title = "Object title", Subject = "some" }.ToJsonFragment(), Entity.StandardDocId, Entity.CreateDocWithRevision() ) }, totalCount: 1, offset: 0).ToTask <IViewQueryResult>() ); var session = new CouchSession(Default.Settings, Mock.Of <ICouchApi>(c => c.Db("testdb") == dbApiMock.Object)); IViewQueryResult <Entity> queryResult = session.Synchronously.Query <Entity>(new ViewQuery { IncludeDocs = true }); Assert.NotNull(queryResult); Assert.Equal(1, queryResult.Count); Assert.Equal(1, queryResult.TotalCount); Entity row = queryResult.First(); Assert.NotNull(row); Assert.Equal(Entity.StandardEntityId, row.Id); Assert.Equal(Entity.StandardRevision, row.Revision); }
/// <summary>Converts untyped query result ot typed one.</summary> public static IViewQueryResult <T> OfType <T>(this IViewQueryResult result, Func <IEnumerable <ViewResultRow>, IEnumerable <T> > rowConvertor) { return(new ViewQueryResult <T>(result.Query, result.Rows, result.Count, result.TotalCount, result.Offset, rowConvertor)); }