public void Use_Raven_Db_Embedded_For_Tests()
        {
            var documentStore = new EmbeddableDocumentStore()
            {
                RunInMemory = true
            };

            using (var repos = new RavenDbRepository <RavenTestStringKey>(documentStore))
            {
                repos.Add(new RavenTestStringKey()
                {
                    Name = "Jeff", Age = 33
                });
                repos.Add(new RavenTestStringKey()
                {
                    Name = "Ben", Age = 53
                });                                                           // :)

                var items = repos.GetAll().ToList();

                items.Count.ShouldEqual(2);

                var item2 = repos.Get("RavenTestStringKeys/2");
                // is there a way we could allow them to just pass in 2 or the full string, or is that a bad idea
                item2.Name.ShouldEqual("Ben");
            }
        }
        public void Use_Raven_Db_Embedded_For_Tests_With_Custom_Int_Key()
        {
            var documentStore = new EmbeddableDocumentStore()
            {
                RunInMemory = true
            };

            using (var repos = new RavenDbRepository <RavenTestCustomIntKey, int>(documentStore))
            {
                repos.Add(new RavenTestCustomIntKey()
                {
                    Name = "Jeff", Age = 33
                });
                repos.Add(new RavenTestCustomIntKey()
                {
                    Name = "Ben", Age = 53
                });                                                                // :)

                var items = repos.GetAll().ToList();

                items.Count.ShouldEqual(2);

                // this works but won't work if the primary key is [ClassName]Id instead of just Id
                var item1 = repos.Get(1);
                item1.Name.ShouldEqual("Jeff");

                var item2 = repos.Get(2);
                item2.Name.ShouldEqual("Ben");
            }
        }
Example #3
0
        public void ShouldCreateANoteAndAddTheDate()
        {
            // Arrange
            const string id    = "id";
            var          today = DateTime.Now;
            var          note  = new Note {
                Id = id, Message = "Message"
            };
            var categories = new[] { new Category {
                                         Name = "Important"
                                     } };

            // Depedent-On Component
            var session = Substitute.For <IDocumentSession>();

            // System under Test
            var repository = new RavenDbRepository(session);

            // Act
            repository.Create(note, categories);

            // Assert / Indirect Output
            session.Received().Store(Arg.Is <Note>(n => n.Id == id && n.Added.Date == today.Date));
            session.Received().SaveChanges();
        }
Example #4
0
        public void ShouldLoadAllCateogoriesIfNoIdsWereProvided()
        {
            // Arrange
            var category = new Category {
                Name = "Important"
            };
            var expectedCategories = new List <Category> {
                category
            };

            // Depedent-On Component
            var session = Substitute.For <IDocumentSession>();
            var query   = Substitute.For <IRavenQueryable <Category> >();

            // Indirect Input
            session.Query <Category>().Returns(query);
            query.GetEnumerator().Returns(expectedCategories.GetEnumerator());

            // System under Test
            var repository = new RavenDbRepository(session);

            // Act
            IEnumerable <Category> categories = repository.GetAllCategories(null);

            // Assert
            Assert.That(categories, Is.EquivalentTo(expectedCategories));
            Assert.That(categories.First().Name, Is.EqualTo(category.Name));
        }
Example #5
0
        public void ShouldLoadASubsetOfCategories()
        {
            // Arrange
            var ids      = new[] { "id" };
            var category = new Category {
                Name = "Important"
            };
            var expectedCategories = new[] { category };

            // Depedent-On Component
            var session = Substitute.For <IDocumentSession>();

            // Indirect Input
            session.Load <Category>(ids).Returns(expectedCategories);

            // System under Test
            var repository = new RavenDbRepository(session);

            // Act
            IEnumerable <Category> categories = repository.GetAllCategories(ids);

            // Assert
            Assert.That(categories, Is.EquivalentTo(expectedCategories));
            Assert.That(categories.First().Name, Is.EqualTo(category.Name));
        }
