Example #1
0
        public void Setup()
        {
            var library = new Moq.Mock <CollectionSettings>();

            library.SetupGet(x => x.IsSourceCollection).Returns(false);
            library.SetupGet(x => x.Language2Iso639Code).Returns("en");
            library.SetupGet(x => x.Language1Iso639Code).Returns("xyz");
            library.SetupGet(x => x.XMatterPackName).Returns("Factory");

            ErrorReport.IsOkToInteractWithUser = false;
            _fileLocator = new FileLocator(new string[]
            {
                //FileLocationUtilities.GetDirectoryDistributedWithApplication( "factoryCollections"),
                BloomFileLocator.GetFactoryBookTemplateDirectory("Basic Book"),
                BloomFileLocator.GetFactoryBookTemplateDirectory("Wall Calendar"),
                FileLocationUtilities.GetDirectoryDistributedWithApplication(BloomFileLocator.BrowserRoot),
                BloomFileLocator.GetBrowserDirectory("bookLayout"),
                BloomFileLocator.GetBrowserDirectory("bookEdit", "css"),
                BloomFileLocator.GetInstalledXMatterDirectory()
            });

            var projectFolder      = new TemporaryFolder("BookStarterTests_ProjectCollection");
            var collectionSettings = new CollectionSettings(Path.Combine(projectFolder.Path, "test.bloomCollection"));

            _starter = new BookStarter(_fileLocator, (dir, forSelectedBook) => new BookStorage(dir, _fileLocator, new BookRenamedEvent(), collectionSettings), library.Object);
            _shellCollectionFolder = new TemporaryFolder("BookStarterTests_ShellCollection");
            _libraryFolder         = new TemporaryFolder("BookStarterTests_LibraryCollection");
        }
        public BookServer CreateBookServer()
        {
            _collectionSettings = CreateDefaultCollectionsSettings();
            var xmatterFinder = new XMatterPackFinder(new[] { BloomFileLocator.GetInstalledXMatterDirectory() });
            var fileLocator   = new BloomFileLocator(_collectionSettings, xmatterFinder, ProjectContext.GetFactoryFileLocations(), ProjectContext.GetFoundFileLocations(), ProjectContext.GetAfterXMatterFileLocations());
            var starter       = new BookStarter(fileLocator, (dir, forSelectedBook) => new BookStorage(dir, fileLocator, new BookRenamedEvent(), _collectionSettings), _collectionSettings);

            return(new BookServer(
                       //book factory
                       (bookInfo, storage) =>
            {
                return new Bloom.Book.Book(bookInfo, storage, null, _collectionSettings,
                                           new PageSelection(),
                                           new PageListChangedEvent(), new BookRefreshEvent());
            },

                       // storage factory
                       (path, forSelectedBook) =>
            {
                var storage = new BookStorage(path, fileLocator, new BookRenamedEvent(), _collectionSettings);
                storage.BookInfo = new BookInfo(path, true);
                return storage;
            },

                       // book starter factory
                       () => starter,

                       // configurator factory
                       null));
        }
