Exemplo n.º 1
0
        public void allpagescreatedby_should_add_to_cache_when_cache_is_empty()
        {
            // Arrange
            string adminCacheKey = CacheKeys.AllPagesCreatedByKey("admin");

            SettingsRepositoryMock settingsRepository = new SettingsRepositoryMock();
            PageRepositoryMock     pageRepository     = new PageRepositoryMock();

            pageRepository.AddNewPage(new Page()
            {
                Title = "1"
            }, "text", "admin", DateTime.UtcNow);
            pageRepository.AddNewPage(new Page()
            {
                Title = "2"
            }, "text", "admin", DateTime.UtcNow);
            pageRepository.AddNewPage(new Page()
            {
                Title = "3"
            }, "text", "editor", DateTime.UtcNow);

            CacheMock   listCache   = new CacheMock();
            PageService pageService = CreatePageService(null, listCache, settingsRepository, pageRepository);

            // Act
            pageService.AllPagesCreatedBy("admin");

            // Assert
            Assert.That(listCache.CacheItems.Count, Is.EqualTo(1));
            Assert.That(listCache.CacheItems.FirstOrDefault().Key, Is.EqualTo(adminCacheKey));
        }
Exemplo n.º 2
0
        public void alltags_should_add_to_cache_when_cache_is_empty()
        {
            // Arrange
            SettingsRepositoryMock settingsRepository = new SettingsRepositoryMock();
            PageRepositoryMock     pageRepository     = new PageRepositoryMock();

            pageRepository.AddNewPage(new Page()
            {
                Tags = "tag1;tag2"
            }, "text", "admin", DateTime.UtcNow);
            pageRepository.AddNewPage(new Page()
            {
                Tags = "tag3;tag4"
            }, "text", "admin", DateTime.UtcNow);

            CacheMock   listCache   = new CacheMock();
            PageService pageService = CreatePageService(null, listCache, settingsRepository, pageRepository);

            // Act
            pageService.AllTags();

            // Assert
            Assert.That(listCache.CacheItems.Count, Is.EqualTo(1));
            Assert.That(listCache.CacheItems.FirstOrDefault().Key, Is.EqualTo(CacheKeys.AllTags()));
        }
Exemplo n.º 3
0
        public void AllPages_Should_Add_To_Cache_When_Cache_Is_Empty(bool loadPageContent)
        {
            // Arrange
            string cacheKey = (loadPageContent) ? (CacheKeys.AllPagesWithContent()) : (CacheKeys.AllPages());

            SettingsRepositoryMock settingsRepository = new SettingsRepositoryMock();
            PageRepositoryMock     pageRepository     = new PageRepositoryMock();

            pageRepository.AddNewPage(new Page()
            {
                Title = "1"
            }, "text", "admin", DateTime.UtcNow);
            pageRepository.AddNewPage(new Page()
            {
                Title = "2"
            }, "text", "admin", DateTime.UtcNow);

            CacheMock   listCache   = new CacheMock();
            PageService pageService = CreatePageService(null, listCache, settingsRepository, pageRepository);

            // Act
            pageService.AllPages(loadPageContent);

            // Assert
            Assert.That(listCache.CacheItems.Count, Is.EqualTo(1));
            Assert.That(listCache.CacheItems.FirstOrDefault().Key, Is.EqualTo(cacheKey));
        }
Exemplo n.º 4
0
        public void findbytag_should_add_to_cache_when_cache_is_empty()
        {
            // Arrange
            string cacheKey = CacheKeys.PagesByTagKey("tag1");

            SettingsRepositoryMock settingsRepository = new SettingsRepositoryMock();
            PageRepositoryMock     pageRepository     = new PageRepositoryMock();

            pageRepository.AddNewPage(new Page()
            {
                Title = "1", Tags = "tag1"
            }, "text", "admin", DateTime.UtcNow);
            pageRepository.AddNewPage(new Page()
            {
                Title = "2", Tags = "tag2"
            }, "text", "admin", DateTime.UtcNow);
            pageRepository.AddNewPage(new Page()
            {
                Title = "2", Tags = "tag3"
            }, "text", "admin", DateTime.UtcNow);

            CacheMock   listCache   = new CacheMock();
            PageService pageService = CreatePageService(null, listCache, settingsRepository, pageRepository);

            // Act
            pageService.FindByTag("tag1");

            // Assert
            Assert.That(listCache.CacheItems.Count, Is.EqualTo(1));
            Assert.That(listCache.CacheItems.FirstOrDefault().Key, Is.EqualTo(cacheKey));
        }
