"""Unit tests for the trending tracks workflow activities.""" from garcon.activity import Activity import pytest from activity_detector.flows.trending_tracks.flow import Flow class TestFlow(object): """Tests for Flow.""" @pytest.fixture def flow(self): """Create flow.""" return Flow() @pytest.fixture def run_flow(self, flow, mock_schedule, mock_context): """Run flow.""" flow.decider(mock_schedule, mock_context) @pytest.fixture def run_flow_with_country_groups( self, flow, mock_schedule, mock_context_with_country_groups ): """Run flow with label ids.""" flow.decider(mock_schedule, mock_context_with_country_groups) def test_decider_schedules_get_date_range( self, mock_schedule, run_flow): """Test decider schedules get_date_range.""" (name, activity), _ = mock_schedule.call_args_list[0] assert name == 'get_date_range' assert isinstance(activity, Activity) assert activity.runner.tasks[0].__name__ == \ 'get_date_range' def test_decider_schedules_fetch_last_available_date_per_store( self, mock_schedule, run_flow): """Test decider schedules fetch_last_available_date_per_store.""" (name, activity), _ = mock_schedule.call_args_list[1] assert name == 'fetch_last_available_date_per_store' assert isinstance(activity, Activity) assert activity.runner.tasks[0].__name__ == \ 'fetch_last_available_date_per_store' def test_decider_schedules_fetch_country_groups( self, mock_schedule, run_flow): """Test decider schedules fetch_country_groups.""" (name, activity), _ = mock_schedule.call_args_list[2] assert name == 'fetch_country_groups' assert isinstance(activity, Activity) assert activity.runner.tasks[0].__name__ == \ 'fetch_country_groups' def test_decider_schedules_fetch_trending_tracks( self, mock_schedule, run_flow): """Test decider schedules activity fetch_trending_tracks.""" (name, activity), _ = mock_schedule.call_args_list[3] assert name == 'fetch_trending_tracks' assert isinstance(activity, Activity) assert activity.runner.tasks[0].__name__ == 'fetch_trending_tracks' def test_workflow_id_contains_view_name(self, flow, mock_context): """Test workflow_id contains view name.""" workflow_id = flow.workflow_id(mock_context) assert workflow_id == '{flow_name}-{date}'.format( flow_name=flow.name, date=mock_context['date'])