Example #3
0
        public void Setup()
        {
            var collection = new CollectionSettings
            {
                IsSourceCollection  = false,
                Language2Iso639Code = "en",
                Language1Iso639Code = "xyz",
                XMatterPackName     = "Factory"
            };

            ErrorReport.IsOkToInteractWithUser = false;
            _fileLocator = new FileLocator(new string[]
            {
                //FileLocationUtilities.GetDirectoryDistributedWithApplication( "factoryCollections"),
                BloomFileLocator.GetFactoryBookTemplateDirectory("Basic Book"),
                BloomFileLocator.GetFactoryBookTemplateDirectory("Wall Calendar"),
                FileLocationUtilities.GetDirectoryDistributedWithApplication(BloomFileLocator.BrowserRoot),
                BloomFileLocator.GetBrowserDirectory("bookLayout"),
                BloomFileLocator.GetBrowserDirectory("bookEdit", "css"),
                BloomFileLocator.GetFactoryXMatterDirectory()
            });

            var projectFolder      = new TemporaryFolder("BookStarterTests_ProjectCollection");
            var collectionSettings = new CollectionSettings(Path.Combine(projectFolder.Path, "test.bloomCollection"));

            _starter = new BookStarter(_fileLocator, (dir, fullyUpdateBookFiles) => new BookStorage(dir, _fileLocator, new BookRenamedEvent(), collectionSettings), collection);
            _shellCollectionFolder = new TemporaryFolder("BookStarterTests_ShellCollection");
            _collectionFolder      = new TemporaryFolder("BookStarterTests_Collection");
        }
        public void Setup()
        {
            var library = new Moq.Mock <CollectionSettings>();

            library.SetupGet(x => x.IsSourceCollection).Returns(false);
            library.SetupGet(x => x.Language2Iso639Code).Returns("en");
            library.SetupGet(x => x.Language1Iso639Code).Returns("xyz");
            library.SetupGet(x => x.XMatterPackName).Returns("Factory");

            ErrorReport.IsOkToInteractWithUser = false;
            _fileLocator = new FileLocator(new string[]
            {
                FileLocator.GetDirectoryDistributedWithApplication("factoryCollections"),
                FileLocator.GetDirectoryDistributedWithApplication("factoryCollections", "Templates"),
                FileLocator.GetDirectoryDistributedWithApplication("factoryCollections", "Templates", "Basic Book"),
                FileLocator.GetDirectoryDistributedWithApplication("BloomBrowserUI"),
                FileLocator.GetDirectoryDistributedWithApplication("BloomBrowserui/bookLayout"),
                FileLocator.GetDirectoryDistributedWithApplication("xMatter")
            });
            _starter = new BookStarter(_fileLocator, dir => new BookStorage(dir, _fileLocator, new BookRenamedEvent(), new CollectionSettings()), library.Object);
            _shellCollectionFolder = new TemporaryFolder("BookStarterTests_ShellCollection");
            _libraryFolder         = new TemporaryFolder("BookStarterTests_LibraryCollection");

            Browser.SetUpXulRunner();
        }
        public void Setup()
        {
            _librarySettings = new Moq.Mock <CollectionSettings>();
            _librarySettings.SetupGet(x => x.IsSourceCollection).Returns(false);
            _librarySettings.SetupGet(x => x.Language1Iso639Code).Returns("xyz");
            _librarySettings.SetupGet(x => x.Language2Iso639Code).Returns("fr");
            _librarySettings.SetupGet(x => x.Language3Iso639Code).Returns("es");
            _librarySettings.SetupGet(x => x.XMatterPackName).Returns("Factory");
            ErrorReport.IsOkToInteractWithUser = false;
            _fileLocator = new FileLocator(new string[] {});
            foreach (var location in ProjectContext.GetFileLocations())
            {
                _fileLocator.AddPath(location);
            }

//			new FileLocator(new string[]
//			                                {
//			                                    FileLocator.GetDirectoryDistributedWithApplication("BloomBrowserUI"),
//												FileLocator.GetDirectoryDistributedWithApplication("browserui/bookCSS"),
//												FileLocator.GetDirectoryDistributedWithApplication("xMatter"),
//												FileLocator.GetDirectoryDistributedWithApplication( "factoryCollections"),
//												FileLocator.GetDirectoryDistributedWithApplication( "factoryCollections", "Templates"),
//			                                    FileLocator.GetDirectoryDistributedWithApplication( "factoryCollections", "Templates", "Basic Book"),
//												FileLocator.GetDirectoryDistributedWithApplication( "xMatter", "Factory-XMatter")
//			                                });

            _starter = new BookStarter(_fileLocator, dir => new BookStorage(dir, _fileLocator, new BookRenamedEvent(), new CollectionSettings()), _librarySettings.Object);
            _shellCollectionFolder = new TemporaryFolder("BookStarterTests_ShellCollection");
            _projectFolder         = new TemporaryFolder("BookStarterTests_ProjectCollection");
        }
        // Insert a clone of templatePage into the document before _currentPage (or after _lastContentPage, if _currentPage is null),
        // and make _currentPage point to the new page.
        private void ImportPage(XmlElement templatePage)
        {
            var newPage = _pages[0].OwnerDocument.ImportNode(templatePage, true) as XmlElement;

            BookStarter.SetupIdAndLineage(templatePage, newPage);
            _pages.Insert(_currentPageIndex, newPage);
            SizeAndOrientation.UpdatePageSizeAndOrientationClasses(newPage, _destLayout);
            // Correctly inserts at end if _currentPage is null, though this will hardly ever
            // be true because we normally have at least backmatter page to insert before.
            _pages[0].ParentNode.InsertBefore(newPage, _currentPage);

            // clear everything: this is useful in case it has slots we won't use.
            // They might have content either from the original last page, or from the
            // modifications we already made to it.
            var editables = newPage.SelectNodes(".//div[contains(@class, 'bloom-editable') and @lang != 'z']").Cast <XmlElement>().ToArray();

            foreach (var e in editables)
            {
                e.ParentNode.RemoveChild(e);
            }

            var imageContainers = GetImageContainers(newPage);

            foreach (var c in imageContainers)
            {
                var img = GetImgFromContainer(c);
                img?.SetAttribute("src", "placeHolder.png");
                foreach (var attr in new[] { "alt", "data-copyright", "data-creator", "data-license" })
                {
                    img?.RemoveAttribute(attr);
                }
                c.RemoveAttribute("title");
            }

            // This is not tested yet, but we want to remove video content if any from whatever last page we're copying.
            foreach (var v in newPage.SelectNodes(".//div[contains(@class, 'bloom-videoContainer')]/video")
                     .Cast <XmlElement>().ToList())
            {
                HtmlDom.AddClass(v.ParentNode as XmlElement, "bloom-noVideoSelected");
                v.ParentNode.RemoveChild(v);
            }

            // and widgets (also not tested)
            foreach (var w in newPage.SelectNodes(".//div[contains(@class, 'bloom-widgetContainer')]/iframe")
                     .Cast <XmlElement>().ToList())
            {
                HtmlDom.AddClass(w.ParentNode as XmlElement, "bloom-noWidgetSelected");
                w.ParentNode.RemoveChild(w);
            }

            _currentPage = newPage;
        }
        public void SetupPage_PageHadDescription_DescriptionClearedButEnglishStillThere()
        {
            var contents = @"<div class='bloom-page'>
						 <div class='pageDescription' lang='en'>hello</div>
						 <div class='pageDescription' lang='fr'>bonjour</div>
					</div>"                    ;

            var dom = new XmlDocument();

            dom.LoadXml(contents);

            BookStarter.SetupPage((XmlElement)dom.SafeSelectNodes("//div[contains(@class,'bloom-page')]")[0], _librarySettings.Object, "abc", "def");
            //should remove the French (I don't see that we actually have any templates that have anything but English, but just in case)
            AssertThatXmlIn.Dom(dom).HasSpecifiedNumberOfMatchesForXpath("//div[contains(@class, 'pageDescription') and @lang != 'en']", 0);
            //should leave English as a placeholder
            AssertThatXmlIn.Dom(dom).HasSpecifiedNumberOfMatchesForXpath("//div[contains(@class, 'pageDescription') and not(normalize-space(.))]", 1);
        }
        public void SetupPage_LanguageSettingsHaveChanged_LangAttributesUpdated()
        {
            var contents = @"<div class='bloom-page'>
						<div class='bloom-translationGroup' data-book='foo'>
							<div class='bloom-editable' lang='en'></div>
							<div class='bloom-editable' lang='en'></div>
							<div class='bloom-editable' lang='en'></div>
						</div>
					</div>"                    ;

            var dom = new XmlDocument();

            dom.LoadXml(contents);

            BookStarter.SetupPage((XmlElement)dom.SafeSelectNodes("//div[contains(@class,'bloom-page')]")[0], _librarySettings.Object, "abc", "def");
            AssertThatXmlIn.Dom(dom).HasSpecifiedNumberOfMatchesForXpath("//div[@data-book='foo']/div[@lang='fr']", 1);
            AssertThatXmlIn.Dom(dom).HasSpecifiedNumberOfMatchesForXpath("//div[@data-book='foo']/div[@lang='es']", 1);
            AssertThatXmlIn.Dom(dom).HasSpecifiedNumberOfMatchesForXpath("//div[@data-book='foo']/div[@lang='xyz']", 1);
        }
        public void Setup()
        {
            _librarySettings = new Moq.Mock <CollectionSettings>();
            _librarySettings.SetupGet(x => x.IsSourceCollection).Returns(false);
            _librarySettings.SetupGet(x => x.Language1Iso639Code).Returns("xyz");
            _librarySettings.SetupGet(x => x.Language2Iso639Code).Returns("fr");
            _librarySettings.SetupGet(x => x.Language3Iso639Code).Returns("es");
            _librarySettings.SetupGet(x => x.XMatterPackName).Returns("Factory");
            ErrorReport.IsOkToInteractWithUser = false;
            _projectFolder = new TemporaryFolder("BookStarterTests_ProjectCollection");
            var collectionSettings = new CollectionSettings(Path.Combine(_projectFolder.Path, "test.bloomCollection"));

            var xmatterFinder = new XMatterPackFinder(new [] { FileLocator.GetDirectoryDistributedWithApplication("xMatter") });

            _fileLocator = new BloomFileLocator(collectionSettings, xmatterFinder, ProjectContext.GetFactoryFileLocations(), ProjectContext.GetFoundFileLocations());


            _starter = new BookStarter(_fileLocator, dir => new BookStorage(dir, _fileLocator, new BookRenamedEvent(), collectionSettings), _librarySettings.Object);
            _shellCollectionFolder = new TemporaryFolder("BookStarterTests_ShellCollection");
        }
