Projet

Général

Profil

0001-testdef-forbid-test-creation-if-form-has-deprecated-.patch

Valentin Deniaud, 12 janvier 2023 16:34

Télécharger (3,66 ko)

Voir les différences:

Subject: [PATCH] testdef: forbid test creation if form has deprecated fields
 (#73331)

 tests/admin_pages/test_tests.py         | 17 +++++++++++++++++
 wcs/admin/tests.py                      |  4 ++++
 wcs/templates/wcs/backoffice/tests.html |  8 +++++++-
 wcs/testdef.py                          | 10 +++++++++-
 4 files changed, 37 insertions(+), 2 deletions(-)
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
-