コード例 #1
0
        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);
        }
コード例 #2
0
        public void BogusPath_Returns1()
        {
            var code = HydrateBookCommand.Handle(new HydrateParameters()
            {
                Path = "notAnywhere"
            });

            Assert.AreEqual(1, code);
        }
コード例 #3
0
        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")));
        }
コード例 #4
0
        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));
        }
コード例 #5
0
        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);
        }
コード例 #6
0
        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"));
        }
コード例 #7
0
        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"));
        }
コード例 #8
0
        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);
        }
コード例 #9
0
        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);
        }
コード例 #10
0
        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);
        }
コード例 #11
0
        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')]");
        }
コード例 #12
0
        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')]");
        }
コード例 #13
0
        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);
        }