Esempio n. 1
0
        private async Task CreateHomepage()
        {
            // Create a homepage with text through repositories as it's simpler
            string   createdBy = "editor";
            DateTime createdOn = DateTime.Today;

            PageRepository repository = CreatePageRepository();

            Page page = _fixture.Create <Page>();

            page.Id             = -1; // should be reset
            page.CreatedBy      = createdBy;
            page.CreatedOn      = createdOn;
            page.LastModifiedBy = createdBy;
            page.LastModifiedOn = createdOn;
            page.Tags           = "homepage";

            Page newPage = await repository.AddNewPageAsync(page);

            _outputHelper.WriteLine($"Created homepage - id: {page.Id}");

            PageVersionRepository pageRepository = CreatePageVersionRepository();
            PageVersion           pageVersion    = await pageRepository.AddNewVersionAsync(newPage.Id, "## This is some markdown\nAnd some **bold** text", "editor");

            _outputHelper.WriteLine($"Created homepage version - id: {pageVersion.Id}");
        }
        public async void AllVersions()
        {
            // given
            PageVersionRepository repository = CreateRepository();
            List <PageVersion>    pages      = CreateTenPages(repository);

            // when
            IEnumerable <PageVersion> allVersions = await repository.AllVersionsAsync();

            // then
            allVersions.Count().ShouldBe(pages.Count);
            allVersions.Last().Text.ShouldNotBeEmpty();
        }
        public async Task GetById()
        {
            // given
            PageVersionRepository repository   = CreateRepository();
            List <PageVersion>    pageVersions = CreateTenPages(repository);
            PageVersion           pageVersion  = pageVersions[0];

            // when
            PageVersion latestVersion = await repository.GetByIdAsync(pageVersion.Id);

            // then
            Assert.NotNull(latestVersion);
            latestVersion.ShouldNotBeNull();
            latestVersion.ShouldBeEquivalent(pageVersion);
        }
        public async Task GetLatestVersions()
        {
            // given
            PageVersionRepository repository   = CreateRepository();
            List <PageVersion>    pageVersions = CreateTenPages(repository);

            int         pageId   = pageVersions[0].PageId;
            PageVersion version2 = await repository.AddNewVersionAsync(pageId, "v2 text", "editedBy", DateTime.Today.AddMinutes(10));

            PageVersion version3 = await repository.AddNewVersionAsync(pageId, "v3 text", "editedBy", DateTime.Today.AddMinutes(30));

            // when
            PageVersion latestVersion = await repository.GetLatestVersionAsync(pageId);

            // then
            latestVersion.ShouldNotBeNull();
            latestVersion.ShouldBeEquivalent(version3);
        }
        public async void AddNewVersion()
        {
            // given
            PageVersionRepository repository   = CreateRepository();
            List <PageVersion>    pages        = CreateTenPages(repository);
            PageVersion           expectedPage = pages.Last();
            await repository.AddNewVersionAsync(expectedPage.PageId, "v2 text", "brian");

            // when
            PageVersion thirdVersion = await repository.AddNewVersionAsync(expectedPage.PageId, "v3 text", "author2");

            // then
            thirdVersion.ShouldNotBeNull();

            PageVersion savedVersion = await repository.GetByIdAsync(thirdVersion.Id);

            savedVersion.ShouldNotBeNull();
            savedVersion.ShouldBeEquivalent(thirdVersion);
        }
        public async Task FindPageVersionsByAuthor_should_be_case_insensitive_and_return_versions_sorted_by_date_desc()
        {
            // given
            PageVersionRepository repository   = CreateRepository();
            List <PageVersion>    pageVersions = CreateTenPages(repository);

            string      editedBy = "shakespeare jr";
            PageVersion version2 = await repository.AddNewVersionAsync(pageVersions[0].PageId, "v2 text", editedBy);

            PageVersion version3 = await repository.AddNewVersionAsync(pageVersions[1].PageId, "v3 text", editedBy);

            // when
            IEnumerable <PageVersion> actualPageVersions = await repository.FindPageVersionsByAuthorAsync("SHAKESPEARE jr");

            // then
            actualPageVersions.Count().ShouldBe(2);
            actualPageVersions.ShouldContain(p => p.Id == version2.Id);
            actualPageVersions.ShouldContain(p => p.Id == version3.Id);
        }
        public async Task UpdateExistingVersion()
        {
            // given
            PageVersionRepository repository   = CreateRepository();
            List <PageVersion>    pageVersions = CreateTenPages(repository);

            PageVersion newVersion = pageVersions[0];

            newVersion.Text   = "some new text";
            newVersion.Author = "blake";

            // when
            await repository.UpdateExistingVersionAsync(newVersion);

            // then
            PageVersion savedVersion = await repository.GetByIdAsync(newVersion.Id);

            savedVersion.ShouldNotBeNull();
            savedVersion.ShouldBeEquivalent(newVersion);
        }
        private List <PageVersion> CreateTenPages(PageVersionRepository repository)
        {
            IDocumentStore documentStore  = DocumentStoreManager.GetMartenDocumentStore(typeof(PageVersionRepository), _outputHelper);
            var            pageRepository = new PageRepository(documentStore);

            List <Page> pages = _fixture.CreateMany <Page>(10).ToList();

            var pageVersions = new List <PageVersion>();

            foreach (Page page in pages)
            {
                string   text     = _fixture.Create <string>();
                string   author   = _fixture.Create <string>();
                DateTime dateTime = DateTime.Today;

                Page        newPage     = pageRepository.AddNewPageAsync(page).GetAwaiter().GetResult();
                PageVersion pageVersion = repository.AddNewVersionAsync(newPage.Id, text, author, dateTime).GetAwaiter().GetResult();
                pageVersions.Add(pageVersion);
            }

            return(pageVersions);
        }
        public async void DeleteVersion()
        {
            // given
            PageVersionRepository repository = CreateRepository();
            List <PageVersion>    pages      = CreateTenPages(repository);

            var expectedPage = pages[0];
            var version2     = await repository.AddNewVersionAsync(expectedPage.PageId, "v2", "author2");

            var version3 = await repository.AddNewVersionAsync(expectedPage.PageId, "v3", "author2");

            // when
            await repository.DeleteVersionAsync(version3.Id);

            // then
            var deletedVersion = await repository.GetByIdAsync(version3.Id);

            deletedVersion.ShouldBeNull();

            var latestVersion = await repository.GetByIdAsync(version2.Id);

            latestVersion.ShouldNotBeNull();
        }
        public async Task FindPageVersionsByPageId_should_return_versions_sorted_by_date_desc()
        {
            // given
            PageVersionRepository repository = CreateRepository();
            List <PageVersion>    pages      = CreateTenPages(repository);

            var firstPage = pages[0];
            var version2  = await repository.AddNewVersionAsync(firstPage.PageId, "v2", "author1", DateTime.Today.AddMinutes(10));

            var version3 = await repository.AddNewVersionAsync(firstPage.PageId, "v3", "author2", DateTime.Today.AddMinutes(20));

            var version4 = await repository.AddNewVersionAsync(firstPage.PageId, "v4", "author3", DateTime.Today.AddMinutes(30));

            // when
            IEnumerable <PageVersion> versions = await repository.FindPageVersionsByPageIdAsync(firstPage.PageId);

            // then
            versions.ShouldNotBeNull();
            versions.ShouldNotBeEmpty();
            versions.Count().ShouldBe(4);
            versions.First().ShouldBeEquivalent(version4);
            versions.Last().ShouldBeEquivalent(firstPage);
        }