"""Unit tests for Chartmetric Socials Decider.""" from unittest.mock import MagicMock from garcon.activity import Activity from feed_ingestion.flows.chartmetric_socials.flow import Flow def test_decider(): """Test decider method.""" activity_result = MagicMock() activity_result.result.get.return_value = False schedule = MagicMock() schedule.return_value = activity_result # list of activities activity_names = { 'bootstrap', 'clear_log_table', 'create_accounts_tables', 'ingest_socials_accounts', 'delete_created_pending_social_accounts', 'delete_old_pending_social_accounts', 'create_temp_aggregates_tables', 'create_aggregate_by_account_table', 'create_temp_aggregate_by_participant_table', 'populate_temp_aggregate_by_participant_table', 'create_main_aggregate_by_participant_table', 'populate_aggregate_by_account_table', 'ingest_aggregate_socials_by_account', 'ingest_aggregate_socials_by_participant', 'insert_fact_socials', 'insert_into_log_table', 'create_fact_social_latest', 'set_overall_status_ingested', } # test activities are called flow = Flow() flow.decider(schedule, {}) scheduled_activities = set() for (name, activity), _ in schedule.call_args_list: assert name in activity_names assert isinstance(activity, Activity) scheduled_activities.add(name) assert scheduled_activities == activity_names