Skip to content

Commit c9a0756

Browse files
committed
test: Increase coverage for user transformer with new address handling tests
1 parent ede57e0 commit c9a0756

1 file changed

Lines changed: 82 additions & 1 deletion

File tree

tests/test_user_transformer.py

Lines changed: 82 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
import logging
22

3-
from folio_migration_tools.migration_tasks.user_transformer import UserTransformer
3+
from folio_migration_tools.migration_tasks.user_transformer import (
4+
UserTransformer,
5+
remove_empty_addresses,
6+
find_primary_addresses,
7+
)
48
from folio_uuid.folio_namespaces import FOLIONamespaces
59

610
LOGGER = logging.getLogger(__name__)
@@ -121,3 +125,80 @@ def test_clean_user_no_valid_address_data():
121125
}
122126
UserTransformer.clean_user(folio_user, "id")
123127
assert "addresses" not in folio_user["personal"]
128+
129+
130+
def test_remove_empty_addresses_removes_empty():
131+
folio_user = {
132+
"personal": {
133+
"addresses": [
134+
{"id": "1", "addressTypeId": "type1", "primaryAddress": True},
135+
{"id": "2", "addressLine1": "123 Main St", "primaryAddress": False},
136+
{"id": "3", "addressLine2": "Apt 4", "addressTypeId": "type2"},
137+
{"id": "4", "primaryAddress": False, "addressTypeId": "type3"},
138+
]
139+
}
140+
}
141+
result = remove_empty_addresses(folio_user)
142+
# Only address 2 and 3 have fields other than id, addressTypeId, primaryAddress
143+
assert len(result) == 2
144+
assert any(a["id"] == "2" for a in result)
145+
assert any(a["id"] == "3" for a in result)
146+
147+
148+
def test_remove_empty_addresses_no_addresses():
149+
folio_user = {"personal": {}}
150+
result = remove_empty_addresses(folio_user)
151+
assert result == []
152+
153+
154+
def test_remove_empty_addresses_all_valid():
155+
folio_user = {
156+
"personal": {
157+
"addresses": [
158+
{"id": "1", "addressLine1": "A", "primaryAddress": True},
159+
{"id": "2", "addressLine2": "B", "primaryAddress": False},
160+
]
161+
}
162+
}
163+
result = remove_empty_addresses(folio_user)
164+
assert len(result) == 2
165+
166+
167+
def test_find_primary_addresses_sets_missing_to_false():
168+
addresses = [
169+
{"addressLine1": "A"},
170+
{"addressLine1": "B", "primaryAddress": True},
171+
{"addressLine1": "C", "primaryAddress": "True"},
172+
{"addressLine1": "D", "primaryAddress": "False"},
173+
]
174+
primary = find_primary_addresses(addresses)
175+
assert len(primary) == 2
176+
assert addresses[0]["primaryAddress"] is False
177+
assert addresses[3]["primaryAddress"] is False
178+
179+
180+
def test_find_primary_addresses_handles_bool_and_str():
181+
addresses = [
182+
{"addressLine1": "A", "primaryAddress": True},
183+
{"addressLine1": "B", "primaryAddress": "true"},
184+
{"addressLine1": "C", "primaryAddress": False},
185+
{"addressLine1": "D", "primaryAddress": "False"},
186+
]
187+
primary = find_primary_addresses(addresses)
188+
assert len(primary) == 2
189+
for addr in addresses:
190+
if addr["addressLine1"] in ["A", "B"]:
191+
assert addr["primaryAddress"] is True or addr["primaryAddress"] == "true"
192+
else:
193+
assert addr["primaryAddress"] is False
194+
195+
196+
def test_find_primary_addresses_all_missing():
197+
addresses = [
198+
{"addressLine1": "A"},
199+
{"addressLine1": "B"},
200+
]
201+
primary = find_primary_addresses(addresses)
202+
assert len(primary) == 0
203+
for addr in addresses:
204+
assert addr["primaryAddress"] is False

0 commit comments

Comments
 (0)