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 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 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 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);
        }