Esempio n. 1
0
    def setup(self):
        self.key_parser = Mock()
        self.key_parser.parse = lambda raw_key: (raw_key, [])

        self.config = Mock()
        self.function = Mock()
        self.function.return_value = RETURN_VALUE
        self.config.items = {
            KEY: self.function
        }

        self.data_source = DataSource(self.key_parser, self.config)
Esempio n. 2
0
class TestDataSource():
    def setup(self):
        self.key_parser = Mock()
        self.key_parser.parse = lambda raw_key: (raw_key, [])

        self.config = Mock()
        self.function = Mock()
        self.function.return_value = RETURN_VALUE
        self.config.items = {
            KEY: self.function
        }

        self.data_source = DataSource(self.key_parser, self.config)

    def test_calls_function(self):
        value = self.data_source.process(KEY)
        assert_equal(RETURN_VALUE, value)
        self.function.assert_any_call()

    def test_passes_arguments_to_function(self):
        argument = 1
        self.key_parser.parse = lambda raw_key: (raw_key, [argument])

        value = self.data_source.process(KEY)
        assert_equal(RETURN_VALUE, value)
        self.function.assert_any_call(argument)

    def test_returns_default_value_for_unknown_key(self):
        value = self.data_source.process('unknown_key')
        assert_equal(self.data_source.DEFAULT_VALUE, value)

    def test_calling_function_that_does_not_need_arguments(self):
        self.config.items[KEY] = lambda x: x
        value = self.data_source.process(KEY)
        assert_equal(self.data_source.DEFAULT_VALUE, value)

    def test_calling_function_with_wrong_arguments(self):
        function = Mock()
        function.side_effect = WrongArgumentError
        self.config.items[KEY] = function
        value = self.data_source.process(KEY)
        assert_equal(self.data_source.DEFAULT_VALUE, value)

    def test_calling_function_that_raises_unexpected_exception(self):
        function = Mock()
        function.side_effect = Exception
        self.config.items[KEY] = function
        value = self.data_source.process(KEY)
        assert_equal(self.data_source.DEFAULT_VALUE, value)