Skip to content

Commit

Permalink
apps/newsletters: add clean to test if project is given - fixes #1737
Browse files Browse the repository at this point in the history
  • Loading branch information
fuzzylogic2000 committed Apr 25, 2022
1 parent 15e4af1 commit 246e562
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 39 deletions.
6 changes: 6 additions & 0 deletions apps/newsletters/forms.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,3 +38,9 @@ def __init__(self, user=None, organisation=None, *args, **kwargs):
label=_('Organisation'),
queryset=Organisation.objects,
required=False, empty_label=None)

def clean(self):
cleaned_data = super().clean()
if int(cleaned_data.get('receivers')) == models.PROJECT and \
not cleaned_data.get('project'):
self.add_error('project', _('Select a Project'))
78 changes: 39 additions & 39 deletions tests/newsletters/test_newsletter_views.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,45 +52,45 @@ def test_send_project(admin, client, project, user_factory, follow_factory,
assert mail.outbox[0].subject == 'Testsubject'


# @pytest.mark.django_db
# def test_send_project_no_project(admin, client, project, user_factory,
# follow_factory, email_address_factory):
# organisation = project.organisation

# user1 = user_factory(get_newsletters=True)
# user2 = user_factory()
# email_address_factory(user=user1, email=user1.email,
# primary=True, verified=True)
# email_address_factory(user=user2, email=user2.email,
# primary=True, verified=True)

# user_factory()

# follow_models.Follow.objects.all().delete()
# follow_factory(creator=user1, project=project)
# follow_factory(creator=user2, project=project, enabled=False)

# data = {
# 'sender_name': 'Tester',
# 'sender': 'test@test.de',
# 'subject': 'Testsubject',
# 'body': 'Testbody',
# 'receivers': newsletter_models.PROJECT,
# 'organisation': organisation.pk,
# 'project': '',
# 'send': 'Send',
# }

# url = reverse('a4dashboard:newsletter-create',
# kwargs={'organisation_slug': organisation.slug})
# client.login(username=admin.email, password='password')
# response = client.post(url, data)
# # form submit failed, still on same form page, no redirect
# assert response.status_code == 200
# assert response.template_name[0] == \
# 'a4_candy_newsletters/newsletter_dashboard_form.html'
# assert not response.context['form'].is_valid()
# assert newsletter_models.Newsletter.objects.count() == 0
@pytest.mark.django_db
def test_send_project_no_project(admin, client, project, user_factory,
follow_factory, email_address_factory):
organisation = project.organisation

user1 = user_factory(get_newsletters=True)
user2 = user_factory()
email_address_factory(user=user1, email=user1.email,
primary=True, verified=True)
email_address_factory(user=user2, email=user2.email,
primary=True, verified=True)

user_factory()

follow_models.Follow.objects.all().delete()
follow_factory(creator=user1, project=project)
follow_factory(creator=user2, project=project, enabled=False)

data = {
'sender_name': 'Tester',
'sender': 'test@test.de',
'subject': 'Testsubject',
'body': 'Testbody',
'receivers': newsletter_models.PROJECT,
'organisation': organisation.pk,
'project': '',
'send': 'Send',
}

url = reverse('a4dashboard:newsletter-create',
kwargs={'organisation_slug': organisation.slug})
client.login(username=admin.email, password='password')
response = client.post(url, data)
# form submit failed, still on same form page, no redirect
assert response.status_code == 200
assert response.template_name[0] == \
'a4_candy_newsletters/restricted_newsletter_dashboard_form.html'
assert not response.context['form'].is_valid()
assert newsletter_models.Newsletter.objects.count() == 0


@pytest.mark.django_db
Expand Down

0 comments on commit 246e562

Please sign in to comment.