Skip to content

Commit b72ba5f

Browse files
committed
Fixed tests made improvements
1 parent d51f3fa commit b72ba5f

File tree

2 files changed

+22
-26
lines changed

2 files changed

+22
-26
lines changed

libs/labelbox/src/labelbox/schema/member.py

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
ResourceNotFoundError,
55
UnprocessableEntityError,
66
)
7-
from typing import Set, Iterator, Any
7+
from typing import Set, Iterator, Any, List
88
from pydantic import (
99
Field,
1010
field_validator,
@@ -25,7 +25,7 @@ class ProjectMembership(_CamelCaseMixin):
2525
"""
2626

2727
project_id: str
28-
role: Optional[Role] = None
28+
role: Optional[Role] = Field(default=None)
2929

3030
def __hash__(self) -> int:
3131
return self.project_id.__hash__()
@@ -34,7 +34,7 @@ def __hash__(self) -> int:
3434
def serialize_model(self):
3535
return {
3636
"projectId": self.project_id,
37-
"roleId": None if self.role is None else self.role.id,
37+
"roleId": None if self.role is None else self.role.uid,
3838
}
3939

4040

@@ -214,6 +214,7 @@ def update(self) -> "Member":
214214
Raises:
215215
ResourceNotFoundError: If the update fails due to unknown member
216216
UnprocessableEntityError: If the update fails due to a malformed input
217+
ValueError: If the member id is current member id.
217218
"""
218219
query = """
219220
mutation SetUserAccessPyApi($id: ID!, $roleId: ID!, $canAccessAllProjects: Boolean!, $groupIds: [String!], $projectMemberships: [ProjectMembershipsInput!]) {
@@ -230,13 +231,16 @@ def update(self) -> "Member":
230231
"id": self.id,
231232
"roleId": self.default_role.uid if self.default_role else None,
232233
"canAccessAllProjects": self.can_access_all_projects,
233-
"groupIds": self.user_group_ids,
234+
"groupIds": list(self.user_group_ids),
234235
"projectMemberships": [
235236
project_membership.model_dump()
236237
for project_membership in self.project_memberships
237238
],
238239
}
239240

241+
if self.id == self._current_user_id:
242+
raise ValueError("Unable to update self")
243+
240244
try:
241245
result = self.client.execute(query, params, experimental=True)
242246
if not result:
@@ -282,7 +286,7 @@ def delete(self) -> bool:
282286
raise ResourceNotFoundError(
283287
message="Failed to delete member as member does not exist"
284288
)
285-
return result["data"]["updateUser"]["deleted"]
289+
return result["updateUser"]["deleted"]
286290

287291
def _get_project_memberships(self, user_id: str) -> Set[ProjectMembership]:
288292
"""
@@ -331,8 +335,8 @@ def _get_project_memberships(self, user_id: str) -> Set[ProjectMembership]:
331335
def get_members(
332336
self,
333337
search: str = "",
334-
roles: Optional[list[Role]] = None,
335-
group_ids: Optional[list[str]] = None,
338+
roles: Optional[List[Role]] = None,
339+
group_ids: Optional[List[str]] = None,
336340
) -> Iterator["Member"]:
337341
"""
338342
Gets all members in Labelbox.

libs/labelbox/tests/integration/schema/test_members.py

Lines changed: 11 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
1-
from uuid import uuid4
2-
31
import faker
42
from labelbox.schema.member import Member, ProjectMembership
53
import pytest
6-
74
from labelbox.exceptions import (
85
ResourceNotFoundError,
96
)
@@ -18,8 +15,8 @@ def current_member(client):
1815

1916

2017
@pytest.fixture
21-
def member(client, current_member):
22-
members = list(Member(client).get_members())
18+
def test_member(client, current_member):
19+
members = list(Member(client=client).get_members())
2320
test_member = None
2421
for member in members:
2522
if member.id != current_member.id:
@@ -30,7 +27,7 @@ def member(client, current_member):
3027
@pytest.fixture
3128
def user_group(client):
3229
group_name = data.name()
33-
user_group = UserGroup(client)
30+
user_group = UserGroup(client=client)
3431
user_group.name = group_name
3532
user_group.color = UserGroupColor.BLUE
3633

@@ -40,18 +37,11 @@ def user_group(client):
4037

4138

4239
def test_get_member(current_member, client):
43-
current_member_eq = Member(client)
44-
current_member_eq.get()
40+
current_member_eq = Member(client=client).get()
4541
assert current_member_eq.id == current_member.id
4642
assert current_member_eq.email == current_member.email
4743

4844

49-
def test_throw_error_cannot_get_user_group_with_invalid_id(client):
50-
Member = UserGroup(Member=client, id=str(uuid4()))
51-
with pytest.raises(ResourceNotFoundError):
52-
Member.get()
53-
54-
5545
def test_throw_error_when_deleting_self(current_member, client):
5646
with pytest.raises(ValueError):
5747
current_member.delete()
@@ -93,15 +83,17 @@ def test_update_member(client, test_member, project_pack, user_group):
9383

9484

9585
def test_get_members(test_member, current_member, client):
96-
members = list(Member(client).get_members(search=current_member.email))
97-
assert current_member in members
9886
members = list(
99-
Member(client).get_members(roles=[current_member.default_role])
87+
Member(client=client).get_members(search=current_member.email)
10088
)
10189
assert current_member in members
102-
members = list(Member(client).get_members())
103-
assert test_member in members
90+
members = list(
91+
Member(client=client).get_members(roles=[current_member.default_role])
92+
)
10493
assert current_member in members
94+
member_ids = [member.id for member in Member(client=client).get_members()]
95+
assert test_member.id in member_ids
96+
assert current_member.id in member_ids
10597

10698

10799
if __name__ == "__main__":

0 commit comments

Comments
 (0)