Skip to content
This repository has been archived by the owner on Oct 22, 2024. It is now read-only.

Commit

Permalink
Exclusion des services de structures obsolètes lors de la recherche (#…
Browse files Browse the repository at this point in the history
…414)

Quand une structure est indiquée comme obsolète par un gestionnaire ou
par nous, on ne souhaite pas que les services qu’elle propose soient
affichés dans les résultats de recherche.

- AJout d'un filtre dans la fonction de recherche de services DORA
`_get_dora_results()` ;
- Ajout d'un test du filtrage des services de structure obsolète
`test_search_services_with_obsolete_structure()`.
  • Loading branch information
ggounot authored Oct 15, 2024
1 parent 491a6d6 commit c2e2f96
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 0 deletions.
3 changes: 3 additions & 0 deletions dora/services/search.py
Original file line number Diff line number Diff line change
Expand Up @@ -256,6 +256,9 @@ def _get_dora_results(
)
)

# On exclus les services dont la structure est marquèe comme obsolète
services = services.exclude(structure__is_obsolete=True)

# Par souci de qualité des données,
# les services DORA rattachés à une structure orpheline
# sont filtrés lors de la recherche.
Expand Down
33 changes: 33 additions & 0 deletions dora/services/tests/test_search.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@

from dora.admin_express.models import AdminDivisionType
from dora.core.test_utils import (
make_published_service,
make_service,
make_structure,
make_user,
Expand All @@ -31,6 +32,38 @@ def structure_with_user():
return make_structure(user=make_user())


def test_search_services_with_obsolete_structure(api_client):
# les services rattachés à une structure obsolète
# doivent être filtrés lors de la recherche

# Service publié avec structure non obsolète
service = make_published_service(diffusion_zone_type=AdminDivisionType.COUNTRY)

# le paramètre `city` est nécessaire a minima
city = baker.make("City")
response = api_client.get(f"/search/?city={city.code}")

assert response.status_code == 200
assert response.data[
"services"
], "un service devrait être retourné (structure non obsolète)"

[found] = response.data["services"]

assert found["slug"] == service.slug

# on rend la structure obsolète
service.structure.is_obsolete = True
service.structure.save()

response = api_client.get(f"/search/?city={city.code}")

assert response.status_code == 200
assert not response.data[
"services"
], "aucun service ne devrait être retourné (structure obsolète)"


def test_search_services_with_orphan_structure(
api_client, orphan_service, structure_with_user
):
Expand Down

0 comments on commit c2e2f96

Please sign in to comment.