Update secr/drafts/tests_views to align with view logic. Fixes #2480. Commit ready for merge.

- Legacy-Id: 15351
This commit is contained in:
Ryan Cross 2018-07-14 20:59:17 +00:00
parent 2d6083060a
commit 7df5ed1ca4
3 changed files with 38 additions and 17 deletions

View file

@ -167,7 +167,7 @@ def get_email_initial(draft, action=None, input=None):
elif action == 'withdraw':
context = {'doc':curr_filename,'by':input['withdraw_type']}
data['subject'] = 'Withdrawl of %s' % (curr_filename)
data['subject'] = 'Withdraw of %s' % (curr_filename)
data['body'] = render_to_string('drafts/message_withdraw.txt', context)
data['action'] = action
data['withdraw_type'] = input['withdraw_type']

View file

@ -1,10 +1,12 @@
import datetime
import os
import shutil
from collections import OrderedDict
from django.conf import settings
from django.urls import reverse as urlreverse
from django.utils.http import urlencode
from pyquery import PyQuery
import debug # pyflakes:ignore
@ -15,6 +17,7 @@ from ietf.meeting.factories import MeetingFactory
from ietf.person.factories import PersonFactory
from ietf.person.models import Person
from ietf.submit.models import Preapproval
from ietf.utils.mail import outbox
from ietf.utils.test_utils import TestCase, login_testing_unauthorized
from ietf.utils.test_data import make_test_data
from ietf.secr.drafts.email import get_email_initial
@ -134,23 +137,31 @@ class SecrDraftsTestCase(TestCase):
confirm_url = urlreverse('ietf.secr.drafts.views.confirm', kwargs={'id':draft.name})
do_action_url = urlreverse('ietf.secr.drafts.views.do_action', kwargs={'id':draft.name})
view_url = urlreverse('ietf.secr.drafts.views.view', kwargs={'id':draft.name})
subject = 'Resurrection of %s' % draft.get_base_name()
self.client.login(username="secretary", password="secretary+password")
response = self.client.get(email_url)
self.assertEqual(response.status_code, 200)
self.assertTrue('<title>Drafts - Email</title>' in response.content)
q = PyQuery(response.content)
self.assertEqual(q("#id_subject").val(), subject)
post_data = {
'action': 'resurrect',
'to': 'john@example.com',
'cc': 'joe@example.com',
'subject': 'test',
'subject': subject,
'body': 'draft resurrected',
'submit': 'Save'
}
response = self.client.post(email_url, post_data)
response = self.client.post(confirm_url, post_data)
self.assertEqual(response.status_code, 200)
self.assertTrue('<title>Drafts - Confirm</title>' in response.content)
self.assertEqual(response.context['email']['subject'], subject)
response = self.client.post(do_action_url, post_data)
self.assertRedirects(response, view_url)
draft = Document.objects.get(name=draft.name)
self.assertTrue(draft.get_state_slug('draft') == 'active')
recv = outbox[-1]
self.assertEqual(recv['Subject'], subject)
def test_extend(self):
draft = make_test_data()
@ -161,10 +172,11 @@ class SecrDraftsTestCase(TestCase):
view_url = urlreverse('ietf.secr.drafts.views.view', kwargs={'id':draft.name})
expiration = datetime.datetime.today() + datetime.timedelta(days=180)
expiration = expiration.replace(hour=0,minute=0,second=0,microsecond=0)
subject = 'Extension of Expiration Date for %s' % draft.get_base_name()
self.client.login(username="secretary", password="secretary+password")
response = self.client.get(url)
self.assertEqual(response.status_code, 200)
get_data = {
extend_data = {
'action': 'extend',
'expiration_date': expiration.strftime('%Y-%m-%d'),
}
@ -173,17 +185,22 @@ class SecrDraftsTestCase(TestCase):
'expiration_date': expiration.strftime('%Y-%m-%d'),
'to': 'john@example.com',
'cc': 'joe@example.com',
'subject': 'test',
'body': 'draft resurrected',
'subject': subject,
'body': 'draft extended',
'submit': 'Save'
}
response = self.client.get(email_url + '?' + urlencode(get_data))
self.assertEqual(response.status_code, 200)
response = self.client.post(url, extend_data)
self.assertRedirects(response, email_url + '?' + urlencode(extend_data))
response = self.client.post(confirm_url, post_data)
self.assertEqual(response.status_code, 200)
self.assertTrue('<title>Drafts - Confirm</title>' in response.content)
self.assertEqual(response.context['email']['subject'], subject)
response = self.client.post(do_action_url, post_data)
self.assertRedirects(response, view_url)
draft = Document.objects.get(name=draft.name)
self.assertTrue(draft.expires == expiration)
recv = outbox[-1]
self.assertEqual(recv['Subject'], subject)
def test_withdraw(self):
draft = make_test_data()
@ -192,29 +209,32 @@ class SecrDraftsTestCase(TestCase):
confirm_url = urlreverse('ietf.secr.drafts.views.confirm', kwargs={'id':draft.name})
do_action_url = urlreverse('ietf.secr.drafts.views.do_action', kwargs={'id':draft.name})
view_url = urlreverse('ietf.secr.drafts.views.view', kwargs={'id':draft.name})
subject = 'Withdraw of %s' % draft.get_base_name()
self.client.login(username="secretary", password="secretary+password")
response = self.client.get(url)
self.assertEqual(response.status_code, 200)
get_data = {
'action': 'withdraw',
'withdraw_type': 'ietf',
}
withdraw_data = OrderedDict([('action', 'withdraw'), ('withdraw_type', 'ietf')])
post_data = {
'action': 'withdraw',
'withdraw_type': 'ietf',
'to': 'john@example.com',
'cc': 'joe@example.com',
'subject': 'test',
'subject': subject,
'body': 'draft resurrected',
'submit': 'Save'
}
response = self.client.get(email_url + '?' + urlencode(get_data))
self.assertEqual(response.status_code, 200)
response = self.client.post(url, withdraw_data)
self.assertRedirects(response, email_url + '?' + urlencode(withdraw_data))
response = self.client.post(confirm_url, post_data)
self.assertEqual(response.status_code, 200)
self.assertTrue('<title>Drafts - Confirm</title>' in response.content)
self.assertEqual(response.context['email']['subject'], subject)
response = self.client.post(do_action_url, post_data)
self.assertRedirects(response, view_url)
draft = Document.objects.get(name=draft.name)
self.assertTrue(draft.get_state_slug('draft') == 'ietf-rm')
recv = outbox[-1]
self.assertEqual(recv['Subject'], subject)
def test_authors(self):
draft = DocumentFactory()

View file

@ -3,6 +3,7 @@ import glob
import os
import shutil
from dateutil.parser import parse
from collections import OrderedDict
from django.conf import settings
from django.contrib import messages
@ -614,8 +615,8 @@ def withdraw(request, id):
form = WithdrawForm(request.POST)
if form.is_valid():
params = form.cleaned_data
params['action'] = 'withdraw'
params = OrderedDict([('action', 'withdraw')])
params['withdraw_type'] = form.cleaned_data['withdraw_type']
url = reverse('ietf.secr.drafts.views.email', kwargs={'id':id})
url = url + '?' + urlencode(params)
return redirect(url)