示例#1
0
    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)
示例#2
0
    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)
示例#3
0
    def test_return_region_instanciation(self):
        return_region = ReturnRegion(
            type_='string',
            content='%return string',
        )

        self.assertEqual(str, return_region.type_)
示例#4
0
 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,
         )
示例#5
0
    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)
示例#6
0
    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)
示例#7
0
    def test_return_region_representation(self):
        return_region = ReturnRegion(
            type_='string',
            content='%return string',
        )

        self.assertEqual(
            ("ReturnRegion(line_count=1)"),
            repr(return_region),
        )
示例#8
0
    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,
        )
示例#9
0
    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)
示例#10
0
    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)
示例#11
0
    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,
        )
示例#12
0
    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,
        )
示例#13
0
    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,
        )
示例#14
0
 def test_return_region_invalid_instanciation(self):
     with self.assertRaises(ValueError):
         ReturnRegion(
             type_='unknown',
             content='%return string',
         )