Exemplo n.º 5
0
        public void clearpages_should_set_tempdata_message_and_clear_cache_and_clear_all_pages()
        {
            // Arrange
            _pageRepository.AddNewPage(new Page()
            {
                Id = 1
            }, "text", "admin", DateTime.UtcNow);
            _pageRepository.AddNewPage(new Page()
            {
                Id = 2
            }, "text", "admin", DateTime.UtcNow);

            _pageCache.Add(1, new PageViewModel());
            _listCache.Add("list.somekey", new List <string>());
            _siteCache.AddMenu("should not be cleared");

            // Act
            RedirectToRouteResult result = _toolsController.ClearPages() as RedirectToRouteResult;

            // Assert
            Assert.That(result, Is.Not.Null, "RedirectToRouteResult");
            Assert.That(result.RouteValues["action"], Is.EqualTo("Index"));

            Assert.That(_toolsController.TempData["SuccessMessage"], Is.EqualTo(SiteStrings.SiteSettings_Tools_ClearDatabase_Message));
            Assert.That(_cache.Count(), Is.EqualTo(1));
            Assert.That(_pageRepository.AllPages().Count(), Is.EqualTo(0));
        }
Exemplo n.º 6
0
        public void put_should_update_page()
        {
            // Arrange
            DateTime version1Date = DateTime.Today.AddDays(-1);             // stops the getlatestcontent acting up when add+update are the same time

            Page page = new Page();

            page.Title      = "Hello world";
            page.Tags       = "tag1, tag2";
            page.CreatedOn  = version1Date;
            page.ModifiedOn = version1Date;
            PageContent pageContent = _pageRepositoryMock.AddNewPage(page, "Some content1", "editor", version1Date);

            PageViewModel model = new PageViewModel(pageContent.Page);

            model.Title      = "New title";
            model.Content    = "Some content2";
            model.ModifiedOn = DateTime.UtcNow;

            // Act
            _pagesController.Put(model);

            // Assert
            Assert.That(_pageService.AllPages().Count(), Is.EqualTo(1));

            PageViewModel actualPage = _pageService.GetById(1, true);

            Assert.That(actualPage.Title, Is.EqualTo("New title"));
            Assert.That(actualPage.Content, Is.EqualTo("Some content2"));
        }
Exemplo n.º 7
0
        public void updatepage_should_remove_homepage_from_cache_when_homepage_is_updated()
        {
            // Arrange
            SettingsRepositoryMock settingsRepository = new SettingsRepositoryMock();
            PageRepositoryMock     pageRepository     = new PageRepositoryMock();

            pageRepository.AddNewPage(new Page()
            {
                Tags = "homepage"
            }, "text", "admin", DateTime.UtcNow);

            CacheMock   pageCache   = new CacheMock();
            CacheMock   listCache   = new CacheMock();
            PageService pageService = CreatePageService(pageCache, listCache, settingsRepository, pageRepository);

            PageViewModel homepageModel = CreatePageViewModel();

            homepageModel.RawTags = "homepage";
            pageCache.Add(CacheKeys.HomepageKey(), homepageModel, new CacheItemPolicy());

            // Act
            pageService.UpdatePage(homepageModel);

            // Assert
            Assert.That(pageCache.CacheItems.Count, Is.EqualTo(0));
        }
