示例#1
0
        public void Should_be_able_to_search_for_documents()
        {
            var documentA     = _documentFixture.GetDocument(Guid.NewGuid()).SetProperty("property-one", "value-one");
            var documentB     = _documentFixture.GetDocument(Guid.NewGuid()).SetProperty("property-two", "value-two");
            var repository    = new DocumentRepository(DatabaseGateway, new DocumentQueryFactory());
            var query         = new DocumentQuery(QueryMapper, new DocumentQueryFactory());
            var specification = new DocumentStore.DataAccess.Query.Document.Specification()
                                .AddId(documentA.Id)
                                .AddId(documentB.Id);

            using (TransactionScopeFactory.Create())
                using (DatabaseContextFactory.Create())
                {
                    var result = query.Search(specification).ToList();

                    Assert.That(result.Any(), Is.False);

                    repository.Save(documentA);

                    result = query.Search(specification).ToList();

                    Assert.That(result.Count, Is.EqualTo(1));

                    repository.Save(documentB);

                    result = query.Search(specification).ToList();

                    Assert.That(result.Count, Is.EqualTo(2));

                    foreach (var document in result)
                    {
                        Assert.That(document.StatusEvents, Is.Empty);
                        Assert.That(document.Properties, Is.Empty);
                    }

                    result = query.Search(specification.IncludeStatusEvents()).ToList();

                    Assert.That(result.Count, Is.EqualTo(2));

                    foreach (var document in result)
                    {
                        Assert.That(document.StatusEvents, Is.Not.Empty);
                        Assert.That(document.Properties, Is.Empty);
                    }

                    result = query.Search(specification.IncludeProperties()).ToList();

                    Assert.That(result.Count, Is.EqualTo(2));

                    foreach (var document in result)
                    {
                        Assert.That(document.StatusEvents, Is.Not.Empty);
                        Assert.That(document.Properties, Is.Not.Empty);
                    }
                }
        }
示例#2
0
        public void Should_be_able_to_retrieve_same_document_using_either_id_or_reference_id()
        {
            var referenceId = Guid.NewGuid();
            var documentA   = _documentFixture.GetDocument(Guid.NewGuid(), referenceId);
            var documentB   = _documentFixture.GetDocument(Guid.NewGuid(), referenceId);
            var repository  = new DocumentRepository(DatabaseGateway, new DocumentQueryFactory());
            var query       = new DocumentQuery(QueryMapper, new DocumentQueryFactory());

            using (TransactionScopeFactory.Create())
                using (DatabaseContextFactory.Create())
                {
                    repository.Save(documentA);
                    repository.Save(documentB);

                    var result = query.Search(new DocumentStore.DataAccess.Query.Document.Specification().AddId(Guid.NewGuid())).ToList();

                    Assert.That(result.Count, Is.Zero);

                    result = query.Search(new DocumentStore.DataAccess.Query.Document.Specification().AddId(documentA.Id)).ToList();

                    Assert.That(result.Count, Is.EqualTo(1));
                    Assert.That(result[0].Id, Is.EqualTo(documentA.Id));
                    Assert.That(result[0].ReferenceId, Is.EqualTo(referenceId));

                    result = query.Search(new DocumentStore.DataAccess.Query.Document.Specification().AddId(documentB.Id)).ToList();

                    Assert.That(result.Count, Is.EqualTo(1));
                    Assert.That(result[0].Id, Is.EqualTo(documentB.Id));
                    Assert.That(result[0].ReferenceId, Is.EqualTo(referenceId));

                    result = query.Search(new DocumentStore.DataAccess.Query.Document.Specification().AddId(referenceId)).ToList();

                    Assert.That(result.Count, Is.EqualTo(2));

                    result = query.Search(new DocumentStore.DataAccess.Query.Document.Specification().AddId(referenceId).GetActiveOnly()).ToList();

                    Assert.That(result.Count, Is.EqualTo(1));
                    Assert.That(result[0].Id, Is.EqualTo(documentB.Id));
                    Assert.That(result[0].ReferenceId, Is.EqualTo(referenceId));
                }
        }
示例#3
0
 public IAdvancedQueryable <TEntity> Search(string key, string term)
 {
     _queryable = DocumentQuery.Search(key, term).ToQueryable();
     return(this);
 }