-
Notifications
You must be signed in to change notification settings - Fork 2k
/
test_package.py
134 lines (102 loc) · 5.45 KB
/
test_package.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
from nose.tools import assert_equal, assert_true
from routes import url_for
import ckan.new_tests.helpers as helpers
import ckan.new_tests.factories as factories
import ckan.model as model
webtest_submit = helpers.webtest_submit
class TestPackageControllerNew(helpers.FunctionalTestBase):
def _get_package_new_page_as_sysadmin(self):
user = factories.Sysadmin()
env = {'REMOTE_USER': user['name'].encode('ascii')}
response = self.app.get(
url=url_for(controller='package', action='new'),
extra_environ=env,
)
return env, response
def test_form_renders(self):
env, response = self._get_package_new_page_as_sysadmin()
assert_true('dataset-edit' in response.forms)
def test_name_required(self):
env, response = self._get_package_new_page_as_sysadmin()
form = response.forms['dataset-edit']
response = webtest_submit(form, 'save', status=200, extra_environ=env)
assert_true('dataset-edit' in response.forms)
assert_true('Name: Missing value' in response)
def test_resource_form_renders(self):
env, response = self._get_package_new_page_as_sysadmin()
form = response.forms['dataset-edit']
form['name'] = u'resource-form-renders'
response = self._submit_and_follow(form, env, 'save')
assert_true('resource-edit' in response.forms)
def test_first_page_creates_draft_package(self):
env, response = self._get_package_new_page_as_sysadmin()
form = response.forms['dataset-edit']
form['name'] = u'first-page-creates-draft'
webtest_submit(form, 'save', status=302, extra_environ=env)
pkg = model.Package.by_name(u'first-page-creates-draft')
assert_equal(pkg.state, 'draft')
def test_resource_required(self):
env, response = self._get_package_new_page_as_sysadmin()
form = response.forms['dataset-edit']
form['name'] = u'one-resource-required'
response = self._submit_and_follow(form, env, 'save')
form = response.forms['resource-edit']
response = webtest_submit(form, 'save', value='go-metadata',
status=200, extra_environ=env)
assert_true('resource-edit' in response.forms)
assert_true('You must add at least one data resource' in response)
def test_complete_package_with_one_resource(self):
env, response = self._get_package_new_page_as_sysadmin()
form = response.forms['dataset-edit']
form['name'] = u'complete-package-with-one-resource'
response = self._submit_and_follow(form, env, 'save')
form = response.forms['resource-edit']
form['url'] = u'http://example.com/resource'
self._submit_and_follow(form, env, 'save', 'go-metadata')
pkg = model.Package.by_name(u'complete-package-with-one-resource')
assert_equal(pkg.resources[0].url, u'http://example.com/resource')
assert_equal(pkg.state, 'active')
def test_complete_package_with_two_resources(self):
env, response = self._get_package_new_page_as_sysadmin()
form = response.forms['dataset-edit']
form['name'] = u'complete-package-with-two-resources'
response = self._submit_and_follow(form, env, 'save')
form = response.forms['resource-edit']
form['url'] = u'http://example.com/resource0'
response = self._submit_and_follow(form, env, 'save', 'again')
form = response.forms['resource-edit']
form['url'] = u'http://example.com/resource1'
self._submit_and_follow(form, env, 'save', 'go-metadata')
pkg = model.Package.by_name(u'complete-package-with-two-resources')
assert_equal(pkg.resources[0].url, u'http://example.com/resource0')
assert_equal(pkg.resources[1].url, u'http://example.com/resource1')
assert_equal(pkg.state, 'active')
def test_previous_button_works(self):
env, response = self._get_package_new_page_as_sysadmin()
form = response.forms['dataset-edit']
form['name'] = u'previous-button-works'
response = self._submit_and_follow(form, env, 'save')
form = response.forms['resource-edit']
response = self._submit_and_follow(form, env, 'save', 'go-dataset')
assert_true('dataset-edit' in response.forms)
def test_previous_button_populates_form(self):
env, response = self._get_package_new_page_as_sysadmin()
form = response.forms['dataset-edit']
form['name'] = u'previous-button-populates-form'
response = self._submit_and_follow(form, env, 'save')
form = response.forms['resource-edit']
response = self._submit_and_follow(form, env, 'save', 'go-dataset')
form = response.forms['dataset-edit']
assert_true('title' in form.fields)
assert_equal(form['name'].value, u'previous-button-populates-form')
def test_previous_next_maintains_draft_state(self):
env, response = self._get_package_new_page_as_sysadmin()
form = response.forms['dataset-edit']
form['name'] = u'previous-next-maintains-draft'
response = self._submit_and_follow(form, env, 'save')
form = response.forms['resource-edit']
response = self._submit_and_follow(form, env, 'save', 'go-dataset')
form = response.forms['dataset-edit']
webtest_submit(form, 'save', status=302, extra_environ=env)
pkg = model.Package.by_name(u'previous-next-maintains-draft')
assert_equal(pkg.state, 'draft')