Exemplo n.º 8
0
        public void renametag_should_clear_listcache()
        {
            // Arrange
            string tag1CacheKey = CacheKeys.PagesByTagKey("tag1");
            SettingsRepositoryMock settingsRepository = new SettingsRepositoryMock();
            PageRepositoryMock     pageRepository     = new PageRepositoryMock();

            pageRepository.AddNewPage(new Page()
            {
                Tags = "homepage, tag1"
            }, "text1", "admin", DateTime.UtcNow);

            CacheMock     listCache     = new CacheMock();
            PageViewModel homepageModel = CreatePageViewModel();
            PageViewModel page1Model    = CreatePageViewModel();

            AddListCacheItem(listCache, tag1CacheKey, new List <PageViewModel>()
            {
                homepageModel, page1Model
            });

            PageService pageService = CreatePageService(null, listCache, settingsRepository, pageRepository);

            // Act
            pageService.RenameTag("tag1", "some.other.tag");             // calls UpdatePage, which clears the cache

            // Assert
            Assert.That(listCache.CacheItems.Count, Is.EqualTo(0));
        }
Exemplo n.º 9
0
        public void deletepage_should_clear_list_and_pagesummary_caches()
        {
            // Arrange
            SettingsRepositoryMock settingsRepository = new SettingsRepositoryMock();
            PageRepositoryMock     pageRepository     = new PageRepositoryMock();

            pageRepository.AddNewPage(new Page(), "text", "admin", DateTime.UtcNow);
            CacheMock pageCache = new CacheMock();
            CacheMock listCache = new CacheMock();

            PageService   pageService   = CreatePageService(pageCache, listCache, settingsRepository, pageRepository);
            PageViewModel expectedModel = CreatePageViewModel();

            AddPageCacheItem(pageCache, "key", expectedModel);
            AddListCacheItem(listCache, "key", new List <string>()
            {
                "tag1", "tag2"
            });

            // Act
            pageService.DeletePage(1);

            // Assert
            Assert.That(pageCache.CacheItems.Count, Is.EqualTo(0));
            Assert.That(listCache.CacheItems.Count, Is.EqualTo(0));
        }
Exemplo n.º 10
0
        /// <summary>
        /// Adds a page to the mock repository (which is just a list of Page and PageContent objects in memory).
        /// </summary>
        public PageViewModel AddToMockedRepository(int id, string createdBy, string title, string tags, DateTime createdOn, string textContent = "")
        {
            Page page = new Page();

            page.Id        = id;
            page.CreatedBy = createdBy;
            page.Title     = title;
            page.Tags      = tags;
            page.CreatedOn = createdOn;

            if (string.IsNullOrEmpty(textContent))
            {
                textContent = title + "'s text";
            }

            PageContent   content = _pageRepository.AddNewPage(page, textContent, createdBy, createdOn);
            PageViewModel model   = new PageViewModel()
            {
                Id        = id,
                Title     = title,
                Content   = textContent,
                RawTags   = tags,
                CreatedBy = createdBy,
                CreatedOn = createdOn
            };

            return(model);
        }
Exemplo n.º 11
0
        public void external_links_with_anchor_tag_should_retain_the_anchor()
        {
            // Issue #172
            // Arrange
            _settingsRepository.SiteSettings.MarkupType = "Creole";
            _pageRepository.AddNewPage(new Page()
            {
                Id = 1, Title = "foo"
            }, "foo", "admin", DateTime.Today);
            _markupConverter = new MarkupConverter(_applicationSettings, _settingsRepository, _pageRepository, _pluginFactory);

            string expectedHtml = "<p><a rel=\"nofollow\" href=\"http://www.google.com/?blah=xyz#myanchor\" class=\"external-link\">Some link text</a>\n</p>";

            // Act
            string actualHtml = _markupConverter.ToHtml("[[http://www.google.com/?blah=xyz#myanchor|Some link text]]");

            // Assert
            Assert.That(actualHtml, Is.EqualTo(expectedHtml), actualHtml);
        }
