public void PresetIsApp_XMatterIsFilledIn() { var code = HydrateBookCommand.Handle(new HydrateParameters() { Path = _bookFolder.FolderPath, Preset = "app", VernacularIsoCode = "en" }); Assert.AreEqual(0, code, "Should return an exit code of 0, meaning it is happy."); Debug.Write(File.ReadAllText(_eventualHtmlPath)); var dom = XmlHtmlConverter.GetXmlDomFromHtml(File.ReadAllText(_eventualHtmlPath)); AssertThatXmlIn.Dom(dom) .HasAtLeastOneMatchForXpath("//div[contains(@class,'bookTitle')]/div[contains(@class, 'bloom-editable') and contains(text(), 'mudmen')]"); AssertThatXmlIn.Dom(dom) .HasSpecifiedNumberOfMatchesForXpath("//div[@data-derived='copyright' and contains(text(),'Joe Author')]", 1); AssertThatXmlIn.Dom(dom) .HasSpecifiedNumberOfMatchesForXpath("//div[@data-book='originalAcknowledgments' and @lang='en' and contains(@class,'bloom-editable') and contains(text(),'Some Acknowledgments')]", 1); AssertThatXmlIn.Dom(dom) .HasSpecifiedNumberOfMatchesForXpath("//div[@data-book-attributes='frontCover' and @data-backgroundaudio='audio/SoundTrack1.mp3' and @data-backgroundaudiovolume='0.17']", 2); AssertThatXmlIn.Dom(dom) .HasSpecifiedNumberOfMatchesForXpath("//div[contains(@class,'frontCover') and @data-backgroundaudio='audio/SoundTrack1.mp3' and @data-backgroundaudiovolume='0.17']", 1); }
public void BogusPath_Returns1() { var code = HydrateBookCommand.Handle(new HydrateParameters() { Path = "notAnywhere" }); Assert.AreEqual(1, code); }
public void PresetIsApp_CreativeCommonsLicenseImageAdded() { var code = HydrateBookCommand.Handle(new HydrateParameters { Path = _bookFolder.FolderPath, Preset = "app", VernacularIsoCode = "en" }); Assert.AreEqual(0, code, "Should return an exit code of 0, meaning it is happy."); Assert.That(File.Exists(Path.Combine(Path.GetDirectoryName(_eventualHtmlPath), "license.png"))); }
public void HasNoBloomPlayerFile_AddsOne() { var bloomPlayerPath = Path.Combine(Path.GetDirectoryName(_eventualHtmlPath), "bloomPlayer.js"); Assert.False(File.Exists(bloomPlayerPath)); HydrateBookCommand.Handle(new HydrateParameters { Path = _bookFolder.FolderPath, Preset = "app", VernacularIsoCode = "en" }); Assert.True(File.Exists(bloomPlayerPath)); }
public void HasNoBloomPlayerScript_AddsOne() { var code = HydrateBookCommand.Handle(new HydrateParameters { Path = _bookFolder.FolderPath, Preset = "app", VernacularIsoCode = "en" }); Assert.AreEqual(0, code, "Should return an exit code of 0, meaning it is happy."); AssertThatXmlIn.HtmlFile(_eventualHtmlPath) .HasSpecifiedNumberOfMatchesForXpath("//head/script[contains(@src,'bloomPlayer.js')]", 1); }
public void PresetIsApp_XmatterSetToVideo() { var code = HydrateBookCommand.Handle(new HydrateParameters() { Path = _bookFolder.FolderPath, Preset = "app", VernacularIsoCode = "en" }); Assert.AreEqual(0, code, "Should return an exit code of 0, meaning it is happy."); var html = File.ReadAllText(_eventualHtmlPath); Assert.That(html.Contains("Opening Screen")); }
public void PresetIsApp_A5LandscapeChangedToDevice16x9Landscape() { var code = HydrateBookCommand.Handle(new HydrateParameters() { Path = _bookFolder.FolderPath, Preset = "app", VernacularIsoCode = "en" }); Assert.AreEqual(0, code, "Should return an exit code of 0, meaning it is happy."); var html = File.ReadAllText(_eventualHtmlPath); AssertThatXmlIn.File(_eventualHtmlPath).HasAtLeastOneMatchForXpath("//div[contains(@class,'bloom-page') and contains(@class,'Device16x9Landscape')]"); Assert.That(!html.Contains("A5Landscape")); }
public void AlreadyHasBloomPlayerFile_ReplacesIt() { var bloomPlayerPath = Path.Combine(Path.GetDirectoryName(_eventualHtmlPath), "bloomPlayer.js"); File.WriteAllText(bloomPlayerPath, "Some initial text in the file"); Assert.True(File.Exists(bloomPlayerPath)); Assert.True(new FileInfo(bloomPlayerPath).Length < 100); HydrateBookCommand.Handle(new HydrateParameters { Path = _bookFolder.FolderPath, Preset = "app", VernacularIsoCode = "en" }); Assert.True(new FileInfo(bloomPlayerPath).Length > 100); }
public void SetsCorrectClassesForVernacularLanguage() { var code = HydrateBookCommand.Handle(new HydrateParameters { Path = _bookFolder.FolderPath, Preset = "app", VernacularIsoCode = "en" }); Assert.AreEqual(0, code, "Should return an exit code of 0, meaning it is happy."); AssertThatXmlIn.HtmlFile(_eventualHtmlPath) .HasSpecifiedNumberOfMatchesForXpath("//div[@data-book='contentLanguage1' and @lang='*' and text()='en']", 1); AssertThatXmlIn.HtmlFile(_eventualHtmlPath) .HasSpecifiedNumberOfMatchesForXpath("//div[@data-book='bookTitle' and @contenteditable='true' and @lang='en']", 1); }
public void SetsCorrectClassesForNationalLanguages() { var code = HydrateBookCommand.Handle(new HydrateParameters { Path = _bookFolder.FolderPath, Preset = "app", VernacularIsoCode = "en", NationalLanguage1IsoCode = "fr", NationalLanguage2IsoCode = "sp" }); Assert.AreEqual(0, code, "Should return an exit code of 0, meaning it is happy."); AssertThatXmlIn.HtmlFile(_eventualHtmlPath) .HasSpecifiedNumberOfMatchesForXpath("//div[@data-book='bookTitle' and @contenteditable='true' and @lang='fr' and contains(@class,'bloom-contentNational1')]", 1); AssertThatXmlIn.HtmlFile(_eventualHtmlPath) .HasSpecifiedNumberOfMatchesForXpath("//div[@data-book='bookTitle' and @contenteditable='true' and @lang='sp' and contains(@class,'bloom-contentNational2')]", 1); }
public void RequiredParametersOnly_DefaultsOkay() { var code = HydrateBookCommand.Handle(new HydrateParameters { Path = _bookFolder.FolderPath, VernacularIsoCode = "en" }); Assert.AreEqual(0, code, "Should return an exit code of 0, meaning it is happy."); AssertThatXmlIn.HtmlFile(_eventualHtmlPath) .HasAtLeastOneMatchForXpath("//div[@data-book='bookTitle' and @contenteditable='true' and @lang='en' and contains(@class,'bloom-content1')]"); // National language should be set to vernacular if not set AssertThatXmlIn.HtmlFile(_eventualHtmlPath) .HasAtLeastOneMatchForXpath("//div[@data-book='bookTitle' and @contenteditable='true' and @lang='en' and contains(@class,'bloom-contentNational1')]"); AssertThatXmlIn.HtmlFile(_eventualHtmlPath).HasNoMatchForXpath("//div[@lang='']"); AssertThatXmlIn.HtmlFile(_eventualHtmlPath).HasNoMatchForXpath("//div[contains(@class,'bloom-contentNational2')]"); }
public void SetsCorrectClassesForNationalLanguages() { var code = HydrateBookCommand.Handle(new HydrateParameters { Path = _bookFolder.FolderPath, Preset = "shellbook", VernacularIsoCode = "en", NationalLanguage1IsoCode = "fr", NationalLanguage2IsoCode = "sp" }); Assert.AreEqual(0, code, "Should return an exit code of 0, meaning it is happy."); AssertThatXmlIn.HtmlFile(_eventualHtmlPath) .HasAtLeastOneMatchForXpath("//div[@data-book='bookTitle' and @contenteditable='true' and @lang='fr' and contains(@class,'bloom-contentNational1')]"); // This is effectively a test that the book has been made trilingual. AssertThatXmlIn.HtmlFile(_eventualHtmlPath) .HasAtLeastOneMatchForXpath("//div[@data-book='bookTitle' and @contenteditable='true' and @lang='sp' and contains(@class,'bloom-contentNational2')]"); }
public void PresetIsApp_StylesheetAreRelativePaths() { var code = HydrateBookCommand.Handle(new HydrateParameters() { Path = _bookFolder.FolderPath, Preset = "app", VernacularIsoCode = "en" }); Assert.AreEqual(0, code, "Should return an exit code of 0, meaning it is happy."); Debug.Write(File.ReadAllText(_eventualHtmlPath)); var dom = XmlHtmlConverter.GetXmlDomFromHtml(File.ReadAllText(_eventualHtmlPath)); AssertThatXmlIn.Dom(dom) .HasSpecifiedNumberOfMatchesForXpath("//link[@href='basePage.css']", 1); AssertThatXmlIn.Dom(dom) .HasSpecifiedNumberOfMatchesForXpath("//link[@href='languageDisplay.css']", 1); AssertThatXmlIn.Dom(dom) .HasSpecifiedNumberOfMatchesForXpath("//link[@href='Video-XMatter.css']", 1); }