Coverage for src/tests/api/v1/club/members/test_upload_members.py: 100%
35 statements
« prev ^ index » next coverage.py v7.11.0, created at 2024-01-01 00:00 +0000
« prev ^ index » next coverage.py v7.11.0, created at 2024-01-01 00:00 +0000
1"""Module for testing the upload members endpoint of the club API."""
3from pathlib import Path
5import pytest
7from fastapi import status
8from fastapi.testclient import TestClient
11pytestmark = pytest.mark.api
14def test_import_members(secure_client: TestClient):
15 """Test /api/v1/club/members/upload."""
16 filename = Path(__file__).parent / "data" / "flemish_members_test.csv"
18 with open(filename, "rb") as file_handle:
19 response = secure_client.post(
20 "/api/v1/club/members/upload", files={"member_file": file_handle}
21 )
22 assert response.status_code == status.HTTP_200_OK
23 result = response.json()
24 assert "data" in result, "There should be a 'data' property."
25 assert "relationships" in result["data"], (
26 "There should be a 'relationships' property."
27 )
28 assert "members" in result["data"]["relationships"], (
29 "There should be a 'members' property."
30 )
31 assert len(result["data"]["relationships"]["members"]["data"]) == 2, (
32 "There should be 2 members uploaded."
33 )
36def test_preview_import_members(secure_client: TestClient):
37 """Test /api/v1/club/members/upload?preview=True."""
38 filename = Path(__file__).parent / "data" / "flemish_members_test.csv"
40 with open(filename, "rb") as file_handle:
41 response = secure_client.post(
42 "/api/v1/club/members/upload",
43 files={"member_file": file_handle},
44 params={"preview": True},
45 )
46 assert response.status_code == status.HTTP_200_OK
47 result = response.json()
48 assert "data" in result, "There should be a 'data' property."
49 assert "relationships" in result["data"], (
50 "There should be a 'relationships' property."
51 )
52 assert "members" in result["data"]["relationships"], (
53 "There should be a 'members' property."
54 )
55 assert len(result["data"]["relationships"]["members"]["data"]) == 2, (
56 "There should be 2 members uploaded."
57 )
60def test_import_duplicate_members(secure_client: TestClient):
61 """Test /api/v1/club/members/upload."""
62 filename = Path(__file__).parent / "data" / "flemish_members_duplicate_test.csv"
64 with open(filename, "rb") as file_handle:
65 response = secure_client.post(
66 "/api/v1/club/members/upload", files={"member_file": file_handle}
67 )
68 assert response.status_code == status.HTTP_400_BAD_REQUEST
71def test_preview_import_duplicate_members(secure_client: TestClient):
72 """Test /api/v1/club/members/upload?preview=true."""
73 filename = Path(__file__).parent / "data" / "flemish_members_duplicate_test.csv"
75 with open(filename, "rb") as file_handle:
76 response = secure_client.post(
77 "/api/v1/club/members/upload",
78 files={"member_file": file_handle},
79 params={"preview": True},
80 )
81 assert response.status_code == status.HTTP_400_BAD_REQUEST