Skip to content

Commit 9a65059

Browse files
author
Val Brodsky
committed
Add unit tests
1 parent a6738d7 commit 9a65059

File tree

2 files changed

+60
-9
lines changed

2 files changed

+60
-9
lines changed

libs/labelbox/src/labelbox/schema/user_group_v2.py

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -192,7 +192,7 @@ def upload_members(
192192

193193
def export_members(self, group_id: str) -> Optional[List[Member]]:
194194
warnings.warn(
195-
"The upload_members for UserGroupV2 is in beta. The method name and signature may change in the future.",
195+
"The export_members for UserGroupV2 is in beta. The method name and signature may change in the future.",
196196
)
197197

198198
if not group_id:
@@ -216,17 +216,18 @@ def export_members(self, group_id: str) -> Optional[List[Member]]:
216216
raise ResourceNotFoundError(message="The user group is not found.")
217217
data = result["userGroupV2"]
218218

219-
# Parse CSV string into list of members
220-
csv_lines = data["membersAsCSV"].strip().split("\n")
221-
members_list = []
219+
return self._parse_members_csv(data["membersAsCSV"])
220+
221+
def _parse_members_csv(self, csv_data: str) -> List[Member]:
222+
csv_lines = csv_data.strip().split("\n")
223+
if not csv_lines:
224+
return []
222225

226+
members_list = []
223227
# Skip header row
224228
for email in csv_lines[1:]:
225-
members_list.append(
226-
Member(
227-
email=email.strip(),
228-
)
229-
)
229+
if email.strip(): # Skip empty lines
230+
members_list.append(Member(email=email.strip()))
230231

231232
return members_list
232233

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
from unittest.mock import MagicMock
2+
3+
import pytest
4+
5+
from labelbox.schema.user_group_v2 import Member, UserGroupV2
6+
7+
8+
@pytest.fixture
9+
def client():
10+
return MagicMock()
11+
12+
13+
def test_parse_members_csv_empty(client):
14+
group = UserGroupV2(client)
15+
assert group._parse_members_csv("") == []
16+
assert group._parse_members_csv("\n") == []
17+
18+
19+
def test_parse_members_csv_header_only(client):
20+
group = UserGroupV2(client)
21+
assert group._parse_members_csv("email\n") == []
22+
23+
24+
def test_parse_members_csv_single_member(client):
25+
group = UserGroupV2(client)
26+
result = group._parse_members_csv("email\n[email protected]")
27+
assert len(result) == 1
28+
assert isinstance(result[0], Member)
29+
assert result[0].email == "[email protected]"
30+
31+
32+
def test_parse_members_csv_multiple_members(client):
33+
group = UserGroupV2(client)
34+
35+
result = group._parse_members_csv(csv_data)
36+
assert len(result) == 3
37+
assert [m.email for m in result] == [
38+
39+
40+
41+
]
42+
43+
44+
def test_parse_members_csv_handles_whitespace(client):
45+
group = UserGroupV2(client)
46+
csv_data = "email\n [email protected] \n\n[email protected]\n"
47+
result = group._parse_members_csv(csv_data)
48+
assert len(result) == 2
49+
assert result[0].email == "[email protected]"
50+
assert result[1].email == "[email protected]"

0 commit comments

Comments
 (0)