def setUp(self): self.manager = ActionContextManager(['action_1', 'action_2', 'action_3'])
class TestActionContextManager(TestCase): def setUp(self): self.manager = ActionContextManager(['action_1', 'action_2', 'action_3']) def test_init(self): self.assertEqual( self.manager.action_context_layers, { 'action_1': [], 'action_2': [], 'action_3': [], } ) def test_create_context_layer(self): self.manager.create_context_layer('foo') self.manager.create_context_layer('bar') self.assertEqual( self.manager.action_context_layers, { 'action_1': [('foo', deque()), ('bar', deque())], 'action_2': [('foo', deque()), ('bar', deque())], 'action_3': [('foo', deque()), ('bar', deque())] } ) def test_add_action(self): self.manager.create_context_layer('layer_1') self.manager.add_action('action_1', foo=1, bar=2) self.manager.create_context_layer('layer_2') self.manager.add_action('action_2', FOO=1) self.manager.add_action('action_2', BAR=2) self.assertEqual( self.manager.action_context_layers, { 'action_1': [ ( 'layer_1', deque([{'foo': 1, 'bar': 2}]) ), ( 'layer_2', deque() ) ], 'action_2': [ ( 'layer_1', deque() ), ( 'layer_2', deque([{'BAR': 2}, {'FOO': 1}]) ) ], 'action_3': [('layer_1', deque()), ('layer_2', deque())] } ) def test_consume_actions(self): self.manager.create_context_layer('test_1') self.manager.add_action('action_3', a='a') self.manager.create_context_layer('test_2') self.manager.add_action('action_3', b='b') self.manager.add_action('action_3', c='c') self.assertEqual( list(self.manager.consume_actions('action_1')), [] ) self.assertEqual( list(self.manager.consume_actions('action_3')), [('test_2', {'b': 'b'}), ('test_2', {'c': 'c'})] ) self.assertEqual( self.manager.action_context_layers, { 'action_1': [('test_1', deque())], 'action_2': [('test_1', deque()), ('test_2', deque())], 'action_3': [ ( 'test_1', deque([{'a': 'a'}]) ), ] } ) def test_consume_all_actions(self): self.manager.create_context_layer('A') self.manager.add_action('action_1', one=1, two=2) self.manager.add_action('action_1', three=3) self.manager.create_context_layer('B') self.manager.add_action('action_1', four=4) self.manager.create_context_layer('C') self.manager.add_action('action_1', five=5) self.assertEqual( list(self.manager.consume_all_actions('action_1')), [ ('C', {'five': 5}), ('B', {'four': 4}), ('A', {'one': 1, 'two': 2}), ('A', {'three': 3}) ] ) self.assertEqual( self.manager.action_context_layers, { 'action_1': [], 'action_2': [('A', deque()), ('B', deque()), ('C', deque())], 'action_3': [('A', deque()), ('B', deque()), ('C', deque())] } )