def test_aid_status_workflow(client, contributor, aid_form_data): """Test that the publication workflow works as expected.""" aid = AidFactory(status='draft', author=contributor) client.force_login(contributor) form_url = reverse('aid_edit_view', args=[aid.slug]) aid_form_data.update({'_action': 'update_status'}) res = client.post(form_url, data=aid_form_data) aid.refresh_from_db() assert res.status_code == 302 assert aid.status == 'reviewable' # _action is still "update_status" res = client.post(form_url, data=aid_form_data) aid.refresh_from_db() assert res.status_code == 302 assert aid.status == 'draft' aid.status = 'published' aid.save() res = client.post(form_url, data=aid_form_data) aid.refresh_from_db() assert res.status_code == 302 assert aid.status == 'draft'
def test_edition_of_aid_status(client, contributor): """Test that the publication workflow works as expected.""" aid = AidFactory(status='draft', author=contributor) client.force_login(contributor) update_status_url = reverse('aid_status_update_view', args=[aid.slug]) res = client.get(update_status_url) assert res.status_code == 405 # Method not allowed, only post res = client.post(update_status_url, {'current_status': 'draft'}) aid.refresh_from_db() assert res.status_code == 302 assert aid.status == 'reviewable' res = client.post(update_status_url, {'current_status': 'reviewable'}) aid.refresh_from_db() assert res.status_code == 302 assert aid.status == 'draft' aid.status = 'published' aid.save() res = client.post(update_status_url, {'current_status': 'published'}) aid.refresh_from_db() assert res.status_code == 302 assert aid.status == 'draft'
def test_unpublish_aid_does_not_remove_published_date(): """when aids are unpublished, we keep the first publication date.""" aid = AidFactory(status='published', date_published=timezone.now()) aid.status = 'draft' aid.save() aid.refresh_from_db() assert aid.status == 'draft' assert aid.date_published is not None
def test_set_review_status_does_not_set_published_date(): aid = AidFactory(status='draft') assert aid.date_published is None aid.status = 'reviewable' aid.save() aid.refresh_from_db() assert aid.status == 'reviewable' assert aid.date_published is None
def test_contributons_can_preview_their_own_aids(client, user, contributor): client.force_login(contributor) aid = AidFactory(status='draft', author=user) url = aid.get_absolute_url() res = client.get(url) assert res.status_code == 404 aid.author = contributor aid.save() res = client.get(url) assert res.status_code == 200 assert 'Cette aide <strong>n\'est actuellement pas affichée sur le site</strong>.' in res.content.decode() # noqa
def test_aid_eligibility(): aid_1 = AidFactory() aid_2 = AidFactory() eligibility_test_1 = EligibilityTestFactory() aid_2.eligibility_test = eligibility_test_1 aid_2.save() assert EligibilityTest.objects.count() == 1 assert Aid.objects.count() == 2 assert Aid.objects.has_eligibility_test().count() == 1 assert aid_1.has_eligibility_test() is False assert aid_2.has_eligibility_test() is True
def test_republish_aid_does_not_override_first_publication_date(): """when aids are republished, we keep the first publication date.""" last_month = timezone.now() - timedelta(days=30) aid = AidFactory(status='draft', date_published=last_month) aid.status = 'published' aid.save() aid.refresh_from_db() assert aid.status == 'published' assert aid.date_published == last_month
def test_set_published_status_does_set_published_date(): """When aids are published, we store the publication date.""" aid = AidFactory(status='draft') assert aid.date_published is None aid.status = 'published' aid.save() aid.refresh_from_db() assert aid.status == 'published' assert aid.date_published is not None
def test_only_published_aids_are_displayed(client): aid = AidFactory(status='draft') url = aid.get_absolute_url() res = client.get(url) assert res.status_code == 404 aid.status = 'reviewable' aid.save() res = client.get(url) assert res.status_code == 404 aid.status = 'published' aid.save() res = client.get(url) assert res.status_code == 200