Example #6
0
        public void ShouldReadAll()
        {
            // Arrange
            var note = new NoteWithCategories {
                Message = "Message"
            };
            var expectedNotes = new List <NoteWithCategories> {
                note
            };

            // Depedent-On Component
            var session = Substitute.For <IDocumentSession>();
            var query   = Substitute.For <IRavenQueryable <NoteWithCategories> >();

            // Indirect Input
            session.Query <NoteWithCategories>().Returns(query);
            query.GetEnumerator().Returns(expectedNotes.GetEnumerator());

            // System under Test
            var repository = new RavenDbRepository(session);

            // Act
            IEnumerable <NoteWithCategories> notes = repository.ReadAll();

            // Assert
            Assert.That(notes, Is.EquivalentTo(expectedNotes));
            Assert.That(notes.First().Message, Is.EqualTo(note.Message));
        }
        public void InitializeRavenDbTest()
        {
            RavenDbRepository repository = new RavenDbRepository(this.documentStoreMock.Mock.Object);
            repository.Dispose();

            this.documentStoreMock.Mock.Verify(x => x.Initialize(), Times.Once);
        }
Example #8
0
        public static IRepository BuildRavenDbRepository(DocumentStore document)
        {
            var documentSession        = document.Initialize().OpenSession();
            var buildRavenDbRepository = new RavenDbRepository(/*Pleasure.MockStrictAsObject<IRavenDbSessionFactory>(mock => mock.Setup(r => r.GetCurrent()).Returns(documentSession))*/);

            buildRavenDbRepository.SetProvider(new Lazy <IDocumentSession>(() => documentSession));
            return(buildRavenDbRepository);
        }
        private static BlogQueryService GetBlogQueryService(IDocumentStore documentStore)
        {
            if (documentStore == null)
            {
                throw new ArgumentNullException(nameof(documentStore));
            }

            var repository = new RavenDbRepository(DocumentStore);

            var blogQuery = new BlogQueryService(repository, BlogSettingsLazy.Value);
            return blogQuery;
        }
        public void AddItemTest()
        {
            Item item = new Item("1", "Name");

            this.documentStoreMock.DocumentSession.Mock.Setup(x => x.Store(item));

            using (RavenDbRepository repository = new RavenDbRepository(this.documentStoreMock.Mock.Object))
            {
                repository.Add(item);
            }

            this.documentStoreMock.DocumentSession.Mock.Verify(x => x.Store(item), Times.Once);
        }
Example #11
0
        private static BlogQueryService GetBlogQueryService(IDocumentStore documentStore)
        {
            if (documentStore == null)
            {
                throw new ArgumentNullException(nameof(documentStore));
            }

            var repository = new RavenDbRepository(DocumentStore);

            var blogQuery = new BlogQueryService(repository, BlogSettingsLazy.Value);

            return(blogQuery);
        }
Example #12
0
        public void CreateTest()
        {
            var store = new EmbeddableDocumentStore();
            store.Initialize();

            using (var context = new RavenDbContext(store))
            {
                var target = new RavenDbRepository<Foo>(context);
                var foo = new Foo { Bar = "Foo" };
                target.Insert(foo);

                var actual = target.Single(p => p.Bar == "Foo");

                Assert.IsNotNull(actual);
            }
        }
        public void GetAllItems()
        {
            this.documentStoreMock.DocumentSession.Mock.Setup(x => x.Load<Item>())
                .Returns(new Collection<Item>() { new Item("1", "Path"), new Item("2", "Path2") }.ToArray());

            List<Item> items;
            using (RavenDbRepository repository = new RavenDbRepository(this.documentStoreMock.Mock.Object))
            {
                items = repository.All<Item>().ToList();
            }

            items[0].ExAssert(x => x.Member(m => m.Id).IsEqualTo("1").Member(m => m.Name).IsEqualTo("Path"));
            items[1].ExAssert(x => x.Member(m => m.Id).IsEqualTo("2").Member(m => m.Name).IsEqualTo("Path2"));

            this.documentStoreMock.DocumentSession.Mock.Verify(x => x.Load<Item>());
        }
