|
1 | 1 | import json |
2 | 2 |
|
| 3 | +import pytest |
3 | 4 | from django.urls import reverse |
4 | 5 | from rest_framework import status |
5 | 6 |
|
@@ -203,3 +204,39 @@ def test_list_features__filter_by_archived_status__returns_matching_features( # |
203 | 204 | list_features_is_archived_true_response.json()["results"][0]["id"] |
204 | 205 | == archived_feature_id |
205 | 206 | ) |
| 207 | + |
| 208 | + |
| 209 | +@pytest.mark.parametrize( |
| 210 | + "type_filter, expected_feature_name", |
| 211 | + [ |
| 212 | + ("STANDARD", "standard_feature"), |
| 213 | + ("MULTIVARIATE", "multivariate_feature"), |
| 214 | + ], |
| 215 | +) |
| 216 | +def test_list_features__filter_by_type__returns_matching_features( # type: ignore[no-untyped-def] |
| 217 | + admin_client, project, type_filter, expected_feature_name |
| 218 | +): |
| 219 | + # Given |
| 220 | + features_url = reverse("api-v1:projects:project-features-list", args=[project]) |
| 221 | + admin_client.post( |
| 222 | + features_url, |
| 223 | + data={"name": "standard_feature", "project": project}, |
| 224 | + ) |
| 225 | + admin_client.post( |
| 226 | + features_url, |
| 227 | + data={ |
| 228 | + "name": "multivariate_feature", |
| 229 | + "project": project, |
| 230 | + "type": "MULTIVARIATE", |
| 231 | + "initial_value": "control", |
| 232 | + }, |
| 233 | + ) |
| 234 | + |
| 235 | + # When |
| 236 | + response = admin_client.get(f"{features_url}?type={type_filter}") |
| 237 | + |
| 238 | + # Then |
| 239 | + assert response.status_code == status.HTTP_200_OK |
| 240 | + response_json = response.json() |
| 241 | + assert response_json["count"] == 1 |
| 242 | + assert response_json["results"][0]["name"] == expected_feature_name |
0 commit comments