Exemplo n.º 12
0
        public void updatepage_should_clear_list_cache_and_pagesummary_cache()
        {
            // Arrange
            SettingsRepositoryMock settingsRepository = new SettingsRepositoryMock();
            PageRepositoryMock     pageRepository     = new PageRepositoryMock();

            pageRepository.AddNewPage(new Page()
            {
                Tags = "homepage"
            }, "text", "admin", DateTime.UtcNow);
            pageRepository.AddNewPage(new Page()
            {
                Tags = "tag2"
            }, "text", "admin", DateTime.UtcNow);

            CacheMock   pageCache   = new CacheMock();
            CacheMock   listCache   = new CacheMock();
            PageService pageService = CreatePageService(pageCache, listCache, settingsRepository, pageRepository);

            PageViewModel homepageModel = CreatePageViewModel();

            homepageModel.Id = 1;
            PageViewModel page2Model = CreatePageViewModel();

            page2Model.Id = 2;

            AddPageCacheItem(pageCache, CacheKeys.HomepageKey(), homepageModel);
            pageCache.Add(CacheKeys.PageViewModelKey(2, 0), page2Model, new CacheItemPolicy());
            AddListCacheItem(listCache, CacheKeys.AllTags(), new List <string>()
            {
                "tag1", "tag2"
            });

            // Act
            pageService.UpdatePage(page2Model);

            // Assert
            Assert.That(pageCache.CacheItems.Count, Is.EqualTo(1));
            Assert.That(listCache.CacheItems.Count, Is.EqualTo(0));
        }
Exemplo n.º 13
0
        public void pagetoolbar_should_return_partialview()
        {
            // Arrange
            _pageRepository.AddNewPage(new Page()
            {
                Title = "Title"
            }, "text", "admin", DateTime.UtcNow);

            // Act
            ActionResult result = _wikiController.PageToolbar(1);

            // Assert
            PartialViewResult partialResult = result.AssertResultIs <PartialViewResult>();

            partialResult.AssertPartialViewRendered();
        }
Exemplo n.º 14
0
        public void internal_links_should_resolve_with_id()
        {
            // Bug #87

            // Arrange
            Page page = new Page()
            {
                Id = 1, Title = "My first page"
            };

            var settingsRepository = new SettingsRepositoryMock();

            settingsRepository.SiteSettings = new SiteSettings()
            {
                MarkupType = "Markdown"
            };

            PageRepositoryMock pageRepositoryStub = new PageRepositoryMock();

            pageRepositoryStub.AddNewPage(page, "My first page", "admin", DateTime.UtcNow);

            ApplicationSettings settings = new ApplicationSettings();

            settings.Installed = true;

            UrlResolverMock resolver = new UrlResolverMock();

            resolver.InternalUrl = "blah";
            MarkupConverter converter = new MarkupConverter(settings, settingsRepository, pageRepositoryStub, _pluginFactory);

            converter.UrlResolver = resolver;

            string markdownText        = "[Link](My-first-page)";
            string invalidMarkdownText = "[Link](My first page)";

            // Act
            string expectedHtml            = "<p><a href=\"blah\">Link</a></p>\n";
            string expectedInvalidLinkHtml = "<p>[Link](My first page)</p>\n";

            string actualHtml            = converter.ToHtml(markdownText);
            string actualHtmlInvalidLink = converter.ToHtml(invalidMarkdownText);

            // Assert
            Assert.That(actualHtml, Is.EqualTo(expectedHtml));
            Assert.That(actualHtmlInvalidLink, Is.EqualTo(expectedInvalidLinkHtml));
        }
Exemplo n.º 15
0
        public void should_replace_markdown_with_internal_link()
        {
            // Arrange
            string menuMarkup   = "* [First link](my-page)\r\n";
            string expectedHtml = "<ul><li><a href=\"/wiki/1/my-page\">First link</a></li></ul>";

            _settingsRepository.SiteSettings.MenuMarkup = menuMarkup;

            _pageRepository.AddNewPage(new Page()
            {
                Title = "my page", Id = 1
            }, "text", "user", DateTime.Now);

            // Act
            string actualHtml = _menuParser.GetMenu();

            // Assert
            Assert.That(actualHtml, Is.EqualTo(expectedHtml));
        }
