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