diff options
Diffstat (limited to 'writerperfect/qa/uitest')
-rw-r--r-- | writerperfect/qa/uitest/epubexport/epubexport.py | 128 |
1 files changed, 128 insertions, 0 deletions
diff --git a/writerperfect/qa/uitest/epubexport/epubexport.py b/writerperfect/qa/uitest/epubexport/epubexport.py new file mode 100644 index 000000000..76d8c5e43 --- /dev/null +++ b/writerperfect/qa/uitest/epubexport/epubexport.py @@ -0,0 +1,128 @@ +# -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- +# +# This file is part of the LibreOffice project. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# + +from com.sun.star.beans import PropertyValue +from libreoffice.uno.propertyvalue import mkPropertyValues +from uitest.framework import UITestCase +from uitest.uihelper.common import get_state_as_dict +import uno + + +# Test for EPUBExportDialog and EPUBExportUIComponent. +class EPUBExportTest(UITestCase): + + def testUIComponent(self): + uiComponent = self.ui_test._xContext.ServiceManager.createInstanceWithContext("com.sun.star.comp.Writer.EPUBExportUIComponent", self.ui_test._xContext) + + # Make sure we get what we asked for. + self.assertEqual("com.sun.star.comp.Writer.EPUBExportUIComponent", uiComponent.getImplementationName()) + self.assertEqual(True, uiComponent.supportsService("com.sun.star.ui.dialogs.FilterOptionsDialog")) + # Just make sure this doesn't fail. + uiComponent.setTitle(str()) + + with self.ui_test.execute_blocking_action(action=uiComponent.execute) as dialog: + # Select the second entry to request EPUB2, not EPUB3. + dialog.getChild("versionlb").executeAction("SELECT", mkPropertyValues({"POS": "1"})) + propertyValues = uiComponent.getPropertyValues() + filterData = [i.Value for i in propertyValues if i.Name == "FilterData"][0] + epubVersion = [i.Value for i in filterData if i.Name == "EPUBVersion"][0] + # This was 30, EPUBExportDialog::VersionSelectHdl() did not set the version. + self.assertEqual(20, epubVersion) + + def testCustomProperties(self): + uiComponent = self.ui_test._xContext.ServiceManager.createInstanceWithContext("com.sun.star.comp.Writer.EPUBExportUIComponent", self.ui_test._xContext) + + # Make sure that by default the version is not altered. + propertyValues = uiComponent.getPropertyValues() + filterData = [i.Value for i in propertyValues if i.Name == "FilterData"][0] + self.assertEqual(0, len([i.Value for i in filterData if i.Name == "EPUBVersion"])) + + # But if we set it explicitly, then it's retained, even without interacting with the UI. + filterData = (PropertyValue(Name="EPUBVersion", Value=30),) + propertyValues = (PropertyValue(Name="FilterData", Value=uno.Any("[]com.sun.star.beans.PropertyValue", filterData)),) + uiComponent.setPropertyValues(propertyValues) + propertyValues = uiComponent.getPropertyValues() + filterData = [i.Value for i in propertyValues if i.Name == "FilterData"][0] + epubVersion = [i.Value for i in filterData if i.Name == "EPUBVersion"][0] + self.assertEqual(30, epubVersion) + + def testDialogVersionInput(self): + uiComponent = self.ui_test._xContext.ServiceManager.createInstanceWithContext("com.sun.star.comp.Writer.EPUBExportUIComponent", self.ui_test._xContext) + positions = [] + for version in (20, 30): + filterData = (PropertyValue(Name="EPUBVersion", Value=version),) + propertyValues = (PropertyValue(Name="FilterData", Value=uno.Any("[]com.sun.star.beans.PropertyValue", filterData)),) + uiComponent.setPropertyValues(propertyValues) + with self.ui_test.execute_blocking_action(action=uiComponent.execute) as dialog: + versionlb = get_state_as_dict(dialog.getChild("versionlb")) + # Log the state of the versionlb widget and exit. + positions.append(versionlb["SelectEntryPos"]) + # Make sure that initializing with 2 different versions results in 2 different widget states. + self.assertEqual(2, len(set(positions))) + + def testCoverImage(self): + uiComponent = self.ui_test._xContext.ServiceManager.createInstanceWithContext("com.sun.star.comp.Writer.EPUBExportUIComponent", self.ui_test._xContext) + + with self.ui_test.execute_blocking_action(action=uiComponent.execute) as dialog: + dialog.getChild("coverpath").executeAction("TYPE", mkPropertyValues({"TEXT": "cover.png"})) + propertyValues = uiComponent.getPropertyValues() + filterData = [i.Value for i in propertyValues if i.Name == "FilterData"][0] + # The RVNGCoverImage key was missing, EPUBExportDialog::OKClickHdl() did not set it. + coverImage = [i.Value for i in filterData if i.Name == "RVNGCoverImage"][0] + self.assertEqual("cover.png", coverImage) + + def testMediaDir(self): + uiComponent = self.ui_test._xContext.ServiceManager.createInstanceWithContext("com.sun.star.comp.Writer.EPUBExportUIComponent", self.ui_test._xContext) + + with self.ui_test.execute_blocking_action(action=uiComponent.execute) as dialog: + dialog.getChild("mediadir").executeAction("TYPE", mkPropertyValues({"TEXT": "file:///foo/bar"})) + propertyValues = uiComponent.getPropertyValues() + filterData = [i.Value for i in propertyValues if i.Name == "FilterData"][0] + # The RVNGMediaDir key was missing, EPUBExportDialog::OKClickHdl() did not set it. + mediaDir = [i.Value for i in filterData if i.Name == "RVNGMediaDir"][0] + self.assertEqual("file:///foo/bar", mediaDir) + + def testFixedLayout(self): + uiComponent = self.ui_test._xContext.ServiceManager.createInstanceWithContext("com.sun.star.comp.Writer.EPUBExportUIComponent", self.ui_test._xContext) + + with self.ui_test.execute_blocking_action(action=uiComponent.execute) as dialog: + # Select the second entry to request fixed, not reflowable layout. + dialog.getChild("layoutlb").executeAction("SELECT", mkPropertyValues({"POS": "1"})) + propertyValues = uiComponent.getPropertyValues() + filterData = [i.Value for i in propertyValues if i.Name == "FilterData"][0] + # The EPUBLayoutMethod key was missing, EPUBExportDialog::OKClickHdl() did not set it. + layout = [i.Value for i in filterData if i.Name == "EPUBLayoutMethod"][0] + # 1 stands for libepubgen::EPUB_LAYOUT_METHOD_FIXED. + self.assertEqual(1, layout) + + def testMeta(self): + uiComponent = self.ui_test._xContext.ServiceManager.createInstanceWithContext("com.sun.star.comp.Writer.EPUBExportUIComponent", self.ui_test._xContext) + + with self.ui_test.execute_blocking_action(action=uiComponent.execute) as dialog: + dialog.getChild("identifier").executeAction("TYPE", mkPropertyValues({"TEXT": "baddcafe-e394-4cd6-9b83-7172794612e5"})) + dialog.getChild("title").executeAction("TYPE", mkPropertyValues({"TEXT": "unknown title from ui"})) + dialog.getChild("author").executeAction("TYPE", mkPropertyValues({"TEXT": "unknown author from ui"})) + dialog.getChild("language").executeAction("TYPE", mkPropertyValues({"TEXT": "sk"})) + dialog.getChild("date").executeAction("TYPE", mkPropertyValues({"TEXT": "2013-11-20T17:16:07Z"})) + + propertyValues = uiComponent.getPropertyValues() + filterData = [i.Value for i in propertyValues if i.Name == "FilterData"][0] + # These keys were missing, EPUBExportDialog::OKClickHdl() did not set them. + identifier = [i.Value for i in filterData if i.Name == "RVNGIdentifier"][0] + self.assertEqual("baddcafe-e394-4cd6-9b83-7172794612e5", identifier) + title = [i.Value for i in filterData if i.Name == "RVNGTitle"][0] + self.assertEqual("unknown title from ui", title) + initialCreator = [i.Value for i in filterData if i.Name == "RVNGInitialCreator"][0] + self.assertEqual("unknown author from ui", initialCreator) + language = [i.Value for i in filterData if i.Name == "RVNGLanguage"][0] + self.assertEqual("sk", language) + date = [i.Value for i in filterData if i.Name == "RVNGDate"][0] + self.assertEqual("2013-11-20T17:16:07Z", date) + +# vim: set shiftwidth=4 softtabstop=4 expandtab: |