|
14 | 14 | from citrine.resources.project import Project, ProjectCollection |
15 | 15 | from citrine.resources.project_member import ProjectMember |
16 | 16 | from citrine.resources.project_roles import MEMBER, LEAD, WRITE |
17 | | -from tests.utils.factories import ProjectDataFactory, UserDataFactory |
| 17 | +from tests.utils.factories import ProjectDataFactory, UserDataFactory, TeamDataFactory |
18 | 18 | from tests.utils.session import FakeSession, FakeCall, FakePaginatedSession, FakeRequestResponse |
| 19 | +from citrine.resources.team import READ, TeamMember |
19 | 20 |
|
20 | 21 | logger = getLogger(__name__) |
21 | 22 |
|
@@ -814,9 +815,34 @@ def test_update_project(collection: ProjectCollection, project): |
814 | 815 | collection.update(project) |
815 | 816 |
|
816 | 817 |
|
817 | | -def test_list_members_v3(project_v3): |
818 | | - with pytest.raises(NotImplementedError): |
819 | | - project_v3.list_members() |
| 818 | +def test_list_members_v3(project_v3, session_v3): |
| 819 | + # Given |
| 820 | + user = UserDataFactory() |
| 821 | + user["actions"] = READ |
| 822 | + user.pop("position") |
| 823 | + |
| 824 | + team_data = TeamDataFactory( |
| 825 | + id=str(project_v3.team_id), |
| 826 | + ) |
| 827 | + |
| 828 | + session_v3.set_responses( |
| 829 | + {'team': team_data}, |
| 830 | + {'users': [user]} |
| 831 | + ) |
| 832 | + |
| 833 | + # When |
| 834 | + members = project_v3.list_members() |
| 835 | + |
| 836 | + # Then |
| 837 | + assert 2 == session_v3.num_calls |
| 838 | + expect_call_1 = FakeCall( |
| 839 | + method='GET', |
| 840 | + path='/teams/{}'.format(team_data['id']), |
| 841 | + ) |
| 842 | + expect_call_2 = FakeCall(method='GET', path='/teams/{}/users'.format(project_v3.team_id)) |
| 843 | + assert expect_call_1 == session_v3.calls[0] |
| 844 | + assert expect_call_2 == session_v3.calls[1] |
| 845 | + assert isinstance(members[0], TeamMember) |
820 | 846 |
|
821 | 847 |
|
822 | 848 | def test_list_members(project, session): |
|
0 commit comments