def test_malformed_file(self): csv_file = BytesIO() csv_file.write(bytes('Header\nMalformed data,\n,Title,Text,,,\n', 'utf8')) success_message, warning_message, error_message = import_motions( csvfile=csv_file, default_submitter=self.normal_user.person_id, override=False) self.assertEqual(success_message, '') self.assertTrue('Line is malformed.' in error_message)
def test_example_file_de(self): special_user = User.objects.create_user( username='******', password='******', first_name='Harry', last_name='Holland') for i in range(2): username = '******' % i User.objects.create_user(username=username, password='******', first_name='John', last_name='Doe') csv_dir = os.path.join(os.path.dirname(__file__), '..', '..', 'extras', 'csv-examples') self.assertEqual(Motion.objects.count(), 0) with open(csv_dir + '/motions-demo_de.csv') as f: success_message, warning_message, error_message = import_motions( csvfile=f, default_submitter=self.normal_user.person_id, override=False, importing_person=self.admin) self.assertEqual(Motion.objects.count(), 11) motion1 = Motion.objects.get(pk=1) self.assertEqual(motion1.identifier, '1') self.assertEqual(motion1.title, u'Entlastung des Vorstandes') self.assertEqual( motion1.text, u'Die Versammlung möge beschließen, den Vorstand für seine letzte Legislaturperiode zu entlasten.' ) self.assertEqual(motion1.reason, u'Bericht erfolgt mündlich.') self.assertEqual(len(motion1.submitter.all()), 1) self.assertEqual(motion1.submitter.all()[0].person, self.normal_user) self.assertTrue(motion1.category is None) self.assertTrue('Submitter unknown.' in warning_message) self.assertTrue('Category unknown.' in warning_message) motion2 = Motion.objects.get(pk=2) self.assertEqual(motion2.identifier, 'SA 1') self.assertEqual(motion2.title, u'Satzungsänderung § 2 Abs. 3') self.assertHTMLEqual( motion2.text, u'''<p>Die Versammlung möge beschließen, die Satzung in § 2 Abs. 3 wie folgt zu ändern:</p> <p>Es wird vor dem Wort "Zweck" das Wort "gemeinnütziger" eingefügt.</p>''' ) self.assertEqual( motion2.reason, u'Die Änderung der Satzung ist aufgrund der letzten Erfahrungen eine sinnvolle Maßnahme, weil ...' ) self.assertEqual(len(motion2.submitter.all()), 1) self.assertEqual(motion2.submitter.all()[0].person, special_user) self.assertEqual(motion2.category, self.category1) # check user 'John Doe' self.assertTrue( 'Several suitable submitters found.' in warning_message) # check category 'Bildung' self.assertTrue( 'Several suitable categories found.' in warning_message)
def test_wrong_encoding(self): csv_file = StringIO.StringIO() text = u'Müller'.encode('iso-8859-15') csv_file.write(text) csv_file.seek(0) count_success, error_messages, warning_messages = import_motions(csv_file=csv_file, default_submitter=self.normal_user.person_id) self.assertEqual(count_success, 0) self.assertTrue('Import file has wrong character encoding, only UTF-8 is supported!' in error_messages)
def test_wrong_encoding(self): csv_file = BytesIO(bytes('Müller', 'iso-8859-15')) success_message, warning_message, error_message = import_motions( csvfile=csv_file, default_submitter=self.normal_user.person_id, override=False) self.assertEqual(success_message, '') self.assertIn('Import file has wrong character encoding, only UTF-8 is supported!', error_message)
def test_malformed_file(self): csv_file = StringIO.StringIO() csv_file.write('Header\nMalformed data,\n,Title,Text,,,\n') success_message, warning_message, error_message = import_motions( csvfile=csv_file, default_submitter=self.normal_user.person_id, override=False) self.assertEqual(success_message, '') self.assertTrue('Line is malformed.' in error_message)
def test_wrong_encoding(self): csv_file = BytesIO(bytes('Müller', 'iso-8859-15')) success_message, warning_message, error_message = import_motions( csvfile=csv_file, default_submitter=self.normal_user.id, override=False) self.assertEqual(success_message, '') self.assertIn( 'Import file has wrong character encoding, only UTF-8 is supported!', error_message)
def test_example_file_de(self): special_user = User.objects.create_user(username='******', password='******', first_name='Harry', last_name='Holland') for i in range(2): username = '******' % i User.objects.create_user(username=username, password='******', first_name='John', last_name='Doe') csv_dir = os.path.join(os.path.dirname(__file__), '..', '..', 'extras', 'csv-examples') self.assertEqual(Motion.objects.count(), 0) with open(csv_dir + '/motions-demo_de.csv') as f: count_success, count_lines, error_messages, warning_messages = import_motions(csv_file=f, default_submitter=self.normal_user.person_id) self.assertEqual(Motion.objects.count(), 11) self.assertEqual(count_success, 11) motion1 = Motion.objects.get(pk=1) self.assertEqual(motion1.identifier, '1') self.assertEqual(motion1.title, u'Entlastung des Vorstandes') self.assertEqual(motion1.text, u'Die Versammlung möge beschließen, den Vorstand für seine letzte Legislaturperiode zu entlasten.') self.assertEqual(motion1.reason, u'Bericht erfolgt mündlich.') self.assertEqual(len(motion1.submitter.all()), 1) self.assertEqual(motion1.submitter.all()[0].person, self.normal_user) self.assertTrue(motion1.category is None) self.assertTrue(any('Submitter unknown.' in w for w in warning_messages)) self.assertTrue(any('Category unknown.' in w for w in warning_messages)) motion2 = Motion.objects.get(pk=2) self.assertEqual(motion2.identifier, 'SA 1') self.assertEqual(motion2.title, u'Satzungsänderung § 2 Abs. 3') self.assertHTMLEqual(motion2.text, u'''<p>Die Versammlung möge beschließen, die Satzung in § 2 Abs. 3 wie folgt zu ändern:</p> <p>Es wird vor dem Wort "Zweck" das Wort "gemeinnütziger" eingefügt.</p>''') self.assertEqual(motion2.reason, u'Die Änderung der Satzung ist aufgrund der letzten Erfahrungen eine sinnvolle Maßnahme, weil ...') self.assertEqual(len(motion2.submitter.all()), 1) self.assertEqual(motion2.submitter.all()[0].person, special_user) self.assertEqual(motion2.category, self.category1) # check user 'John Doe' self.assertTrue(any('Several suitable submitters found.' in w for w in warning_messages)) # check category 'Bildung' self.assertTrue(any('Several suitable categories found.' in w for w in warning_messages))
def test_malformed_file(self): csv_file = StringIO.StringIO() csv_file.write('Header\nMalformed data,\n,Title,Text,,,\n') count_success, count_lines, error_messages, warning_messages = import_motions(csv_file=csv_file, default_submitter=self.normal_user.person_id) self.assertEqual(count_success, 0) self.assertTrue(any('Line is malformed.' in e for e in error_messages))