def test_return_region_as_string_dict_type(self): return_region = ReturnRegion( type_='dict', content='%return dict', ) render_context = MagicMock() result = return_region.render(context=render_context) render_context.render_return.assert_called_once_with(type_=dict) self.assertEqual(render_context.render_return.return_value, result)
def test_return_region_instanciation(self): return_region = ReturnRegion( type_='string', content='%return string', ) self.assertEqual(str, return_region.type_)
def test_script_instanciation_with_too_many_return_statements(self): name = 'foo' regions = [ ReturnRegion( type_='string', content='%return string', ), ReturnRegion( type_='integer', content='%return integer', ), ] with self.assertRaises(ValueError): Script( name=name, regions=regions, )
def test_return_region_line_count(self): return_region = ReturnRegion( type_='string', content='%return string', ) self.assertEqual(1, return_region.line_count) self.assertEqual(1, return_region.real_line_count)
def test_return_region_equality(self): return_region_a = ReturnRegion( type_='string', content='%return string', ) return_region_b = ReturnRegion( type_='string', content='%return string', ) return_region_c = ReturnRegion( type_='integer', content='%return integer', ) self.assertIsNot(return_region_a, return_region_b) self.assertTrue(return_region_a == return_region_b) self.assertFalse(return_region_a == return_region_c) self.assertFalse(return_region_a == 42)
def test_return_region_representation(self): return_region = ReturnRegion( type_='string', content='%return string', ) self.assertEqual( ("ReturnRegion(line_count=1)"), repr(return_region), )
def test_extract_regions_return(self): contents = [ '%include "foo"', '%return integer', ] content = '\n'.join(contents) script = Script( name='foo', regions=[ ReturnRegion( type_='string', content='%return string', ), ], ) get_script_by_name = MagicMock(return_value=script) regions = self.parser.parse_regions( content=content, current_path=".", get_script_by_name=get_script_by_name, ) self.maxDiff = None self.assertEqual( [ ScriptRegion( script=script, content='%include "foo"', ), ReturnRegion( type_='integer', content=contents[1], ), ], regions, )
def test_script_instanciation_with_pragma_once(self): name = 'foo' regions = [ PragmaRegion( value='once', content='%pragma once', ), ReturnRegion( type_='integer', content='%return integer', ), ] script = Script( name=name, regions=regions, ) self.assertFalse(script.multiple_inclusion)
def test_script_instanciation_with_return_statement(self): name = 'foo' regions = [ ArgumentRegion( name="arg1", type_='string', index=1, content='%arg arg1', ), ReturnRegion( type_='integer', content='%return integer', ), ] script = Script( name=name, regions=regions, ) self.assertIs(int, script.return_type)
def test_script_call_return_as_boolean(self, _): name = 'foo' regions = [ ReturnRegion( type_='boolean', content='%return boolean', ), ] script = Script( name=name, regions=regions, ) script._redis_script = MagicMock(return_value=5) result = script.get_runner(client=None)() self.assertEqual(True, result) script._redis_script.assert_called_once_with( keys=[], args=[], client=None, )
def test_script_call_return_as_dict(self, _): name = 'foo' regions = [ ReturnRegion( type_='list', content='%return list', ), ] script = Script( name=name, regions=regions, ) value = {'a': 1, 'b': 3.5, 'c': None, 'd': ['a', 2], 'e': 's'} script._redis_script = MagicMock(return_value=jdumps(value)) result = script.get_runner(client=None)() self.assertEqual(value, result) script._redis_script.assert_called_once_with( keys=[], args=[], client=None, )
def test_script_call_in_pipeline(self, redis_script): name = 'foo' regions = [ ReturnRegion( type_='string', content='%return string', ), ] script = Script( name=name, regions=regions, ) client = MagicMock(spec=BasePipeline) redis_script.return_value = MagicMock(return_value=42) result = script.get_runner(client=client)() self.assertTrue(hasattr(result, '__call__')) self.assertEqual("42", result(42)) redis_script.return_value.assert_called_once_with( keys=[], args=[], client=client, )
def test_return_region_invalid_instanciation(self): with self.assertRaises(ValueError): ReturnRegion( type_='unknown', content='%return string', )