From cd7135da00b04fafeb9bb587d2859f1729856c96 Mon Sep 17 00:00:00 2001 From: Sabrina Demagny Date: Fri, 17 Jan 2025 09:54:55 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B(backend)=20fix=20flaky=20test=20wi?= =?UTF-8?q?th=20team=20access=20#646?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Faker sometimes creates users whose name starts with "Ms." or "Mr." The implemented test code computed the order without handling these cases and failed. --- CHANGELOG.md | 1 + .../test_api_team_accesses_list.py | 34 ++++++++++--------- 2 files changed, 19 insertions(+), 16 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3589d60..6ed8ca2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,7 @@ and this project adheres to ### Fixed +- 🐛(backend) fix flaky test with team access #646 - 🧑‍💻(dimail) remove 'NoneType: None' log in debug mode - 🐛(frontend) fix flaky e2e test #636 - 🐛(frontend) fix disable mailbox button display #631 diff --git a/src/backend/core/tests/team_accesses/test_api_team_accesses_list.py b/src/backend/core/tests/team_accesses/test_api_team_accesses_list.py index f522afc..98c8002 100644 --- a/src/backend/core/tests/team_accesses/test_api_team_accesses_list.py +++ b/src/backend/core/tests/team_accesses/test_api_team_accesses_list.py @@ -338,14 +338,19 @@ def test_api_team_accesses_list_authenticated_ordering(): def test_api_team_accesses_list_authenticated_ordering_user(ordering_field): """Team accesses can be ordered by user's fields.""" - user = factories.UserFactory() + john = factories.UserFactory(email="john.doe@example.com", name="John Doe") team = factories.TeamFactory() - models.TeamAccess.objects.create(team=team, user=user) + models.TeamAccess.objects.create(team=team, user=john) - # create 20 new team members - for _ in range(20): - extra_user = factories.UserFactory() - factories.TeamAccessFactory(team=team, user=extra_user) + # create new team members + dave = factories.UserFactory(email="bowbow@example.com", name="David Bowman") + nicole = factories.UserFactory( + email="nicole_foole@example.com", name="Nicole Foole" + ) + frank = factories.UserFactory(email="frank_poole@example.com", name="Frank Poole") + mary = factories.UserFactory(email="mary_pol@example.com", name="Mary Pol") + for user in (dave, nicole, frank, mary): + factories.TeamAccessFactory(team=team, user=user) client = APIClient() client.force_login(user) @@ -354,14 +359,11 @@ def test_api_team_accesses_list_authenticated_ordering_user(ordering_field): f"/api/v1.0/teams/{team.id!s}/accesses/?ordering=user__{ordering_field}", ) assert response.status_code == HTTP_200_OK - assert response.json()["count"] == 21 - - def normalize(x): - """Mimic Django order_by, which is case-insensitive and space-insensitive""" - return x.casefold().replace(" ", "") - - results = [ - team_access["user"][ordering_field] - for team_access in response.json()["results"] + assert response.json()["count"] == 5 + assert [access["user"]["name"] for access in response.json()["results"]] == [ + dave.name, + frank.name, + john.name, + mary.name, + nicole.name, ] - assert sorted(results, key=normalize) == results