Exemplo n.º 16
0
        public void compareversions_has_last_two_versions()
        {
            // Arrange
            DateTime createdDate = DateTime.Today.AddDays(-1);
            Page page = NewPage("admin");
            PageContent v1Content = _pageRepository.AddNewPage(page, "v1 text", "admin", createdDate);
            PageContent v2Content = _pageRepository.AddNewPageContentVersion(page, "v2 text", "admin", createdDate.AddHours(1), 2);
            PageContent v3Content = _pageRepository.AddNewPageContentVersion(page, "v3 text", "admin", createdDate.AddHours(2), 3);
            PageContent v4Content = _pageRepository.AddNewPageContentVersion(page, "v4 text", "admin", createdDate.AddHours(3), 4);

            // Act
            List<PageViewModel> versionList = _historyService.CompareVersions(v4Content.Id).ToList();

            // Assert
            Assert.That(versionList.Count, Is.EqualTo(2));
            Assert.That(versionList[0].Id, Is.EqualTo(v3Content.Page.Id));
            Assert.That(versionList[1].Id, Is.EqualTo(v4Content.Page.Id));
        }
Exemplo n.º 17
0
        public void findhomepage_should_add_to_cache_when_cache_is_empty()
        {
            // Arrange
            SettingsRepositoryMock settingsRepository = new SettingsRepositoryMock();
            PageRepositoryMock     pageRepository     = new PageRepositoryMock();

            pageRepository.AddNewPage(new Page()
            {
                Title = "1", Tags = "homepage"
            }, "text", "admin", DateTime.UtcNow);

            CacheMock   pageCache   = new CacheMock();
            PageService pageService = CreatePageService(pageCache, null, settingsRepository, pageRepository);

            // Act
            pageService.FindHomePage();

            // Assert
            Assert.That(pageCache.CacheItems.Count, Is.EqualTo(1));
            Assert.That(pageCache.CacheItems.FirstOrDefault().Key, Is.EqualTo(CacheKeys.HomepageKey()));
        }
Exemplo n.º 18
0
        private WikiController CreateWikiController(BrowserCacheAttribute attribute)
        {
            // Settings
            ApplicationSettings appSettings = new ApplicationSettings()
            {
                Installed = true, UseBrowserCache = true
            };
            UserContextStub userContext = new UserContextStub()
            {
                IsLoggedIn = false
            };

            // PageService
            PageViewModelCache pageViewModelCache = new PageViewModelCache(appSettings, CacheMock.RoadkillCache);
            ListCache          listCache          = new ListCache(appSettings, CacheMock.RoadkillCache);
            SiteCache          siteCache          = new SiteCache(CacheMock.RoadkillCache);
            SearchServiceMock  searchService      = new SearchServiceMock(appSettings, _settingsRepository, _pageRepository, _pluginFactory);
            PageHistoryService historyService     = new PageHistoryService(appSettings, _settingsRepository, _pageRepository, userContext, pageViewModelCache, _pluginFactory);
            PageService        pageService        = new PageService(appSettings, _settingsRepository, _pageRepository, searchService, historyService, userContext, listCache, pageViewModelCache, siteCache, _pluginFactory);

            // WikiController
            SettingsService settingsService = new SettingsService(new RepositoryFactoryMock(), appSettings);
            UserServiceStub userManager     = new UserServiceStub();
            WikiController  wikiController  = new WikiController(appSettings, userManager, pageService, userContext, settingsService);

            // Create a page that the request is for
            Page page = new Page()
            {
                Title = "title", ModifiedOn = _pageModifiedDate
            };

            _pageRepository.AddNewPage(page, "text", "user", _pageCreatedDate);

            // Update the BrowserCacheAttribute
            attribute.ApplicationSettings = appSettings;
            attribute.Context             = userContext;
            attribute.PageService         = pageService;

            return(wikiController);
        }
