import argparse import pytest from feed_ingestion.flows.insta_reels import exec # noqa:A004 from tests.test_exec_flow import FlowExecTestBase from tests.testing_utils import parametrize_by_dicts, raises_optionally class TestFlowExec(FlowExecTestBase): @pytest.fixture(autouse=True) def setup(self): self.flow_exec = exec.FlowExec() PARSER_ARGS = FlowExecTestBase.PARSER_ARGS | { 'report', 'months', 'skip', } ARGS_REQUIRED = FlowExecTestBase.ARGS_REQUIRED | { 'report'} AGRS_CHOICES = FlowExecTestBase.AGRS_CHOICES | { 'report': ['ALL', 'creations', 'views'], } ARGS_DEFAULTS = FlowExecTestBase.ARGS_DEFAULTS | { 'skip': 1, 'months': 1, } @parametrize_by_dicts( 'args, expected, raises', [ dict( case='one report', args=argparse.Namespace( report='views' ), expected=[ {'report': 'views'}, ] ), dict( case='ALL reports', args=argparse.Namespace( report='ALL' ), expected=[ {'report': 'creations'}, {'report': 'views'}, ] ), dict( case='None report', args=argparse.Namespace( report=None ), expected=[{}] ), dict( case='empty report', args=argparse.Namespace( report='' ), expected=[{}] ), ] ) def test_generate_contexts(self, args, expected, raises): self.flow_exec.args = args with raises_optionally(raises): contexts = self.flow_exec.generate_contexts() assert list(contexts) == expected