public void ShoulMapByNumericComparison() {
            var container = CreateContainer();
            var manager = container.GetService(typeof(IContentStorageManager)) as IContentStorageManager;
            StorageDocument document = new FakeStorageDocument();
            manager.Store(document);

            var reducedRecord = manager.Query<FakeStorageDocument>(x => x.Id == document.Id).Single();

            Assert.Equal(document.Id, reducedRecord.Id);
        }
        public void ShouldStoreAndRetrieveDocumentById() {
            var container = CreateContainer();
            var manager = container.GetService(typeof (IContentStorageManager)) as IContentStorageManager;

            StorageDocument document = new FakeStorageDocument();
            manager.Store(document);

            var returnedDocument = manager.Get<FakeStorageDocument>(document.Id);

            Assert.Equal(document.Id, returnedDocument.Id);
        }
        public void ShouldNotIncrementTheDocumentId() {
            var container = CreateContainer();
            var manager = container.GetService(typeof(IContentStorageManager)) as IContentStorageManager;
            StorageDocument document = new FakeStorageDocument();
            manager.Store(document);

            int documentIdBefore = document.Id;
            manager.Store(document);
            int documentIdAfter = document.Id;

            Assert.Equal(documentIdBefore, documentIdAfter);
        }
        public void ShouldStoreThenStoreDocumentInIndex() {
            var container = CreateContainer();
            var manager = container.GetService(typeof(IContentStorageManager)) as IContentStorageManager;

            StorageDocument document = new FakeStorageDocument();
            manager.Store(document);
            
            var queryStore = container.GetService(typeof(IContentQueryStore)) as FakeContentQueryStore;
            Assert.Equal(1, queryStore._documents.Count);
            Assert.Equal(document.Id, queryStore._documents.Single().Id);

            Assert.Equal(1, queryStore._indexCollection.Count);
        }
        public void ShouldReturnNullWhenRecordIsRemoved() {
            var container = CreateContainer();
            var manager = container.GetService(typeof(IContentStorageManager)) as IContentStorageManager;

            StorageDocument document = new FakeStorageDocument();
            manager.Store(document);

            var returnedDocument = manager.Get<FakeStorageDocument>(document.Id);

            manager.Remove<FakeStorageDocument>(document.Id);

            var returnedDocumentAfterRemove = manager.Get<FakeStorageDocument>(document.Id);

            Assert.NotNull(returnedDocument);
            Assert.Null(returnedDocumentAfterRemove);
        }
        public void ShouldStoreMultipleItemsAndIndexWithJustOneIndexCreated() {
            var container = CreateContainer();
            var manager = container.GetService(typeof(IContentStorageManager)) as IContentStorageManager;

            StorageDocument document1 = new FakeStorageDocument();
            manager.Store(document1);

            StorageDocument document2 = new FakeStorageDocument();
            manager.Store(document2);

            StorageDocument document3 = new FakeStorageDocument();
            manager.Store(document3);

            var queryStore = container.GetService(typeof(IContentQueryStore)) as FakeContentQueryStore;
            Assert.Equal(3, queryStore._documents.Count);
            Assert.Equal(1, queryStore._indexCollection.Count);
        }
        public void ShouldMapByNumericPropertyRange() {
            var container = CreateContainer();
            var manager = container.GetService(typeof(IContentStorageManager)) as IContentStorageManager;
            StorageDocument document1 = new FakeStorageDocument();
            manager.Store(document1);

            StorageDocument document2 = new FakeStorageDocument();
            manager.Store(document2);

            StorageDocument document3 = new FakeStorageDocument();
            manager.Store(document3);
            
            var reducedRecords = manager.Query<FakeStorageDocument>(x => x.Id >= document2.Id).ToList();

            Assert.Equal(2, reducedRecords.Count);
            Assert.Equal(document2.Id, reducedRecords.ElementAt(0).Id);
            Assert.Equal(document3.Id, reducedRecords.ElementAt(1).Id);
        }