Ejemplo n.º 1
0
        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());
        }
Ejemplo n.º 2
0
        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;
                }
            }));
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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());
        }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 6
0
 /// <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));
 }