import json import unittest from pathlib import Path ROOT = Path(__file__).resolve().parents[1] PACK_ROOTS = [ ROOT / "packs" / "Salesforce-PingCAP-L2", ROOT / "packs" / "NOT-EDIT-final-merged-packs", ] FLOW_NAMES = [ "Lead_Set_First_And_Last_CampaignMember", "Lead_Set_First_And_Last_CampaignMember_delete", "Contact_Set_First_And_Last_CampaignMember", "Contact_Set_First_And_Last_CampaignMember_delete", ] class CampaignAttributionFlowProjectionTests(unittest.TestCase): def test_all_active_and_final_lookups_project_the_used_fields(self): for pack_root in PACK_ROOTS: for flow_name in FLOW_NAMES: with self.subTest(pack=pack_root.name, flow=flow_name): payload = json.loads( (pack_root / "flows" / f"{flow_name}.flow.json").read_text() ) self.assertEqual(payload.get("status"), "Active") lookups = { lookup.get("name"): lookup for lookup in payload.get("recordLookups", []) if lookup.get("object") == "CampaignMember" } self.assertEqual( set(lookups), {"Get_first_CampaignMember", "Get_last_CampaignMember"}, ) for lookup in lookups.values(): self.assertEqual(lookup.get("queriedFields"), ["Id", "CampaignId"]) if __name__ == "__main__": unittest.main()