11import os
22import json
33import unittest
4- from unittest .mock import MagicMock , patch
4+ from unittest .mock import patch , MagicMock
55from src .stac_utils .mailchimp import MailChimpClient , logger
66
77
@@ -344,3 +344,43 @@ def test_upsert_member_fail(self, mock_put, mock_transform, mock_merge_fields_ma
344344 mock_put .assert_not_called ()
345345 # no transform_response call for upsert should have occurred
346346 mock_transform .assert_not_called ()
347+
348+ @patch .object (MailChimpClient , "paginate_endpoint" )
349+ def test_get_merge_fields_data_type_map_success (self , mock_paginate ):
350+ """Test that get_merge_fields_data_type_map returns correct mapping on success"""
351+ mock_paginate .return_value = [
352+ {"tag" : "FNAME" , "type" : "text" },
353+ {"tag" : "LNAME" , "type" : "text" },
354+ {"tag" : "VAN_ID" , "type" : "number" },
355+ ]
356+
357+ list_id = "98798798h"
358+
359+ result = self .test_client .get_merge_fields_data_type_map (list_id )
360+
361+ mock_paginate .assert_called_once_with (
362+ base_endpoint = f"lists/{ list_id } /merge-fields" ,
363+ data_key = "merge_fields"
364+ )
365+
366+ expected_map = {"FNAME" : "text" , "LNAME" : "text" , "VAN_ID" : "number" }
367+ self .assertEqual (result , expected_map )
368+
369+ @patch .object (MailChimpClient , "paginate_endpoint" )
370+ def test_get_merge_fields_data_type_map_fail (self , mock_paginate ):
371+ """Test that get_merge_fields_data_type_map returns empty dict fail"""
372+
373+ # paginate_endpoint returns no data
374+ mock_paginate .return_value = [{}]
375+
376+ list_id = "zzzz"
377+ result = self .test_client .get_merge_fields_data_type_map (list_id )
378+
379+ # paginate_endpoint called once
380+ mock_paginate .assert_called_once_with (
381+ base_endpoint = f"lists/{ list_id } /merge-fields" ,
382+ data_key = "merge_fields"
383+ )
384+
385+ # empty dict for result
386+ self .assertEqual (result , {})
0 commit comments