def test_Title_on_brains_returns_title_in_preferred_language(self, browser): self.login(self.regular_user) set_preferred_language(self.portal.REQUEST, 'fr-ch') self.assertEquals('Syst\xc3\xa8me de classement', obj2brain(self.repository_root).Title)
def test_filename_conflicts_are_avoided_by_prefixing_attachment_number(self, browser): set_preferred_language(self.portal.REQUEST, 'de-ch') browser.append_request_header('Accept-Language', 'de-ch') self.login(self.committee_responsible, browser) documents = [ create(Builder('document') .within(self.dossier) .titled('The same title') .with_dummy_content()) for i in range(3)] proposal, submitted_proposal = create(Builder('proposal') .within(self.dossier) .having(committee=self.committee.load_model()) .with_submitted() .relate_to(*documents)) self.schedule_proposal(self.meeting, submitted_proposal) browser.open(self.meeting, view='export-meeting-zip') self.assertEquals('application/zip', browser.contenttype) zip_file = ZipFile(StringIO(browser.contents), 'r') meeting_json = json.loads(zip_file.read('meeting.json')) expected_file_names = [u'Traktandum 1/Beilage/1_The same title.doc', u'Traktandum 1/Beilage/2_The same title.doc', u'Traktandum 1/Beilage/3_The same title.doc'] json_file_names = [attachment.get("file") for attachment in meeting_json["meetings"][0]['agenda_items'][0]["attachments"]] self.assertItemsEqual(expected_file_names, json_file_names) expected_file_names.extend(['meeting.json', 'Traktandum 1/Fooo.docx']) file_names = zip_file.namelist() self.assertItemsEqual(expected_file_names, file_names)
def test_Title_on_brains_uses_Title_when_type_does_not_support_translated_title(self, browser): dossier = create(Builder('dossier').titled(u'F\xfchrung')) set_preferred_language(self.portal.REQUEST, 'de') self.assertEquals("F\xc3\xbchrung", obj2brain(dossier).Title) set_preferred_language(self.portal.REQUEST, 'fr') self.assertEquals("F\xc3\xbchrung", obj2brain(dossier).Title)
def test_Title_on_brains_returns_title_in_preferred_language( self, browser): self.login(self.regular_user) set_preferred_language(self.portal.REQUEST, 'fr-ch') self.assertEquals('Syst\xc3\xa8me de classement', obj2brain(self.repository_root).Title)
def test_Title_on_brains_uses_Title_when_type_does_not_support_translated_title( self, browser): dossier = create(Builder('dossier').titled(u'F\xfchrung')) set_preferred_language(self.portal.REQUEST, 'de') self.assertEquals("F\xc3\xbchrung", obj2brain(dossier).Title) set_preferred_language(self.portal.REQUEST, 'fr') self.assertEquals("F\xc3\xbchrung", obj2brain(dossier).Title)
def test_translated_title_returns_title_in_asked_language(self, browser): self.login(self.regular_user, browser=browser) set_preferred_language(self.portal.REQUEST, 'de-ch') self.assertEquals( u"Syst\xe8me de classement", ITranslatedTitle(self.repository_root).translated_title(language='fr'))
def test_Title_returns_title_in_current_language(self): self.login(self.regular_user) set_preferred_language(self.portal.REQUEST, 'fr-ch') self.assertEquals('1.1. Contrats et accords', self.leaf_repofolder.Title()) set_preferred_language(self.portal.REQUEST, 'de-ch') self.assertEquals('1.1. Vertr\xc3\xa4ge und Vereinbarungen', self.leaf_repofolder.Title())
def test_Title_returns_title_in_current_language(self): set_preferred_language(self.portal.REQUEST, 'fr-ch') self.assertEquals('1.1. Contrats et accords', self.leaf_repofolder.Title()) set_preferred_language(self.portal.REQUEST, 'de-ch') self.assertEquals('1.1. Vertr\xc3\xa4ge und Vereinbarungen', self.leaf_repofolder.Title())
def test_translated_title_returns_title_in_asked_language(self, browser): repository_root = create( Builder('repository_root').having(title_de=u"Ablage", title_fr=u"syst\xe8me d'ordre")) set_preferred_language(self.portal.REQUEST, 'de-ch') self.assertEquals( u"syst\xe8me d'ordre", ITranslatedTitle(repository_root).translated_title(language='fr'))
def test_Title_on_brains_returns_title_in_preferred_language(self, browser): repository_root = create(Builder('repository_root') .having(title_de=u"Ablage", title_fr=u"syst\xe8me d'ordre")) set_preferred_language(self.portal.REQUEST, 'fr-ch') self.assertEquals("syst\xc3\xa8me d'ordre", obj2brain(repository_root).Title)
def test_translated_title_returns_title_in_asked_language(self, browser): repository_root = create(Builder('repository_root') .having(title_de=u"Ablage", title_fr=u"syst\xe8me d'ordre")) set_preferred_language(self.portal.REQUEST, 'de-ch') self.assertEquals( u"syst\xe8me d'ordre", ITranslatedTitle(repository_root).translated_title(language='fr'))
def test_translated_title_returns_title_in_asked_language(self, browser): self.login(self.regular_user, browser=browser) set_preferred_language(self.portal.REQUEST, 'de-ch') self.assertEquals( u"Syst\xe8me de classement", ITranslatedTitle( self.repository_root).translated_title(language='fr'))
def test_Title_on_brains_returns_title_in_preferred_language( self, browser): repository_root = create( Builder('repository_root').having(title_de=u"Ablage", title_fr=u"syst\xe8me d'ordre")) set_preferred_language(self.portal.REQUEST, 'fr-ch') self.assertEquals("syst\xc3\xa8me d'ordre", obj2brain(repository_root).Title)
def test_Title_on_brains_uses_Title_when_type_does_not_support_translated_title(self, browser): self.login(self.regular_user) set_preferred_language(self.portal.REQUEST, 'de-ch') self.assertEquals('Vertr\xc3\xa4ge mit der kantonalen Finanzverwaltung', obj2brain(self.dossier).Title) set_preferred_language(self.portal.REQUEST, 'fr-ch') self.assertEquals('Vertr\xc3\xa4ge mit der kantonalen Finanzverwaltung', obj2brain(self.dossier).Title)
def test_meeting_data_for_zip_export_json(self): set_preferred_language(self.portal.REQUEST, 'de-ch') self.login(self.committee_responsible) self.schedule_paragraph(self.meeting, u'A Gesch\xfcfte') with freeze(localized_datetime(2017, 12, 13)): self.schedule_ad_hoc(self.meeting, u'Ad-hoc Traktand\xfem') self.schedule_proposal(self.meeting, self.submitted_proposal) serializer = MeetingJSONSerializer( self.meeting.model, MeetingDocumentZipper(self.meeting.model, None)) serializer.traverse() expected_agenda_items = { 'agenda_items': [ {'opengever_id': 2, 'sort_order': 1, 'title': u'A Gesch\xfcfte'}, { 'number': '1.', 'number_raw': 1, 'opengever_id': 3, 'proposal': { 'checksum': 'e00d6c8fb32c30d3ca3a3f8e5d873565482567561023016d9ca18243ff1cfa14', 'file': 'Traktandum 1/Ad-hoc Traktandthm.docx', 'modified': u'2017-12-13T00:00:00+01:00', }, 'sort_order': 2, 'title': u'Ad-hoc Traktand\xfem' }, { 'attachments': [{ 'checksum': '51d6317494eccc4a73154625a6820cb6b50dc1455eb4cf26399299d4f9ce77b2', 'file': 'Traktandum 2/Beilage/1_Vertraegsentwurf.docx', 'modified': u'2016-08-31T16:09:37+02:00', 'title': u'Vertr\xe4gsentwurf', }], 'number': '2.', 'number_raw': 2, 'opengever_id': 4, 'proposal': { 'checksum': '114e7a059dc34c7459dab90904685584e331089d80bb6310183a0de009b66c3b', 'file': 'Traktandum 2/Vertraege.docx', 'modified': u'2016-08-31T16:09:35+02:00', }, 'sort_order': 3, 'title': u'Vertr\xe4ge', }, ], 'committee': {'oguid': u'plone:1009313300', 'title': u'Rechnungspr\xfcfungskommission'}, 'end': u'2016-09-12T17:00:00+00:00', 'location': u'B\xfcren an der Aare', 'opengever_id': 1, 'start': u'2016-09-12T15:30:00+00:00', 'title': u'9. Sitzung der Rechnungspr\xfcfungskommission', } self.assertEquals(expected_agenda_items, serializer.data)
def test_task_zip_export_prefix_de(self): set_preferred_language(self.request, 'de-ch') self.login(self.dossier_responsible) task_zip_adapter = getMultiAdapter((self.task, self.request), interface=IZipRepresentation) paths = [ path_and_file[0] for path_and_file in task_zip_adapter.get_files() ] expected_paths = [ u'/Aufgabe - Rechtliche Grundlagen in Vertragsentwurf \xdcberpr\xfcfen', u'/Feedback zum Vertragsentwurf.docx', ] self.assertEqual(paths, expected_paths)
def test_Title_on_brains_uses_Title_when_type_does_not_support_translated_title( self, browser): self.login(self.regular_user) set_preferred_language(self.portal.REQUEST, 'de-ch') self.assertEquals( 'Vertr\xc3\xa4ge mit der kantonalen Finanzverwaltung', obj2brain(self.dossier).Title) set_preferred_language(self.portal.REQUEST, 'fr-ch') self.assertEquals( 'Vertr\xc3\xa4ge mit der kantonalen Finanzverwaltung', obj2brain(self.dossier).Title)
def test_Title_returns_title_in_current_language(self): set_preferred_language(self.portal.REQUEST, 'fr-ch') self.assertEquals('1.1.1. Direction', self.repository_folder.Title()) set_preferred_language(self.portal.REQUEST, 'de-ch') self.assertEquals('1.1.1. F\xc3\xbchrung', self.repository_folder.Title())
def test_exported_meeting_json_has_correct_file_names(self, browser): set_preferred_language(self.portal.REQUEST, 'de-ch') browser.append_request_header('Accept-Language', 'de-ch') self.login(self.committee_responsible, browser) self.meeting.model.title = u'9. Sitzung der Rechnungspr\xfcfungs' \ u'kommission, ordentlich' self.schedule_paragraph(self.meeting, u'A Gesch\xfcfte') with freeze(localized_datetime(2017, 12, 13)): self.schedule_ad_hoc( self.meeting, u'Ad-hoc Traktand\xfem' ).decide() agenda_item = self.schedule_proposal(self.meeting, self.submitted_proposal) self.decide_agendaitem_generate_and_return_excerpt(agenda_item) with freeze(localized_datetime(2017, 12, 14)): self.meeting.model.close() browser.open(self.meeting, view='export-meeting-zip') self.assertEquals('application/zip', browser.contenttype) zip_file = ZipFile(StringIO(browser.contents), 'r') meeting_json = json.loads(zip_file.read('meeting.json')) # the protocol is generated during the tests and its checksum cannot # be predicted meeting_json['meetings'][0]['protocol']['checksum'] = 'unpredictable' meeting_json['meetings'][0].pop('opengever_id') for agenda_item in meeting_json['meetings'][0]['agenda_items']: agenda_item.pop('opengever_id') expected_meeting_json = { u'meetings': [{ u'agenda_items': [ {u'sort_order': 1, u'title': u'A Gesch\xfcfte'}, { u'number': u'1.', u'number_raw': 1, u'proposal': { u'checksum': u'e00d6c8fb32c30d3ca3a3f8e5d873565482567561023016d9ca18243ff1cfa14', u'file': u'Traktandum 1/Ad-hoc Traktandthm.docx', u'modified': u'2017-12-13T00:00:00+01:00', }, u'sort_order': 2, u'title': u'Ad-hoc Traktand\xfem', }, { u'attachments': [{ u'checksum': u'51d6317494eccc4a73154625a6820cb6b50dc1455eb4cf26399299d4f9ce77b2', u'file': u'Traktandum 2/Beilage/1_Vertraegsentwurf.docx', u'modified': u'2016-08-31T16:09:37+02:00', u'title': u'Vertr\xe4gsentwurf', }], u'number': u'2.', u'number_raw': 2, u'proposal': { u'checksum': u'114e7a059dc34c7459dab90904685584e331089d80bb6310183a0de009b66c3b', u'file': u'Traktandum 2/Vertraege.docx', u'modified': u'2016-08-31T16:09:35+02:00', }, u'sort_order': 3, u'title': u'Vertr\xe4ge', }, ], u'committee': {u'oguid': u'plone:1009313300', u'title': u'Rechnungspr\xfcfungskommission'}, u'end': u'2016-09-12T17:00:00+00:00', u'location': u'B\xfcren an der Aare', u'protocol': { u'checksum': 'unpredictable', u'file': u'Protokoll-9. Sitzung der Rechnungspruefungskommission- ordentlich.docx', u'modified': u'2017-12-14T00:00:00+01:00', }, u'start': u'2016-09-12T15:30:00+00:00', u'title': u'9. Sitzung der Rechnungspr\xfcfungskommission, ordentlich', }], u'version': u'1.0.0', } self.assert_json_structure_equal(expected_meeting_json, meeting_json) expected_file_names = [ 'Protokoll-9. Sitzung der Rechnungspruefungskommission- ordentlich.docx', 'Traktandum 1/Ad-hoc Traktandthm.docx', 'Traktandum 2/Beilage/1_Vertraegsentwurf.docx', 'Traktandum 2/Vertraege.docx', 'meeting.json', ] file_names = sorted(zip_file.namelist()) self.assertEqual(expected_file_names, file_names)