Example #10
0
        private static Book MakeBook(CollectionSettings collectionSettings, string sourceBookFolderPath)
        {
            var xmatterLocations = new List <string>();

            xmatterLocations.Add(ProjectContext.XMatterAppDataFolder);
            xmatterLocations.Add(FileLocator.GetDirectoryDistributedWithApplication(kpathToSHRPTemplates));
            xmatterLocations.Add(FileLocator.GetDirectoryDistributedWithApplication("xMatter"));
            var locator = new BloomFileLocator(collectionSettings, new XMatterPackFinder(xmatterLocations), new string[] {});

            var starter = new BookStarter(locator,
                                          path =>
                                          new BookStorage(path, locator, new BookRenamedEvent(),
                                                          collectionSettings),
                                          collectionSettings);
            var pathToFolderOfNewBook = starter.CreateBookOnDiskFromTemplate(sourceBookFolderPath, collectionSettings.FolderPath);

            var newBookInfo = new BookInfo(pathToFolderOfNewBook, false /*saying not editable works us around a langdisplay issue*/);

            BookStorage bookStorage = new BookStorage(pathToFolderOfNewBook, locator, new BookRenamedEvent(), collectionSettings);
            var         book        = new Book(newBookInfo, bookStorage, null,
                                               collectionSettings, null, null, null, null);

            return(book);
        }