def setUp(self): self.portal = self.layer['portal'] alsoProvides(self.layer['request'], IPloneAppMultilingualInstalled) # Setup test browser self.browser = Browser(self.layer['app']) self.browser.handleErrors = False self.browser.addHeader( 'Authorization', 'Basic %s:%s' % ( SITE_OWNER_NAME, SITE_OWNER_PASSWORD))
def setUp(self): self.portal = self.layer['portal'] # Setup test browser self.browser = Browser(self.layer['app']) self.browser.handleErrors = False self.browser.addHeader( 'Authorization', 'Basic %s:%s' % (SITE_OWNER_NAME, SITE_OWNER_PASSWORD))
def test_search_replace_control_panel_anonymous_unauthorized(self): app = self.layer["app"] browser = Browser(app) browser.handleErrors = False with self.assertRaises( Unauthorized): # Anonymous cannot access this page browser.open( "{}/@@collective.documentgenerator-searchreplacepanel".format( self.portal.absolute_url()))
def test_menu_is_not_visible_without_permission(self): # Add a new user without Owner, Editor or Manager role on # self.a_ca document self.portal.portal_registration.addMember( 'a_user', 'a_password', ['Reader', 'Contributor', 'Reviewer', ]) transaction.commit() browser = Browser(self.layer['app']) browser.addHeader('Authorization', 'Basic a_user:a_password') browser.open(self.a_ca.absolute_url()) self.assertNotIn('plone-contentmenu-multilingual', browser.contents)
def setUp(self): self.portal = self.layer['portal'] alsoProvides(self.layer['request'], IPloneAppMultilingualInstalled) # Setup test browser self.browser = Browser(self.layer['app']) self.browser.handleErrors = False self.browser.addHeader( 'Authorization', 'Basic {0:s}:{1:s}'.format( SITE_OWNER_NAME, SITE_OWNER_PASSWORD)) # Create sample document in 'en' and index it into catalog self.a_ca = createContentInContainer( self.portal['ca'], 'Document', title=u'Test document') transaction.commit()
def setUp(self): self.portal = self.layer["portal"] # Setup test browser self.browser = Browser(self.layer["app"]) self.browser.handleErrors = False self.browser.addHeader("Authorization", "Basic %s:%s" % (SITE_OWNER_NAME, SITE_OWNER_PASSWORD))
def setUp(self): self.portal = self.layer['portal'] # Setup multilingual site language_tool = getToolByName(self.portal, 'portal_languages') language_tool.addSupportedLanguage('it') language_tool.addSupportedLanguage('de') setupTool = SetupMultilingualSite() setupTool.setupSite(self.portal) # Setup test browser self.browser = Browser(self.layer['app']) self.browser.handleErrors = False self.browser.addHeader( 'Authorization', 'Basic %s:%s' % ( SITE_OWNER_NAME, SITE_OWNER_PASSWORD)) # Create sample document in 'en' and index it into catalog self.container = self.portal['en'] self.content_id = self.container.invokeFactory( type_name="Document", id="sampledocument-form") self.content = self.container[self.content_id] self.content.setLanguage('en') notify(ObjectAddedEvent(self.content)) import transaction transaction.commit()
def setUp(self): self.portal = self.layer['portal'] # Setup test browser self.browser = Browser(self.layer['app']) self.browser.handleErrors = False self.browser.addHeader( 'Authorization', 'Basic %s:%s' % ( SITE_OWNER_NAME, SITE_OWNER_PASSWORD)) # Configure languages self.portal_url = self.portal.absolute_url() self.lang_tool = getToolByName(self.portal, 'portal_languages') self.lang_tool.supported_langs = ['en', 'it', 'de'] # Create language root folder for 'en' self.portal.invokeFactory(type_name="Folder", id="en") self.container = self.portal['en'] self.container.setLanguage('en') # Create sample document in 'en' and index it into catalog content_id = self.container.invokeFactory( type_name="Document", id="sampledocument-form") self.content = self.container[content_id] self.content.setLanguage('en') notify(ObjectAddedEvent(self.content)) import transaction transaction.commit()
def setUp(self): self.portal = self.layer['portal'] # Setup test browser self.browser = Browser(self.layer['app']) self.browser.handleErrors = False self.browser.addHeader( 'Authorization', 'Basic %s:%s' % ( SITE_OWNER_NAME, SITE_OWNER_PASSWORD))
def setUp(self): self.portal = self.layer['portal'] # Setup test browser self.browser = Browser(self.layer['app']) self.browser.handleErrors = False self.browser.addHeader( 'Authorization', 'Basic {0:s}:{1:s}'.format( SITE_OWNER_NAME, SITE_OWNER_PASSWORD)) # Create sample document in 'en' and index it into catalog self.a_ca = createContentInContainer( self.portal['ca'], 'Document', title=u'Test document') transaction.commit()
class TestMenu(unittest.TestCase): layer = PAM_FUNCTIONAL_TESTING def setUp(self): self.portal = self.layer['portal'] # Setup test browser self.browser = Browser(self.layer['app']) self.browser.handleErrors = False self.browser.addHeader( 'Authorization', 'Basic {0:s}:{1:s}'.format(SITE_OWNER_NAME, SITE_OWNER_PASSWORD)) # Create sample document in 'en' and index it into catalog self.a_ca = createContentInContainer(self.portal['ca'], 'Document', title=u'Test document') transaction.commit() def test_menu_is_visible(self): self.browser.open(self.a_ca.absolute_url()) self.assertIn('Translate', self.browser.contents) def test_menu_contains_translatable_entries(self): self.browser.open(self.a_ca.absolute_url()) self.assertIn('translate_into_es', self.browser.contents) self.assertIn('translate_into_en', self.browser.contents) def test_menu_does_not_contain_translated_entries(self): self.browser.open(self.a_ca.absolute_url()) self.assertNotIn('translate_into_ca', self.browser.contents) def test_menu_does_not_appear_without_ITranslatable(self): self.browser.open(self.portal.absolute_url() + '/folder_listing') self.assertNotIn('Translate', self.browser.contents) def test_menu_is_visible_on_folder_default_page(self): createContentInContainer(self.portal['ca'], 'Folder', title=u'Test folder') createContentInContainer(self.portal['ca']['test-folder'], 'Document', title=u'Test document') self.portal['ca']['test-folder'].setDefaultPage('test-document') transaction.commit() self.browser.open(self.portal['ca']['test-folder'].absolute_url()) self.assertIn('test-folder/@@create_translation', self.browser.contents) self.assertIn('test-document/@@create_translation', self.browser.contents) def test_menu_is_not_visible_without_permission(self): # Add a new user without Owner, Editor or Manager role on # self.a_ca document self.portal.portal_registration.addMember('a_user', 'a_password', [ 'Reader', 'Contributor', 'Reviewer', ]) transaction.commit() browser = Browser(self.layer['app']) browser.addHeader('Authorization', 'Basic a_user:a_password') browser.open(self.a_ca.absolute_url()) self.assertNotIn('plone-contentmenu-multilingual', browser.contents)
class TestForm(unittest.TestCase): layer = PLONEAPPMULTILINGUAL_FUNCTIONAL_TESTING def setUp(self): self.portal = self.layer['portal'] # Setup multilingual site language_tool = getToolByName(self.portal, 'portal_languages') language_tool.addSupportedLanguage('it') language_tool.addSupportedLanguage('de') setupTool = SetupMultilingualSite() setupTool.setupSite(self.portal) # Setup test browser self.browser = Browser(self.layer['app']) self.browser.handleErrors = False self.browser.addHeader( 'Authorization', 'Basic %s:%s' % ( SITE_OWNER_NAME, SITE_OWNER_PASSWORD)) # Create sample document in 'en' and index it into catalog self.container = self.portal['en'] self.content_id = self.container.invokeFactory( type_name="Document", id="sampledocument-form") self.content = self.container[self.content_id] self.content.setLanguage('en') notify(ObjectAddedEvent(self.content)) import transaction transaction.commit() def testAllTranslationLinksAreShown(self): self.browser.open(self.content.absolute_url()) self.assertIn('plone-contentmenu-multilingual', self.browser.contents) self.assertIn('translate_into_it', self.browser.contents) self.assertIn('translate_into_de', self.browser.contents) def testTranslationFormCreatesTranslation(self): # Translate content self.browser.open( self.content.absolute_url() + '/@@create_translation?language=de') # Fill in translation details self.browser.getControl( name="form.widgets.IDublinCore.title").value = "sample title de" self.browser.getControl(name="form.buttons.save").click() import transaction transaction.commit() self.assertIn("sample-title-de", self.portal['de'].objectIds()) self.browser.open(self.content.absolute_url()) self.assertIn('plone-contentmenu-multilingual', self.browser.contents) self.assertIn('translate_into_it', self.browser.contents) self.assertNotIn('translate_into_de', self.browser.contents) def testTranslationCanBeUnregistered(self): # Create translation self.browser.open( self.content.absolute_url() + '/@@create_translation?language=de') # Fill in translation details self.browser.getControl( name="form.widgets.IDublinCore.title").value = "sample title de" self.browser.getControl(name="form.buttons.save").click() import transaction transaction.commit() # Unregister translation self.browser.open(self.content.absolute_url() + '/remove_translations?set_language=en') self.assertEqual( self.browser.getControl(name="form.widgets.languages:list").value, ['de']) self.browser.getControl("unlink selected").click() self.assertEqual( self.browser.getControl(name="form.widgets.languages:list").value, []) # Translation is unregistered self.browser.open(self.content.absolute_url()) self.assertIn('plone-contentmenu-multilingual', self.browser.contents) self.assertIn('translate_into_it', self.browser.contents) self.assertIn('translate_into_de', self.browser.contents) transaction.commit() # Content is still available self.assertIn('sample-title-de', self.portal['de'].contentIds()) def testRegisteringTranslation(self): # Create another page container = self.portal['de'] content_id = container.invokeFactory( type_name="Document", id="sampleform-de") content = container[content_id] content.setLanguage('de') notify(ObjectAddedEvent(content)) import transaction transaction.commit() # Register translation self.browser.open( self.content.absolute_url() + '/add_translations') self.assertEqual(self.browser.getControl( name="form.widgets.language:list").options, ['it', 'de']) # Fill in form form = self.browser.getForm(index=1) form.mech_form.new_control( type='radio', name='form.widgets.content:list', attrs=dict(checked='checked', value='%s' %'/'.join(content.getPhysicalPath()), id='form-widgets-content-0')) self.browser.getControl( name="form.widgets.language:list").value = ['de'] self.browser.getControl( name='form.buttons.add_translations').click() # Language is removed from nontranslated languages self.assertEqual(self.browser.getControl( name="form.widgets.language:list").options, ['it']) # And translation can be unregistered self.browser.open(self.content.absolute_url() + '/remove_translations') self.assertEqual(self.browser.getControl( name="form.widgets.languages:list").value, ['de']) def testTranslationCanBeRemovedByDeleting(self): # Translate content self.browser.open( self.content.absolute_url() + '/@@create_translation?language=de') # Fill in translation details self.browser.getControl( name="form.widgets.IDublinCore.title").value = "sample title de" self.browser.getControl(name="form.buttons.save").click() # Remove translation self.browser.open(self.content.absolute_url() + '/remove_translations') self.browser.getControl("remove selected").click() self.assertEqual(self.browser.getControl( name="form.widgets.languages:list").value, []) self.portal._p_jar.sync() self.assertNotIn('sample-title-de', self.portal['de'].objectIds()) def testFolderishContentCanBeTransalte(self): self.container.invokeFactory(type_name="Folder", id="samplefolder") notify(ObjectAddedEvent(self.container.samplefolder)) import transaction transaction.commit() self.browser.open( self.portal.absolute_url() + '/en/samplefolder/@@create_translation?language=de') self.browser.getControl(name="form.widgets.IDublinCore.title").value =\ "sample folder title de" self.browser.getControl(name="form.buttons.save").click() self.portal._p_jar.sync() self.assertIn('sample-folder-title-de', self.portal['de'].objectIds()) def testContentInFoldersCanBeTranslated(self): self.container.invokeFactory(type_name="Folder", id="samplefolder") notify(ObjectAddedEvent(self.container.samplefolder)) folder = self.container['samplefolder'] content_id = folder.invokeFactory( type_name="Document", id="sampledocument_in_folder") notify(ObjectAddedEvent(folder[content_id])) import transaction transaction.commit() self.browser.open( folder.absolute_url() + '/' + content_id + '/@@create_translation?language=de') self.browser.getControl(name="form.widgets.IDublinCore.title").value =\ "sample folder content title de" self.browser.getControl(name="form.buttons.save").click() self.portal._p_jar.sync() self.assertIn('sample-folder-content-title-de', self.portal['de'].objectIds())
class TestForm(unittest.TestCase): layer = PAM_FUNCTIONAL_TESTING def setUp(self): self.portal = self.layer["portal"] # Setup test browser self.browser = Browser(self.layer["app"]) self.browser.handleErrors = False self.browser.addHeader("Authorization", "Basic %s:%s" % (SITE_OWNER_NAME, SITE_OWNER_PASSWORD)) def test_all_translation_links_are_shown(self): a_ca = createContentInContainer(self.portal["ca"], "Document", title=u"Test document") transaction.commit() self.browser.open(a_ca.absolute_url()) self.assertIn("plone-contentmenu-multilingual", self.browser.contents) self.assertIn("translate_into_es", self.browser.contents) self.assertIn("translate_into_en", self.browser.contents) def test_translation_form_creates_translation(self): a_ca = createContentInContainer(self.portal["ca"], "Document", title=u"Test document") transaction.commit() # Translate content self.browser.open(a_ca.absolute_url() + "/@@create_translation?language=en") # Fill in translation details self.browser.getControl(name="form.widgets.IDublinCore.title").value = u"Test document" self.browser.getControl(name="form.buttons.save").click() self.portal._p_jar.sync() self.assertIn("test-document", self.portal["en"].objectIds()) self.browser.open(a_ca.absolute_url()) self.assertIn("plone-contentmenu-multilingual", self.browser.contents) self.assertIn("translate_into_es", self.browser.contents) self.assertNotIn("translate_into_en", self.browser.contents) def test_translation_can_be_unregistered(self): a_ca = createContentInContainer(self.portal["ca"], "Document", title=u"Test document") transaction.commit() # Create translation self.browser.open(a_ca.absolute_url() + "/@@create_translation?language=en") # Fill in translation details self.browser.getControl(name="form.widgets.IDublinCore.title").value = u"Test document" self.browser.getControl(name="form.buttons.save").click() # Unregister translation self.browser.open(a_ca.absolute_url() + "/remove_translations?set_language=en") self.portal._p_jar.sync() self.assertEqual(self.browser.getControl(name="form.widgets.languages:list").value, ["en"]) self.browser.getControl(name="form.buttons.unlink").click() self.assertEqual(self.browser.getControl(name="form.widgets.languages:list").value, []) # Translation is unregistered self.browser.open(a_ca.absolute_url()) self.assertIn("plone-contentmenu-multilingual", self.browser.contents) self.assertIn("translate_into_es", self.browser.contents) self.assertIn("translate_into_en", self.browser.contents) transaction.commit() # Content is still available self.assertIn("test-document", self.portal["en"].contentIds()) def test_registering_translation(self): a_ca = createContentInContainer(self.portal["ca"], "Document", title=u"Test document") b_ca = createContentInContainer(self.portal["ca"], "Document", title=u"Test document") transaction.commit() # Register translation self.browser.open(a_ca.absolute_url() + "/add_translations") self.assertEqual(self.browser.getControl(name="form.widgets.language:list").options, ["en", "es"]) # Fill in form form = self.browser.getForm(index=1) form.mech_form.new_control( type="radio", name="form.widgets.content:list", attrs=dict(checked="checked", value="%s" % "/".join(b_ca.getPhysicalPath()), id="form-widgets-content-0"), ) self.browser.getControl(name="form.widgets.language:list").value = ["en"] self.browser.getControl(name="form.buttons.add_translations").click() # Language is removed from nontranslated languages self.assertEqual(self.browser.getControl(name="form.widgets.language:list").options, ["es"]) # And translation can be unregistered self.browser.open(a_ca.absolute_url() + "/remove_translations") self.assertEqual(self.browser.getControl(name="form.widgets.languages:list").value, ["en"]) def test_translation_can_be_removed_by_deleting(self): a_ca = createContentInContainer(self.portal["ca"], "Document", title=u"Test document") transaction.commit() # Translate content self.browser.open(a_ca.absolute_url() + "/@@create_translation?language=en") # Fill in translation details self.browser.getControl(name="form.widgets.IDublinCore.title").value = u"Test document" self.browser.getControl(name="form.buttons.save").click() # Remove translation self.browser.open(a_ca.absolute_url() + "/remove_translations") self.browser.getControl(name="form.buttons.remove").click() self.assertEqual(self.browser.getControl(name="form.widgets.languages:list").value, []) self.portal._p_jar.sync() self.assertNotIn("test-document", self.portal["en"].objectIds()) def test_folderish_content_can_be_translated(self): createContentInContainer(self.portal["ca"], "Folder", title=u"Test folder") transaction.commit() self.browser.open(self.portal.absolute_url() + "/ca/test-folder/@@create_translation?language=en") self.browser.getControl(name="form.widgets.IDublinCore.title").value = u"Test folder" self.browser.getControl(name="form.buttons.save").click() self.portal._p_jar.sync() self.assertIn("test-folder", self.portal["en"].objectIds()) def test_content_in_folders_can_be_translated(self): af_ca = createContentInContainer(self.portal["ca"], "Folder", title=u"Test folder") b_ca = createContentInContainer(self.portal["ca"]["test-folder"], "Document", title=u"Test document") transaction.commit() self.browser.open(af_ca.absolute_url() + "/" + b_ca.id + "/@@create_translation?language=en") self.browser.getControl(name="form.widgets.IDublinCore.title").value = u"Test folder" self.browser.getControl(name="form.buttons.save").click() self.portal._p_jar.sync() self.assertIn("test-folder", self.portal["en"].objectIds())
class TestForm(unittest.TestCase): layer = PAM_FUNCTIONAL_TESTING def setUp(self): self.portal = self.layer['portal'] # Setup test browser self.browser = Browser(self.layer['app']) self.browser.handleErrors = False self.browser.addHeader( 'Authorization', 'Basic %s:%s' % (SITE_OWNER_NAME, SITE_OWNER_PASSWORD)) def test_all_translation_links_are_shown(self): a_ca = createContentInContainer(self.portal['ca'], 'Document', title=u"Test document") transaction.commit() self.browser.open(a_ca.absolute_url()) self.assertIn('plone-contentmenu-multilingual', self.browser.contents) self.assertIn('translate_into_es', self.browser.contents) self.assertIn('translate_into_en', self.browser.contents) def test_translation_form_creates_translation(self): a_ca = createContentInContainer(self.portal['ca'], 'Document', title=u"Test document") transaction.commit() # Translate content self.browser.open(a_ca.absolute_url() + '/@@create_translation?language=en') # Fill in translation details self.browser.getControl( name="form.widgets.IDublinCore.title").value = u"Test document" self.browser.getControl(name="form.buttons.save").click() self.portal._p_jar.sync() self.assertIn("test-document", self.portal['en'].objectIds()) self.browser.open(a_ca.absolute_url()) self.assertIn('plone-contentmenu-multilingual', self.browser.contents) self.assertIn('translate_into_es', self.browser.contents) self.assertNotIn('translate_into_en', self.browser.contents) def test_translation_form_prevents_translating_twice(self): a_ca = createContentInContainer(self.portal['ca'], 'Document', title=u"Test document") transaction.commit() # Translate content self.browser.open(a_ca.absolute_url() + '/@@create_translation?language=en') # Save ++add++translation... URL add_translation_url = self.browser.url # Fill in translation details self.browser.getControl( name="form.widgets.IDublinCore.title").value = u"Test document" self.browser.getControl(name="form.buttons.save").click() self.portal._p_jar.sync() # Revisit the saved ++add++translation... URL self.browser.open(add_translation_url) # Which should now redirect to the created translation self.assertEqual(self.portal['en']['test-document'].absolute_url(), self.browser.url) def test_translation_can_be_unregistered(self): a_ca = createContentInContainer(self.portal['ca'], 'Document', title=u"Test document") transaction.commit() # Create translation self.browser.open(a_ca.absolute_url() + '/@@create_translation?language=en') # Fill in translation details self.browser.getControl( name="form.widgets.IDublinCore.title").value = u"Test document" self.browser.getControl(name="form.buttons.save").click() # Unregister translation self.browser.open(a_ca.absolute_url() + '/remove_translations?set_language=en') self.portal._p_jar.sync() self.assertEqual( self.browser.getControl(name="form.widgets.languages:list").value, ['en']) self.browser.getControl(name='form.buttons.unlink').click() self.assertEqual( self.browser.getControl(name="form.widgets.languages:list").value, []) # Translation is unregistered self.browser.open(a_ca.absolute_url()) self.assertIn('plone-contentmenu-multilingual', self.browser.contents) self.assertIn('translate_into_es', self.browser.contents) self.assertIn('translate_into_en', self.browser.contents) transaction.commit() # Content is still available self.assertIn('test-document', self.portal['en'].contentIds()) def test_registering_translation(self): a_ca = createContentInContainer(self.portal['ca'], 'Document', title=u"Test document") b_ca = createContentInContainer(self.portal['ca'], 'Document', title=u"Test document") transaction.commit() # Register translation self.browser.open(a_ca.absolute_url() + '/add_translations') self.assertEqual( self.browser.getControl(name="form.widgets.language:list").options, ['en', 'es']) # Fill in form form = self.browser.getForm(index=1) form.mech_form.new_control(type='radio', name='form.widgets.content:list', attrs=dict(checked='checked', value='%s' % '/'.join(b_ca.getPhysicalPath()), id='form-widgets-content-0')) self.browser.getControl(name="form.widgets.language:list").value = [ 'en' ] self.browser.getControl(name='form.buttons.add_translations').click() # Language is removed from nontranslated languages self.assertEqual( self.browser.getControl(name="form.widgets.language:list").options, ['es']) # And translation can be unregistered self.browser.open(a_ca.absolute_url() + '/remove_translations') self.assertEqual( self.browser.getControl(name="form.widgets.languages:list").value, ['en']) def test_translation_can_be_removed_by_deleting(self): a_ca = createContentInContainer(self.portal['ca'], 'Document', title=u"Test document") transaction.commit() # Translate content self.browser.open(a_ca.absolute_url() + '/@@create_translation?language=en') # Fill in translation details self.browser.getControl( name="form.widgets.IDublinCore.title").value = u"Test document" self.browser.getControl(name="form.buttons.save").click() # Remove translation self.browser.open(a_ca.absolute_url() + '/remove_translations') self.browser.getControl(name='form.buttons.remove').click() self.assertEqual( self.browser.getControl(name="form.widgets.languages:list").value, []) self.portal._p_jar.sync() self.assertNotIn('test-document', self.portal['en'].objectIds()) def test_folderish_content_can_be_translated(self): createContentInContainer(self.portal['ca'], 'Folder', title=u"Test folder") transaction.commit() self.browser.open(self.portal.absolute_url() + '/ca/test-folder/@@create_translation?language=en') self.browser.getControl( name="form.widgets.IDublinCore.title").value = u"Test folder" self.browser.getControl(name="form.buttons.save").click() self.portal._p_jar.sync() self.assertIn('test-folder', self.portal['en'].objectIds()) def test_content_in_folders_can_be_translated(self): af_ca = createContentInContainer(self.portal['ca'], 'Folder', title=u"Test folder") b_ca = createContentInContainer(self.portal['ca']['test-folder'], 'Document', title=u"Test document") transaction.commit() self.browser.open(af_ca.absolute_url() + '/' + b_ca.id + '/@@create_translation?language=en') self.browser.getControl( name="form.widgets.IDublinCore.title").value = u"Test folder" self.browser.getControl(name="form.buttons.save").click() self.portal._p_jar.sync() self.assertIn('test-folder', self.portal['en'].objectIds())
class TestMenu(unittest.TestCase): layer = PAM_FUNCTIONAL_TESTING def setUp(self): self.portal = self.layer['portal'] # Setup test browser self.browser = Browser(self.layer['app']) self.browser.handleErrors = False self.browser.addHeader( 'Authorization', 'Basic {0:s}:{1:s}'.format( SITE_OWNER_NAME, SITE_OWNER_PASSWORD)) # Create sample document in 'en' and index it into catalog self.a_ca = createContentInContainer( self.portal['ca'], 'Document', title=u'Test document') transaction.commit() def test_menu_is_visible(self): self.browser.open(self.a_ca.absolute_url()) self.assertIn('Translate', self.browser.contents) def test_menu_contains_translatable_entries(self): self.browser.open(self.a_ca.absolute_url()) self.assertIn('translate_into_es', self.browser.contents) self.assertIn('translate_into_en', self.browser.contents) def test_menu_does_not_contain_translated_entries(self): self.browser.open(self.a_ca.absolute_url()) self.assertNotIn('translate_into_ca', self.browser.contents) def test_menu_does_not_appear_without_ITranslatable(self): self.browser.open(self.portal.absolute_url() + '/folder_listing') self.assertNotIn('Translate', self.browser.contents) def test_menu_is_visible_on_folder_default_page(self): createContentInContainer( self.portal['ca'], 'Folder', title=u'Test folder') createContentInContainer( self.portal['ca']['test-folder'], 'Document', title=u'Test document') self.portal['ca']['test-folder'].setDefaultPage('test-document') transaction.commit() self.browser.open( self.portal['ca']['test-folder'].absolute_url()) self.assertIn( 'test-folder/@@create_translation', self.browser.contents) self.assertIn( 'test-document/@@create_translation', self.browser.contents) def test_menu_is_not_visible_without_permission(self): # Add a new user without Owner, Editor or Manager role on # self.a_ca document self.portal.portal_registration.addMember( 'a_user', 'a_password', ['Reader', 'Contributor', 'Reviewer', ]) transaction.commit() browser = Browser(self.layer['app']) browser.addHeader('Authorization', 'Basic a_user:a_password') browser.open(self.a_ca.absolute_url()) self.assertNotIn('plone-contentmenu-multilingual', browser.contents)
class TestForm(unittest.TestCase): layer = PAM_FUNCTIONAL_TESTING def setUp(self): self.portal = self.layer['portal'] alsoProvides(self.layer['request'], IPloneAppMultilingualInstalled) # Setup test browser self.browser = Browser(self.layer['app']) self.browser.handleErrors = False self.browser.addHeader( 'Authorization', 'Basic %s:%s' % ( SITE_OWNER_NAME, SITE_OWNER_PASSWORD)) def test_all_translation_links_are_shown(self): a_ca = createContentInContainer( self.portal['ca'], 'Document', title=u"Test document") transaction.commit() self.browser.open(a_ca.absolute_url()) self.assertIn('plone-contentmenu-multilingual', self.browser.contents) self.assertIn('translate_into_es', self.browser.contents) self.assertIn('translate_into_en', self.browser.contents) def test_translation_form_creates_translation(self): a_ca = createContentInContainer( self.portal['ca'], 'Document', title=u"Test document") transaction.commit() # Translate content self.browser.open( a_ca.absolute_url() + '/@@create_translation?language=en') # Fill in translation details self.browser.getControl( name="form.widgets.IDublinCore.title").value = u"Test document" self.browser.getControl(name="form.buttons.save").click() self.portal._p_jar.sync() self.assertIn("test-document", self.portal['en'].objectIds()) self.browser.open(a_ca.absolute_url()) self.assertIn('plone-contentmenu-multilingual', self.browser.contents) self.assertIn('translate_into_es', self.browser.contents) self.assertNotIn('translate_into_en', self.browser.contents) def test_translation_form_prevents_translating_twice(self): a_ca = createContentInContainer( self.portal['ca'], 'Document', title=u"Test document") transaction.commit() # Translate content self.browser.open( a_ca.absolute_url() + '/@@create_translation?language=en') # Save ++add++translation... URL add_translation_url = self.browser.url # Fill in translation details self.browser.getControl( name="form.widgets.IDublinCore.title").value = u"Test document" self.browser.getControl(name="form.buttons.save").click() self.portal._p_jar.sync() # Revisit the saved ++add++translation... URL self.browser.open(add_translation_url) # Which should now redirect to the created translation self.assertEqual(self.portal['en']['test-document'].absolute_url(), self.browser.url) def test_translation_can_be_unregistered(self): a_ca = createContentInContainer( self.portal['ca'], 'Document', title=u"Test document") transaction.commit() # Create translation self.browser.open(a_ca.absolute_url() + '/@@create_translation?language=en') # Fill in translation details self.browser.getControl( name="form.widgets.IDublinCore.title").value = u"Test document" self.browser.getControl(name="form.buttons.save").click() # Unregister translation self.browser.open(a_ca.absolute_url() + '/disconnect_translation?came_from={0}&language=en' .format(a_ca.UID())) self.browser.getForm(index=1).submit() self.portal._p_jar.sync() self.assertNotIn('en', ITranslationManager(a_ca).get_translations()) # self.assertEqual( # self.browser.getControl(name="form.widgets.languages:list").value, # ['en']) # self.browser.getControl(name='form.buttons.unlink').click() # self.assertEqual( # self.browser.getControl(name="form.widgets.languages:list").value, # []) # Translation is unregistered self.browser.open(a_ca.absolute_url()) self.assertIn('plone-contentmenu-multilingual', self.browser.contents) self.assertIn('translate_into_es', self.browser.contents) self.assertIn('translate_into_en', self.browser.contents) transaction.commit() # Content is still available self.assertIn('test-document', self.portal['en'].contentIds()) # Removed because its testes on robot framework with the relation pattern # def test_registering_translation(self): # a_ca = createContentInContainer( # self.portal['ca'], 'Document', title=u"Test document") # b_ca = createContentInContainer( # self.portal['ca'], 'Document', title=u"Test document") # transaction.commit() # # Register translation # self.browser.open( # a_ca.absolute_url() + '/add_translations') # self.assertEqual(self.browser.getControl( # name="form.widgets.language:list").options, ['en', 'es']) # # Fill in form # form = self.browser.getForm(index=1) # form.mech_form.new_control( # type='radio', # name='form.widgets.content:list', # attrs=dict(checked='checked', # value='%s' % '/'.join(b_ca.getPhysicalPath()), # id='form-widgets-content-0')) # self.browser.getControl( # name="form.widgets.language:list").value = ['en'] # self.browser.getControl( # name='form.buttons.add_translations').click() # # Language is removed from nontranslated languages # self.assertEqual(self.browser.getControl( # name="form.widgets.language:list").options, ['es']) # # And translation can be unregistered # self.browser.open(a_ca.absolute_url() + '/remove_translations') # self.assertEqual(self.browser.getControl( # name="form.widgets.languages:list").value, ['en']) def test_translation_can_be_removed_by_deleting(self): a_ca = createContentInContainer( self.portal['ca'], 'Document', title=u"Test document") transaction.commit() # Translate content self.browser.open(a_ca.absolute_url() + '/@@create_translation?language=en') # Fill in translation details self.browser.getControl( name="form.widgets.IDublinCore.title").value = u"Test document" self.browser.getControl(name="form.buttons.save").click() # Remove translation self.browser.open( ITranslationManager(a_ca).get_translation('en').absolute_url() + '/delete_confirmation') self.browser.getControl(name='form.buttons.Delete').click() self.portal._p_jar.sync() self.assertNotIn('en', ITranslationManager(a_ca).get_translations()) def test_folderish_content_can_be_translated(self): createContentInContainer( self.portal['ca'], 'Folder', title=u"Test folder") transaction.commit() self.browser.open(self.portal.absolute_url() + '/ca/test-folder/@@create_translation?language=en') self.browser.getControl( name="form.widgets.IDublinCore.title").value = u"Test folder" self.browser.getControl(name="form.buttons.save").click() self.portal._p_jar.sync() self.assertIn('test-folder', self.portal['en'].objectIds()) def test_content_in_folders_can_be_translated(self): af_ca = createContentInContainer( self.portal['ca'], 'Folder', title=u"Test folder") b_ca = createContentInContainer( self.portal['ca']['test-folder'], 'Document', title=u"Test document") transaction.commit() self.browser.open(af_ca.absolute_url() + '/' + b_ca.id + '/@@create_translation?language=en') self.browser.getControl( name="form.widgets.IDublinCore.title").value = u"Test folder" self.browser.getControl(name="form.buttons.save").click() self.portal._p_jar.sync() self.assertIn('test-folder', self.portal['en'].objectIds())
class TestMenu(unittest.TestCase): layer = PLONEAPPMULTILINGUAL_FUNCTIONAL_TESTING def setUp(self): self.portal = self.layer['portal'] # Setup test browser self.browser = Browser(self.layer['app']) self.browser.handleErrors = False self.browser.addHeader( 'Authorization', 'Basic %s:%s' % ( SITE_OWNER_NAME, SITE_OWNER_PASSWORD)) # Configure languages self.portal_url = self.portal.absolute_url() self.lang_tool = getToolByName(self.portal, 'portal_languages') self.lang_tool.supported_langs = ['en', 'it', 'de'] # Create language root folder for 'en' self.portal.invokeFactory(type_name="Folder", id="en") self.container = self.portal['en'] self.container.setLanguage('en') # Create sample document in 'en' and index it into catalog content_id = self.container.invokeFactory( type_name="Document", id="sampledocument-form") self.content = self.container[content_id] self.content.setLanguage('en') notify(ObjectAddedEvent(self.content)) import transaction transaction.commit() def testMenuIsVisible(self): self.browser.open(self.content.absolute_url()) self.assertIn('Translate', self.browser.contents) def testMenuContainsTranslatableEntries(self): self.browser.open(self.content.absolute_url()) self.assertIn('translate_into_it', self.browser.contents) self.assertIn('translate_into_de', self.browser.contents) def testMenuDoesNotContainTranslatedEntries(self): self.browser.open(self.content.absolute_url()) self.assertNotIn('translate_into_en', self.browser.contents) def testMenuDoesNotAppearWithoutITranslatable(self): self.browser.open(self.portal.absolute_url() + '/folder_listing') self.assertNotIn('Translate', self.browser.contents) def testMenuIsVisibleOnFolderDefaultPage(self): self.container.setDefaultPage('sampledocument-form') import transaction transaction.commit() self.browser.open(self.container.absolute_url()) self.assertIn("en/@@create_translation", self.browser.contents) self.assertIn("sampledocument-form/@@create_translation", self.browser.contents)
class TestForm(unittest.TestCase): layer = PAM_FUNCTIONAL_TESTING def setUp(self): self.portal = self.layer['portal'] # Setup test browser self.browser = Browser(self.layer['app']) self.browser.handleErrors = False self.browser.addHeader( 'Authorization', 'Basic %s:%s' % ( SITE_OWNER_NAME, SITE_OWNER_PASSWORD)) def test_all_translation_links_are_shown(self): a_ca = createContentInContainer( self.portal['ca'], 'Document', title=u"Test document") transaction.commit() self.browser.open(a_ca.absolute_url()) self.assertIn('plone-contentmenu-multilingual', self.browser.contents) self.assertIn('translate_into_es', self.browser.contents) self.assertIn('translate_into_en', self.browser.contents) def test_translation_form_creates_translation(self): a_ca = createContentInContainer( self.portal['ca'], 'Document', title=u"Test document") transaction.commit() # Translate content self.browser.open( a_ca.absolute_url() + '/@@create_translation?language=en') # Fill in translation details self.browser.getControl( name="form.widgets.IDublinCore.title").value = u"Test document" self.browser.getControl(name="form.buttons.save").click() self.portal._p_jar.sync() self.assertIn("test-document", self.portal['en'].objectIds()) self.browser.open(a_ca.absolute_url()) self.assertIn('plone-contentmenu-multilingual', self.browser.contents) self.assertIn('translate_into_es', self.browser.contents) self.assertNotIn('translate_into_en', self.browser.contents) def test_translation_can_be_unregistered(self): a_ca = createContentInContainer( self.portal['ca'], 'Document', title=u"Test document") transaction.commit() # Create translation self.browser.open( a_ca.absolute_url() + '/@@create_translation?language=en') # Fill in translation details self.browser.getControl( name="form.widgets.IDublinCore.title").value = u"Test document" self.browser.getControl(name="form.buttons.save").click() # Unregister translation self.browser.open(a_ca.absolute_url() + '/remove_translations?set_language=en') self.portal._p_jar.sync() self.assertEqual( self.browser.getControl(name="form.widgets.languages:list").value, ['en']) self.browser.getControl(name='form.buttons.unlink').click() self.assertEqual( self.browser.getControl(name="form.widgets.languages:list").value, []) # Translation is unregistered self.browser.open(a_ca.absolute_url()) self.assertIn('plone-contentmenu-multilingual', self.browser.contents) self.assertIn('translate_into_es', self.browser.contents) self.assertIn('translate_into_en', self.browser.contents) transaction.commit() # Content is still available self.assertIn('test-document', self.portal['en'].contentIds()) def test_registering_translation(self): a_ca = createContentInContainer( self.portal['ca'], 'Document', title=u"Test document") b_ca = createContentInContainer( self.portal['ca'], 'Document', title=u"Test document") transaction.commit() # Register translation self.browser.open( a_ca.absolute_url() + '/add_translations') self.assertEqual(self.browser.getControl( name="form.widgets.language:list").options, ['en', 'es']) # Fill in form form = self.browser.getForm(index=1) form.mech_form.new_control( type='radio', name='form.widgets.content:list', attrs=dict(checked='checked', value='%s' % '/'.join(b_ca.getPhysicalPath()), id='form-widgets-content-0')) self.browser.getControl( name="form.widgets.language:list").value = ['en'] self.browser.getControl( name='form.buttons.add_translations').click() # Language is removed from nontranslated languages self.assertEqual(self.browser.getControl( name="form.widgets.language:list").options, ['es']) # And translation can be unregistered self.browser.open(a_ca.absolute_url() + '/remove_translations') self.assertEqual(self.browser.getControl( name="form.widgets.languages:list").value, ['en']) def test_translation_can_be_removed_by_deleting(self): a_ca = createContentInContainer( self.portal['ca'], 'Document', title=u"Test document") transaction.commit() # Translate content self.browser.open( a_ca.absolute_url() + '/@@create_translation?language=en') # Fill in translation details self.browser.getControl( name="form.widgets.IDublinCore.title").value = u"Test document" self.browser.getControl(name="form.buttons.save").click() # Remove translation self.browser.open(a_ca.absolute_url() + '/remove_translations') self.browser.getControl(name='form.buttons.remove').click() self.assertEqual(self.browser.getControl( name="form.widgets.languages:list").value, []) self.portal._p_jar.sync() self.assertNotIn('test-document', self.portal['en'].objectIds()) def test_folderish_content_can_be_translated(self): createContentInContainer( self.portal['ca'], 'Folder', title=u"Test folder") transaction.commit() self.browser.open( self.portal.absolute_url() + '/ca/test-folder/@@create_translation?language=en') self.browser.getControl( name="form.widgets.IDublinCore.title").value = u"Test folder" self.browser.getControl(name="form.buttons.save").click() self.portal._p_jar.sync() self.assertIn('test-folder', self.portal['en'].objectIds()) def test_content_in_folders_can_be_translated(self): af_ca = createContentInContainer( self.portal['ca'], 'Folder', title=u"Test folder") b_ca = createContentInContainer( self.portal['ca']['test-folder'], 'Document', title=u"Test document") transaction.commit() self.browser.open( af_ca.absolute_url() + '/' + b_ca.id + '/@@create_translation?language=en') self.browser.getControl( name="form.widgets.IDublinCore.title").value = u"Test folder" self.browser.getControl(name="form.buttons.save").click() self.portal._p_jar.sync() self.assertIn('test-folder', self.portal['en'].objectIds())