|
7 | 7 |
|
8 | 8 | from .utils import (
|
9 | 9 | PROJECT_ID,
|
| 10 | + add_all_db, |
10 | 11 | assert_request,
|
11 | 12 | check_authorization,
|
12 | 13 | check_missing,
|
@@ -118,3 +119,49 @@ def test_schema_constraints(client, json_data):
|
118 | 119 | json=json_data | {"age_min": 1.0, "age_max": 1.0},
|
119 | 120 | expected_status_code=422,
|
120 | 121 | )
|
| 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