0001-testdef-forbid-test-creation-if-form-has-deprecated-.patch
tests/admin_pages/test_tests.py | ||
---|---|---|
159 | 159 |
assert resp.form['formdata_id'].options[0][2] == '2-1 - Unknown User' |
160 | 160 | |
161 | 161 | |
162 |
def test_tests_page_deprecated_fields(pub): |
|
163 |
formdef = FormDef() |
|
164 |
formdef.name = 'test title' |
|
165 |
formdef.fields = [ |
|
166 |
fields.TableField(id='1', label='Table', type='table'), |
|
167 |
] |
|
168 |
formdef.store() |
|
169 | ||
170 |
create_superuser(pub) |
|
171 |
app = login(get_app(pub)) |
|
172 | ||
173 |
resp = app.get(formdef.get_admin_url()) |
|
174 |
resp = resp.click('Tests') |
|
175 |
assert 'Run' not in resp.text |
|
176 |
assert 'deprecated fields' in resp.text |
|
177 | ||
178 | ||
162 | 179 |
def test_tests_import_export(pub): |
163 | 180 |
user = create_superuser(pub) |
164 | 181 |
wcs/admin/tests.py | ||
---|---|---|
117 | 117 |
[Equal('object_type', self.objectdef.get_table_name()), Equal('object_id', self.objectdef.id)] |
118 | 118 |
), |
119 | 119 |
'formdata': self.objectdef.data_class().select([StrictNotEqual('status', 'draft')]), |
120 |
'has_deprecated_fields': any( |
|
121 |
x.type in ('table', 'table-select', 'tablerows', 'ranked-items') |
|
122 |
for x in self.objectdef.fields |
|
123 |
), |
|
120 | 124 |
} |
121 | 125 |
return template.QommonTemplateResponse(templates=['wcs/backoffice/tests.html'], context=context) |
122 | 126 |
wcs/templates/wcs/backoffice/tests.html | ||
---|---|---|
7 | 7 |
{% if testdefs %} |
8 | 8 |
<a href="run">{% trans "Run tests" %}</a> |
9 | 9 |
{% endif %} |
10 |
{% if formdata %} |
|
10 |
{% if formdata and not has_deprecated_fields %}
|
|
11 | 11 |
<a href="new" rel="popup">{% trans "New" %}</a> |
12 | 12 |
{% endif %} |
13 | 13 |
{% endblock %} |
... | ... | |
16 | 16 |
<div class="section"> |
17 | 17 |
<h3>{% trans "Test form data" %}</h3> |
18 | 18 | |
19 |
{% if has_deprecated_fields %} |
|
20 |
<div class="warningnotice"> |
|
21 |
<p>{% trans "Tests cannot be created because this form has deprecated fields." %}</p> |
|
22 |
</div> |
|
23 |
{% endif %} |
|
24 | ||
19 | 25 |
{% if not formdata %} |
20 | 26 |
<div class="infonotice"> |
21 | 27 |
<p>{% trans "Tests cannot be created because there are no completed forms." %}</p> |
wcs/testdef.py | ||
---|---|---|
162 | 162 |
def fill_page_fields(self, fields, page, formdata, objectdef): |
163 | 163 |
computed_fields = [] |
164 | 164 |
for field in fields: |
165 |
if field.type in ('subtitle', 'title', 'comment', 'computed'): |
|
165 |
if field.type in ( |
|
166 |
'subtitle', |
|
167 |
'title', |
|
168 |
'comment', |
|
169 |
'table', |
|
170 |
'table-select', |
|
171 |
'tablerows', |
|
172 |
'ranked-items', |
|
173 |
): |
|
166 | 174 |
continue |
167 | 175 | |
168 | 176 |
if not field.is_visible(formdata.data, objectdef): |
169 |
- |