Exemplo n.º 19
0
        public void images_should_support_dimensions_and_titles()
        {
            // Arrange
            Page page = new Page()
            {
                Id = 1, Title = "My first page"
            };

            PageRepositoryMock pageRepositoryStub = new PageRepositoryMock();

            pageRepositoryStub.AddNewPage(page, "My first page", "admin", DateTime.UtcNow);

            var settingsRepository = new SettingsRepositoryMock();

            settingsRepository.SiteSettings = new SiteSettings()
            {
                MarkupType = "Markdown"
            };

            ApplicationSettings settings = new ApplicationSettings();

            settings.Installed = true;

            MarkupConverter converter = new MarkupConverter(settings, settingsRepository, pageRepositoryStub, _pluginFactory);

            string markdownText = "Here is an image with a title:![Image](/Image1.png \"Image\") \n\n" +
                                  "And another with equal dimensions ![Square](/Image1.png \"Square\" =250x) \n\n" +
                                  "And this one is a rectangle ![Rectangle](/Image1.png \"Rectangle\" =250x350)";

            string expectedHtml = "<p>Here is an image with a title:<img src=\"/Attachments/Image1.png\" class=\"img-responsive\" border=\"0\" alt=\"Image\" width=\"\" height=\"\" title=\"Image\" /> </p>\n\n" +
                                  "<p>And another with equal dimensions <img src=\"/Attachments/Image1.png\" class=\"img-responsive\" border=\"0\" alt=\"Square\" width=\"250px\" height=\"\" title=\"Square\" /> </p>\n\n" +
                                  "<p>And this one is a rectangle <img src=\"/Attachments/Image1.png\" class=\"img-responsive\" border=\"0\" alt=\"Rectangle\" width=\"250px\" height=\"350px\" title=\"Rectangle\" /></p>\n";


            // Act
            string actualHtml = converter.ToHtml(markdownText);

            // Assert
            Assert.That(actualHtml, Is.EqualTo(expectedHtml));
        }
Exemplo n.º 20
0
        public void code_blocks_should_allow_quotes()
        {
            // Issue #82
            // Arrange
            Page page = new Page()
            {
                Id = 1, Title = "My first page"
            };

            PageRepositoryMock pageRepositoryStub = new PageRepositoryMock();

            pageRepositoryStub.AddNewPage(page, "My first page", "admin", DateTime.UtcNow);

            var settingsRepository = new SettingsRepositoryMock();

            settingsRepository.SiteSettings = new SiteSettings()
            {
                MarkupType = "Markdown"
            };

            ApplicationSettings settings = new ApplicationSettings();

            settings.Installed = true;

            MarkupConverter converter = new MarkupConverter(settings, settingsRepository, pageRepositoryStub, _pluginFactory);

            string markdownText = "Here is some `// code with a 'quote' in it and another \"quote\"`\n\n" +
                                  "    var x = \"some tabbed code\";\n\n"; // 2 line breaks followed by 4 spaces (tab stop) at the start indicates a code block

            string expectedHtml = "<p>Here is some <code>// code with a 'quote' in it and another \"quote\"</code></p>\n\n" +
                                  "<pre><code>var x = \"some tabbed code\";\n" +
                                  "</code></pre>\n";

            // Act
            string actualHtml = converter.ToHtml(markdownText);

            // Assert
            Assert.That(actualHtml, Is.EqualTo(expectedHtml));
        }
Exemplo n.º 21
0
        public void exportasxml_should_return_non_empty_stream()
        {
            // Arrange
            _pageRepository.AddNewPage(new Page()
            {
                Id = 1
            }, "text", "admin", DateTime.UtcNow);
            _pageRepository.AddNewPage(new Page()
            {
                Id = 2
            }, "text", "admin", DateTime.UtcNow);

            // Act
            Stream stream = _wikiExporter.ExportAsXml();

            // Assert
            Assert.That(stream.Length, Is.GreaterThan(1));
        }
