Skip to content

Commit e86d9cc

Browse files
committed
add tests for format_merge_fields_for_list
1 parent aafb6e3 commit e86d9cc

File tree

1 file changed

+69
-5
lines changed

1 file changed

+69
-5
lines changed

src/tests/test_mailchimp.py

Lines changed: 69 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -359,8 +359,7 @@ def test_get_merge_fields_data_type_map_success(self, mock_paginate):
359359
result = self.test_client.get_merge_fields_data_type_map(list_id)
360360

361361
mock_paginate.assert_called_once_with(
362-
base_endpoint=f"lists/{list_id}/merge-fields",
363-
data_key="merge_fields"
362+
base_endpoint=f"lists/{list_id}/merge-fields", data_key="merge_fields"
364363
)
365364

366365
expected_map = {"FNAME": "text", "LNAME": "text", "VAN_ID": "number"}
@@ -378,9 +377,74 @@ def test_get_merge_fields_data_type_map_fail(self, mock_paginate):
378377

379378
# paginate_endpoint called once
380379
mock_paginate.assert_called_once_with(
381-
base_endpoint=f"lists/{list_id}/merge-fields",
382-
data_key="merge_fields"
380+
base_endpoint=f"lists/{list_id}/merge-fields", data_key="merge_fields"
383381
)
384382

385383
# empty dict for result
386-
self.assertEqual(result, {})
384+
self.assertEqual(result, {})
385+
386+
@patch.object(MailChimpClient, "get_merge_fields_data_type_map")
387+
def test_format_merge_fields_for_list_skips_blank_and_none(self, mock_get_types):
388+
"""Test that None and blank strings are ignored"""
389+
mock_get_types.return_value = {"FNAME": "text", "LNAME": "text"}
390+
391+
merge_fields = {"FNAME": None, "LNAME": " "}
392+
result = self.test_client.format_merge_fields_for_list("llll", merge_fields)
393+
# should be an empty dict
394+
self.assertEqual(result, {})
395+
396+
@patch.object(MailChimpClient, "get_merge_fields_data_type_map")
397+
def test_format_merge_fields_for_list_text_success(self, mock_get_types):
398+
"""Test that text fields are handled correctly."""
399+
mock_get_types.return_value = {"FNAME": "text", "LNAME": "text"}
400+
401+
merge_fields = {"FNAME": " John ", "LNAME": "Doe"}
402+
result = self.test_client.format_merge_fields_for_list("oapao1", merge_fields)
403+
404+
mock_get_types.assert_called_once_with("oapao1")
405+
self.assertEqual(result, {"FNAME": "John", "LNAME": "Doe"})
406+
407+
@patch.object(MailChimpClient, "get_merge_fields_data_type_map")
408+
def test_format_merge_fields_for_list_zip_fail(self, mock_get_types):
409+
"""Test that zip type over 5 digits raise error"""
410+
mock_get_types.return_value = {"ZIP": "zip"}
411+
412+
merge_fields = {"ZIP": "1111122"}
413+
414+
with self.assertRaises(ValueError):
415+
self.test_client.format_merge_fields_for_list("some_id", merge_fields)
416+
417+
@patch.object(MailChimpClient, "get_merge_fields_data_type_map")
418+
def test_format_merge_fields_for_list_with_helpers(self, mock_get_types):
419+
"""Test that date, birthday, address, and number fields are pushed to the correct helper function"""
420+
mock_get_types.return_value = {
421+
"DATE": "date",
422+
"BIRTHDAY": "birthday",
423+
"ADDRESS": "address",
424+
"NUMBER": "number",
425+
}
426+
427+
# replace methods with mocks
428+
with patch.object(self.test_client, "format_date") as mock_date, patch.object(
429+
self.test_client, "format_birthday"
430+
) as mock_bday, patch.object(
431+
self.test_client,
432+
"format_address",
433+
) as mock_addr, patch.object(
434+
self.test_client,
435+
"format_number",
436+
) as mock_num:
437+
# placeholder fake data
438+
merge_fields = {
439+
"DATE": "2022-10-09",
440+
"BIRTHDAY": "10/09",
441+
"ADDRESS": {},
442+
"NUMBER": 0,
443+
}
444+
445+
self.test_client.format_merge_fields_for_list("some_id", merge_fields)
446+
# just test if helper methods were called
447+
mock_date.assert_called_once()
448+
mock_bday.assert_called_once()
449+
mock_addr.assert_called_once()
450+
mock_num.assert_called_once()

0 commit comments

Comments
 (0)