Projet

Général

Profil

0001-opendatasoft-manage-empty-content-returned-43223.patch

Nicolas Roche, 22 mai 2020 13:21

Télécharger (3,41 ko)

Voir les différences:

Subject: [PATCH] opendatasoft: manage empty content returned (#43223)

 passerelle/apps/opendatasoft/models.py | 23 ++++++++++++-----------
 tests/test_opendatasoft.py             | 10 ++++++++++
 2 files changed, 22 insertions(+), 11 deletions(-)
passerelle/apps/opendatasoft/models.py
71 71
        if self.api_key:
72 72
            params.update({'apikey': self.api_key})
73 73
        if limit:
74 74
            params.update({'rows': limit})
75 75

  
76 76
        result_response = self.requests.get(url, params=params)
77 77

  
78 78
        result = []
79
        for record in result_response.json().get('records'):
80
            data = {}
81
            data['id'] = record.get('recordid')
82

  
83
            context = {}
84
            for key, value in record.get('fields').items():
85
                context[key] = force_text(value)
86
            template = Template(text_template)
87
            data['text'] = template.render(Context(context)).strip()
88

  
89
            result.append(data)
79
        if result_response.json().get('records'):
80
            for record in result_response.json().get('records'):
81
                data = {}
82
                data['id'] = record.get('recordid')
83

  
84
                context = {}
85
                for key, value in record.get('fields').items():
86
                    context[key] = force_text(value)
87
                template = Template(text_template)
88
                data['text'] = template.render(Context(context)).strip()
89

  
90
                result.append(data)
90 91
        return {'data': result}
91 92

  
92 93
    @endpoint(name='q',
93 94
              description=_('Query'),
94 95
              pattern=r'^(?P<query_slug>[\w:_-]+)/$',
95 96
              perm='can_access',
96 97
              show=False)
97 98
    def q(self, request, query_slug, **kwargs):
tests/test_opendatasoft.py
180 180
    resp.form['name'] = 'my query'
181 181
    resp.form['slug'] = 'my-query'
182 182
    resp.form['dataset'] = 'my-dataset'
183 183
    resp = resp.form.submit()
184 184
    resp = resp.follow()
185 185
    assert resp.html.find('div', {'id': 'queries'}).ul.li.a.text == 'my query'
186 186

  
187 187

  
188
@mock.patch('passerelle.utils.Request.get')
189
def test_search_empty_content(mocked_get, app, connector):
190
    endpoint = utils.generic_endpoint_url('opendatasoft', 'search', slug=connector.slug)
191
    assert endpoint == '/opendatasoft/my_connector/search'
192
    mocked_get.return_value = utils.FakedResponse(content={}, status_code=200)
193
    resp = app.get(endpoint, status=200)
194
    assert not resp.json['err']
195
    assert len(resp.json['data']) == 0
196

  
197

  
188 198
@mock.patch('passerelle.utils.Request.get')
189 199
def test_search_using_q(mocked_get, app, connector):
190 200
    endpoint = utils.generic_endpoint_url('opendatasoft', 'search', slug=connector.slug)
191 201
    assert endpoint == '/opendatasoft/my_connector/search'
192 202
    params = {
193 203
        'dataset': 'referentiel-adresse-test',
194 204
        'text_template': '{{numero}} {{nom_rue|safe}} {{nom_commun}}',
195 205
        'q': "rue de l'aubepine",
196
-