Example #14
0
        public void RavenDb_Throws_NotSupportedException_When_GenerateKeyOnAdd_Is_Set_False()
        {
            var       ravenDbRepo     = new RavenDbRepository <Contact>();
            Exception actualException = null;

            try
            {
                ravenDbRepo.GenerateKeyOnAdd = false;
            }
            catch (Exception ex)
            {
                actualException = ex;
            }

            actualException.ShouldNotBeNull();
            actualException.ShouldBeOfType <NotSupportedException>();
        }
        public void Use_Raven_Db_Embedded_For_Tests()
        {
            var documentStore = new EmbeddableDocumentStore() {RunInMemory = true};
            using (var repos = new RavenDbRepository<RavenTestStringKey>(documentStore))
            {
                repos.Add(new RavenTestStringKey() {Name = "Jeff", Age = 33});
                repos.Add(new RavenTestStringKey() {Name = "Ben", Age = 53}); // :)

                var items = repos.GetAll().ToList();

                items.Count.ShouldEqual(2);

                var item2 = repos.Get("RavenTestStringKeys/2");
                    // is there a way we could allow them to just pass in 2 or the full string, or is that a bad idea
                item2.Name.ShouldEqual("Ben");
            }
        }
        public void Use_Raven_Db_Embedded_For_Tests_With_Int_Key()
        {
            var documentStore = new EmbeddableDocumentStore() { RunInMemory = true };
            using (var repos = new RavenDbRepository<RavenTestIntKey, int>(documentStore))
            {
                repos.Add(new RavenTestIntKey() {Name = "Jeff", Age = 33});
                repos.Add(new RavenTestIntKey() {Name = "Ben", Age = 53}); // :)

                var items = repos.GetAll().ToList();

                items.Count.ShouldEqual(2);

                // this works but won't work if the primary key is [ClassName]Id instead of just Id
                var item1 = repos.Get(1);
                item1.Name.ShouldEqual("Jeff");

                var item2 = repos.Get(2);
                item2.Name.ShouldEqual("Ben");
            }
        }
Example #17
0
        public void ShouldUpdateANote()
        {
            // Arrange
            const string id   = "123";
            var          note = new Note {
                Id = id, Message = "Message"
            };
            var categories = new[] { new Category {
                                         Name = "Important"
                                     } };

            // Depedent-On Component
            var session = Substitute.For <IDocumentSession>();

            // System under Test
            var repository = new RavenDbRepository(session);

            repository.Update(note, categories);

            // Assert / Indirect Output
            session.Received().Store(Arg.Is <Note>(n => n.Id == id));
            session.Received().SaveChanges();
        }
Example #18
0
        public void ShouldDeleteANote()
        {
            // Arrange
            const string id   = "id";
            var          note = new NoteWithCategories {
                Id = id, Message = "Message"
            };

            // Depedent-On Component
            var session = Substitute.For <IDocumentSession>();

            session.Load <NoteWithCategories>(id).Returns(note);

            // System under Test
            var repository = new RavenDbRepository(session);

            // Act
            repository.Delete(id);

            // Assert / Indirect Output
            session.Received().Delete(Arg.Is(note));
            session.Received().SaveChanges();
        }
Example #19
0
        public void ShouldReadOne()
        {
            // Arrange
            const string id           = "Id";
            var          expectedNote = new NoteWithCategories {
                Id = id, Message = "Message"
            };

            // Depedent-On Component
            var session = Substitute.For <IDocumentSession>();

            // Indirect Input
            session.Load <NoteWithCategories>(Arg.Is(id)).Returns(expectedNote);

            // System under Test
            var repository = new RavenDbRepository(session);

            // Act
            NoteWithCategories note = repository.Read(id);

            // Assert
            Assert.That(note.Message, Is.EqualTo(note.Message));
        }
        protected static IRepository GetRepository()
        {
            var docSession = new DocumentStore
            {
                Url             = "http://localhost:8080/",
                DefaultDatabase = "IncTest",
            };

            docSession.Conventions.AllowQueriesOnId = true;
            docSession.Conventions.MaxNumberOfRequestsPerSession = 1000;
            docSession.Initialize();
            docSession.RegisterListener(new NoStaleQueriesListener());

            var session = docSession.OpenSession();

            var ravenDbRepository = new RavenDbRepository(/*Pleasure.MockAsObject<IRavenDbSessionFactory>(mock =>
                                                           *                               {
                                                           *
                                                           *                                   //mock.Setup(r => r.GetCurrent()).Returns(session);
                                                           *                               })*/);

            ravenDbRepository.SetProvider(new Lazy <IDocumentSession>(() => session));
            return(ravenDbRepository);
        }
        protected override IRepository GetRepository(
            IEnumerable<BlogMeta> blogMetas = null,
            IEnumerable<BlogPost> blogPosts = null)
        {
            var documentStore = EmbeddableDocumentStoreTestFactory.CreateWithData(blogMetas: blogMetas, blogPosts: blogPosts);

            var repository = new RavenDbRepository(documentStore);
            return repository;
        }