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

1"""Module for testing the upload members endpoint of the club API.""" 

2 

3from pathlib import Path 

4 

5import pytest 

6 

7from fastapi import status 

8from fastapi.testclient import TestClient 

9 

10 

11pytestmark = pytest.mark.api 

12 

13 

14def test_import_members(secure_client: TestClient): 

15 """Test /api/v1/club/members/upload.""" 

16 filename = Path(__file__).parent / "data" / "flemish_members_test.csv" 

17 

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 ) 

34 

35 

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" 

39 

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 ) 

58 

59 

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" 

63 

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 

69 

70 

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" 

74 

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