Skip to content

Commit

Permalink
[#1659] FunctionalTestBase._submit_and_follow
Browse files Browse the repository at this point in the history
  • Loading branch information
wardi committed Jun 11, 2014
1 parent 44c9a50 commit e07500a
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 27 deletions.
34 changes: 7 additions & 27 deletions ckan/new_tests/controllers/test_package.py
Expand Up @@ -43,11 +43,7 @@ def test_resource_form_renders(self):
form['name'] = u'resource-form-renders'
form['title'] = u'Resource form renders'

response = webtest_submit(form, 'save', status=302, extra_environ=env)
response = self.app.get(
url=dict(response.headers)['Location'],
extra_environ=env,
)
response = self._submit_and_follow(form, env, 'save')
assert_true('resource-edit' in response.forms)

def test_previous_button_works(self):
Expand All @@ -61,18 +57,10 @@ def test_previous_button_works(self):
form['name'] = u'previous-button-works'
form['title'] = u'Previous button works'

response = webtest_submit(form, 'save', status=302, extra_environ=env)
response = self.app.get(
url=dict(response.headers)['Location'],
extra_environ=env,
)
response = self._submit_and_follow(form, env, 'save')
form = response.forms['resource-edit']
response = webtest_submit(form, 'save', value='go-dataset',
status=302, extra_environ=env)
response = self.app.get(
url=dict(response.headers)['Location'],
extra_environ=env,
)

response = self._submit_and_follow(form, env, 'save', 'go-dataset')
assert_true('dataset-edit' in response.forms)

def test_previous_button_populates_form(self):
Expand All @@ -86,18 +74,10 @@ def test_previous_button_populates_form(self):
form['name'] = u'previous-button-populates-form'
form['title'] = u'Previous button populates form'

response = webtest_submit(form, 'save', status=302, extra_environ=env)
response = self.app.get(
url=dict(response.headers)['Location'],
extra_environ=env,
)
response = self._submit_and_follow(form, env, 'save')
form = response.forms['resource-edit']
response = webtest_submit(form, 'save', value='go-dataset',
status=302, extra_environ=env)
response = self.app.get(
url=dict(response.headers)['Location'],
extra_environ=env,
)

response = self._submit_and_follow(form, env, 'save', 'go-dataset')
form = response.forms['dataset-edit']
assert_true('title' in form.fields)
assert_equal(form['title'].value, u'Previous button populates form')
Expand Down
17 changes: 17 additions & 0 deletions ckan/new_tests/helpers.py
Expand Up @@ -177,6 +177,23 @@ def teardown_class(cls):
config.clear()
config.update(cls._original_config)

def _submit_and_follow(self, form, extra_environ, name=None,
value=None, **args):
'''
Call webtest_submit with name/value passed expecting a redirect
and return the response from following that redirect.
'''
response = webtest_submit(form, name, value=value,
extra_environ=extra_environ, **args)
if response.status != 302:
raise ValueError('response was not a redirect')
for header, header_value in response.headers:
if header == 'Location':
break
else:
raise ValueError('redirect response has no Location header')
return self.app.get(url=header_value, extra_environ=extra_environ)


## FIXME: remove webtest_* functions below when we upgrade webtest

Expand Down

0 comments on commit e07500a

Please sign in to comment.