Skip to content

Commit 5087cc8

Browse files
Add name to subject filter (regression) (#318)
1 parent 5e083ac commit 5087cc8

File tree

2 files changed

+48
-0
lines changed

2 files changed

+48
-0
lines changed

app/filters/subject.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ class SubjectFilter(
4040
SpeciesFilterMixin,
4141
CreationFilterMixin,
4242
CreatorFilterMixin,
43+
NameFilterMixin,
4344
CustomFilter,
4445
):
4546
age_value: timedelta | None = None

tests/test_subject.py

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
from .utils import (
99
PROJECT_ID,
10+
add_all_db,
1011
assert_request,
1112
check_authorization,
1213
check_missing,
@@ -118,3 +119,49 @@ def test_schema_constraints(client, json_data):
118119
json=json_data | {"age_min": 1.0, "age_max": 1.0},
119120
expected_status_code=422,
120121
)
122+
123+
124+
@pytest.fixture
125+
def models(db, person_id, species_id):
126+
rows = [
127+
Subject(
128+
sex="female",
129+
name=f"my-subject-{i}",
130+
description="my-description-{i}",
131+
species_id=species_id,
132+
age_value=timedelta(days=i + 1),
133+
age_period="postnatal",
134+
created_by_id=person_id,
135+
updated_by_id=person_id,
136+
authorized_project_id=PROJECT_ID,
137+
creation_date=f"2025-01-01 00:00:{i:02}",
138+
)
139+
for i in range(5)
140+
]
141+
return add_all_db(db, rows)
142+
143+
144+
def test_filtering_sorting(client, models):
145+
def req(query):
146+
return assert_request(client.get, url=ROUTE, params=query).json()["data"]
147+
148+
data = req({})
149+
assert len(data) == len(models)
150+
151+
data = req({"name": "my-subject-1"})
152+
assert len(data) == 1
153+
154+
data = req({"name": "my-subject"})
155+
assert len(data) == 0
156+
157+
data = req({"age_value": "2 days"})
158+
assert len(data) == 1
159+
160+
data = req({"age_value": "99 days"})
161+
assert len(data) == 0
162+
163+
data = req({"name__in": ["my-subject-1", "my-subject-2"], "order_by": "creation_date"})
164+
assert [d["name"] for d in data] == ["my-subject-1", "my-subject-2"]
165+
166+
data = req({"name__in": ["my-subject-1", "my-subject-2"], "order_by": "-creation_date"})
167+
assert [d["name"] for d in data] == ["my-subject-2", "my-subject-1"]

0 commit comments

Comments
 (0)