def test_add_journal(self): """ Covered cases: * Accessing the form * Submission with missing data * Submission with all required data * Edition of a existing record """ #empty form response = self.client.get(reverse('journal.add')) self.assertEqual(response.status_code, 200) sample_publisher = tests_assets.get_sample_publisher() sample_publisher.collection = self.collection sample_publisher.save() sample_uselicense = tests_assets.get_sample_uselicense() sample_uselicense.save() sample_language = tests_assets.get_sample_language() sample_language.save() #missing data response = self.client.post(reverse('journal.add'), tests_assets.get_sample_journal_dataform({'journal-publisher': sample_publisher.pk, 'journal-collections': [self.usercollections.pk], })) self.assertTrue('some errors or missing data' in response.content) response = self.client.post(reverse('journal.add'), tests_assets.get_sample_journal_dataform({'journal-publisher': sample_publisher.pk, 'journal-use_license': sample_uselicense.pk, 'journal-collections': [self.usercollections.pk], 'journal-languages': [sample_language.pk]})) self.assertRedirects(response, reverse('journal.index')) #edit journal - must be changed testing_journal = Journal.objects.get(title = u'ABCD. Arquivos Brasileiros de Cirurgia Digestiva (São Paulo)') response = self.client.post(reverse('journal.edit', args = (testing_journal.pk,)), tests_assets.get_sample_journal_dataform({'journal-title': 'Modified Title', 'journal-publisher': sample_publisher.pk, 'journal-use_license': sample_uselicense.pk, 'journal-collections': [self.usercollections.pk], 'journal-languages': [sample_language.pk], })) self.assertRedirects(response, reverse('journal.index')) modified_testing_journal = Journal.objects.get(title = 'Modified Title') self.assertEqual(testing_journal, modified_testing_journal)
def test_add_section(self): """ View: add_section """ from models import Journal from models import Section journal = Journal.objects.all()[0] sample_language = tests_assets.get_sample_language() sample_language.save() journal.languages.add(sample_language) #empty form response = self.client.get(reverse('section.add', args=[journal.pk])) self.assertEqual(response.status_code, 200) #add section response = self.client.post(reverse('section.add', args=[journal.pk]), tests_assets.get_sample_section_dataform(**{ 'journal': journal.pk, 'titles-0-language': sample_language.pk, })) self.assertRedirects(response, reverse('section.index', args=[journal.pk])) #edit section testing_section = Section.objects.get(sectiontitle__title='TITLES FORMSET TEST') previous_code = testing_section.code response = self.client.post(reverse('section.edit', args=[journal.pk, testing_section.pk]), tests_assets.get_sample_section_dataform(**{ 'titles-0-title':'Modified Original Article', 'titles-0-language': sample_language.pk, 'code': 'qwerty'})) self.assertRedirects(response, reverse('section.index', args=[journal.pk])) modified_section = Section.objects.get(sectiontitle__title='Modified Original Article') self.assertEqual(testing_section, modified_section) self.assertEqual(modified_section.code, previous_code) #code must be read-only
def test_contextualized_language_field_on_add_section(self): """ A user has a manytomany relation to Collection entities. So, when a user is registering a new Section, he can only bind it to the Collections he relates to. Covered cases: * Check if all collections presented on the form are related to the user. """ from models import Journal journal = Journal.objects.all()[0] sample_language = tests_assets.get_sample_language() sample_language.save() journal.languages.add(sample_language) response = self.client.get(reverse('section.add', args=[journal.pk])) self.assertEqual(response.status_code, 200) for qset_item in response.context['section_title_formset'].forms[0].fields['language'].queryset: self.assertTrue(qset_item in journal.languages.all())