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); } } }
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)); } }
public IAdvancedQueryable <TEntity> Search(string key, string term) { _queryable = DocumentQuery.Search(key, term).ToQueryable(); return(this); }