Exemplo n.º 22
0
        public void about_should_return_viewresult_and_page_with_about_tag_as_model()
        {
            // Arrange
            Page aboutPage = new Page()
            {
                Id    = 1,
                Title = "about",
                Tags  = "about"
            };

            _pageRepository.AddNewPage(aboutPage, "text", "nobody", DateTime.Now);

            // Act
            ViewResult result = _helpController.About() as ViewResult;

            // Assert
            Assert.That(result, Is.Not.Null);

            PageViewModel model = result.ModelFromActionResult <PageViewModel>();

            Assert.NotNull(model, "Null model");
            Assert.That(model.Id, Is.EqualTo(aboutPage.Id));
            Assert.That(model.Title, Is.EqualTo(aboutPage.Title));
        }
Exemplo n.º 23
0
        public void should_export_pages_with_content()
        {
            // Arrange
            var settingsRepository = new SettingsRepositoryMock();
            var pageRepository     = new PageRepositoryMock();

            settingsRepository.SiteSettings.PluginLastSaveDate = DateTime.Today;

            DateTime page1CreatedOn  = new DateTime(2013, 01, 01, 12, 00, 00);
            DateTime page1ModifiedOn = new DateTime(2013, 01, 01, 13, 00, 00);
            DateTime page2CreatedOn  = new DateTime(2013, 01, 02, 12, 00, 00);
            DateTime page2ModifiedOn = new DateTime(2013, 01, 02, 13, 00, 00);
            DateTime page3CreatedOn  = new DateTime(2013, 01, 03, 12, 00, 00);
            DateTime page3ModifiedOn = new DateTime(2013, 01, 03, 13, 00, 00);

            Guid page1ContentId = new Guid("13a8ad19-b203-46f5-be10-11e0ebf6f812");
            Guid page2ContentId = new Guid("143b0023-329a-49b9-97a4-5094a0e378a2");
            Guid page3ContentId = new Guid("15ee19ef-c093-47de-97d2-83dec406d92d");

            string page1Text = @"the text ;'''


								"" more text """                                ;

            string page2Text = @"the text ;''' #### sdfsdfsdf ####


								"" blah text """                                ;

            string page3Text = @"the text ;''' #### dddd **dddd** ####			
			

								"" pppp text """                                ;

            Page page1 = new Page()
            {
                CreatedBy  = "created-by-user1",
                CreatedOn  = page1CreatedOn,
                Id         = 1,
                IsLocked   = true,
                ModifiedBy = "modified-by-user2",
                ModifiedOn = page1ModifiedOn,
                Tags       = "tag1,tag2,tag3",
                Title      = "Page 1 title"
            };

            Page page2 = new Page()
            {
                CreatedBy  = "created-by-user2",
                CreatedOn  = page2CreatedOn,
                Id         = 2,
                IsLocked   = true,
                ModifiedBy = "modified-by-user2",
                ModifiedOn = page2ModifiedOn,
                Tags       = "tagA,tagB,tagC",
                Title      = "Page 2 title"
            };

            Page page3 = new Page()
            {
                CreatedBy  = "created-by-user3",
                CreatedOn  = page3CreatedOn,
                Id         = 3,
                IsLocked   = false,
                ModifiedBy = "modified-by-user3",
                ModifiedOn = page3ModifiedOn,
                Tags       = "tagX,tagY,tagZ",
                Title      = "Page 3 title"
            };

            PageContent pageContent1 = pageRepository.AddNewPage(page1, page1Text, "modified-by-user1", page1ModifiedOn);

            pageContent1.Id = page1ContentId;

            PageContent pageContent2 = pageRepository.AddNewPage(page2, page2Text, "modified-by-user2", page2ModifiedOn);

            pageContent2.Id = page2ContentId;

            PageContent pageContent3 = pageRepository.AddNewPage(page3, page3Text, "modified-by-user3", page3ModifiedOn);

            pageContent3.Id = page3ContentId;

            SqlExportBuilder builder = new SqlExportBuilder(settingsRepository, new UserRepositoryMock(), pageRepository, new PluginFactoryMock());

            builder.IncludeConfiguration = false;
            builder.IncludePages         = true;

            string expectedSql = ReadEmbeddedResource("expected-pages-export.sql");

            // Act
            string actualSql = builder.Export();

            // Assert
            Assert.That(actualSql, Is.EqualTo(expectedSql), actualSql);
        }