Coverage for tests/endpoints/tests_invites.py: 100%

28 statements  

« prev     ^ index     » next       coverage.py v7.10.5, created at 2025-08-26 22:06 +0000

1import json 

2from unittest.mock import patch 

3 

4from tests.endpoints.endpoint_testing import TestEndpoints 

5 

6 

7class TestInvites(TestEndpoints): 

8 @patch("canonicalwebteam.store_api.dashboard.Dashboard.get_store_invites") 

9 def test_get_invites(self, mock_get_store_invites): 

10 mock_invites_data = [ 

11 { 

12 "id": "invite-1", 

13 "email": "user1@example.com", 

14 "status": "pending", 

15 "roles": ["admin"], 

16 "created_at": "2025-01-01T10:00:00Z", 

17 }, 

18 { 

19 "id": "invite-2", 

20 "email": "user2@example.com", 

21 "status": "accepted", 

22 "roles": ["view"], 

23 "created_at": "2025-01-02T11:00:00Z", 

24 }, 

25 ] 

26 

27 mock_get_store_invites.return_value = mock_invites_data 

28 

29 response = self.client.get("/api/store/test-store-id/invites") 

30 data = response.get_json() 

31 

32 self.assertEqual(response.status_code, 200) 

33 self.assertEqual(data, mock_invites_data) 

34 

35 @patch( 

36 "canonicalwebteam.store_api.dashboard.Dashboard.update_store_invites" 

37 ) 

38 def test_update_invite_status(self, mock_update_store_invites): 

39 """Test successful invite status update""" 

40 mock_invites_data = [ 

41 {"id": "invite-1", "status": "accepted"}, 

42 {"id": "invite-2", "status": "declined"}, 

43 ] 

44 

45 mock_update_store_invites.return_value = None 

46 

47 response = self.client.post( 

48 "/api/store/test-store-id/invite/update", 

49 data={"invites": json.dumps(mock_invites_data)}, 

50 ) 

51 data = response.get_json() 

52 

53 self.assertEqual(response.status_code, 200) 

54 self.assertEqual(data["msg"], "Changes saved") 

55 

56 @patch( 

57 "canonicalwebteam.store_api.dashboard.Dashboard.invite_store_members" 

58 ) 

59 def test_post_invite_members_success(self, mock_invite_store_members): 

60 """Test successful invitation of store members""" 

61 mock_members_data = [ 

62 {"email": "user1@example.com", "roles": ["admin"]}, 

63 {"email": "user2@example.com", "roles": ["view"]}, 

64 ] 

65 

66 mock_invite_store_members.return_value = None 

67 

68 response = self.client.post( 

69 "/api/store/test-store-id/invite", 

70 data={"members": json.dumps(mock_members_data)}, 

71 ) 

72 data = response.get_json() 

73 

74 self.assertEqual(response.status_code, 200) 

75 self.assertEqual(data["msg"], "Changes saved")