Beispiel #1
0
    def test_apply_mutations__handles_args_without_dunders(self):
        fake_json = {'no': 'underscores'}
        consumer = MockConsumer()
        a = AppContainer(None, consumers=[consumer])

        a.apply_consumer_mutations(fake_json, None)

        self.assertEqual(len(fake_json), 1)
        self.assertDictContainsSubset({'no': 'underscores'}, fake_json)
        self.assertEqual(len(consumer.vals), 0)
Beispiel #2
0
    def test_apply_mutations__catches_multiple_params(self):
        fake_json = {
            'test__foo': 'bar',
            'test__bim': 'bop'
        }
        consumer = MockConsumer()
        a = AppContainer(None, consumers=[consumer])

        a.apply_consumer_mutations(fake_json, None)

        self.assertEqual(2, len(consumer.vals))
        self.assertDictContainsSubset({'foo': 'bar', 'bim': 'bop'},
                                      consumer.vals)
Beispiel #3
0
    def test_apply_mutations__deletes_params_from_original_object(self):
        fake_json = {
            'test__foo': 'bar',
            'doesnt__match': 'baz'
        }
        consumer = MockConsumer()
        a = AppContainer(None, consumers=[consumer])

        a.apply_consumer_mutations(fake_json, None)

        self.assertEqual(len(fake_json), 1)
        self.assertDictContainsSubset({'doesnt__match': 'baz'}, fake_json)
        self.assertEqual(len(consumer.vals), 1)
        self.assertDictContainsSubset({'foo': 'bar'}, consumer.vals)
Beispiel #4
0
 def setUp(self):
     self.app_container = AppContainer(None)
     self.mock_request = MockRequest()
Beispiel #5
0
class AppContainerTests(unittest.TestCase):
    def setUp(self):
        self.app_container = AppContainer(None)
        self.mock_request = MockRequest()

    def test__default_handlers_exist(self):
        a = AppContainer(None)
        self.assertNotEqual(len(a._arg_providers), 0)

    def test_extract_params__returns_nothing_for_no_arg_func(self):
        def func():
            pass

        result = self.app_container._extract_params_from_request(
            functools.partial(func), self.mock_request)
        self.assertEqual(result, {})

    def test_extract_params__doesnt_return_self_for_method(self):
        class Klass(object):
            def meth(self):
                pass

        klass = Klass()

        func = functools.partial(klass.meth)
        result = self.app_container._extract_params_from_request(
            func, self.mock_request)
        self.assertEqual(result, {})

    def test_extract_params__doesnt_error_on_no_prefix_param(self):
        def func(something):
            pass

        result = self.app_container._extract_params_from_request(
            functools.partial(func), self.mock_request)
        self.assertEqual(result, {})

    def test_extract_parmas__doesnt_return_args_outside_of_prefix(self):
        def func(something__here):
            pass

        result = self.app_container._extract_params_from_request(
            functools.partial(func), self.mock_request)
        self.assertEqual(result, {})

    def test_extract_params__returns_get_params(self):
        def func(get__foo):
            pass

        self.mock_request.args = {'foo': 'bar'}
        result = self.app_container._extract_params_from_request(
            functools.partial(func), self.mock_request)
        self.assertEqual(result, {'get__foo': 'bar'})

    def test_extract_params__returns_post_params(self):
        def func(post__foo):
            pass

        self.mock_request.form = {'foo': 'bar'}
        result = self.app_container._extract_params_from_request(
            functools.partial(func), self.mock_request)
        self.assertEqual(result, {'post__foo': 'bar'})

    def test_extract_params__doesnt_pull_from_post_on_get(self):
        def func(post__foo):
            pass

        # Key here is that I'm populating args [where get data lives],
        # not form [where post data lives]
        self.mock_request.args = {'foo': 'bar'}
        result = self.app_container._extract_params_from_request(
            functools.partial(func), self.mock_request)
        self.assertEqual(result, {'post__foo': None})

    def test_extract_params__populates_with_default_kwargs(self):
        def func(post__foo=None):
            pass

        self.mock_request.form = {'foo': 'bar'}
        result = self.app_container._extract_params_from_request(
            functools.partial(func), self.mock_request)
        self.assertEqual(result, {'post__foo': 'bar'})

    def test_apply_mutations__catches_multiple_params(self):
        fake_json = {
            'test__foo': 'bar',
            'test__bim': 'bop'
        }
        consumer = MockConsumer()
        a = AppContainer(None, consumers=[consumer])

        a.apply_consumer_mutations(fake_json, None)

        self.assertEqual(2, len(consumer.vals))
        self.assertDictContainsSubset({'foo': 'bar', 'bim': 'bop'},
                                      consumer.vals)

    def test_apply_mutations__deletes_params_from_original_object(self):
        fake_json = {
            'test__foo': 'bar',
            'doesnt__match': 'baz'
        }
        consumer = MockConsumer()
        a = AppContainer(None, consumers=[consumer])

        a.apply_consumer_mutations(fake_json, None)

        self.assertEqual(len(fake_json), 1)
        self.assertDictContainsSubset({'doesnt__match': 'baz'}, fake_json)
        self.assertEqual(len(consumer.vals), 1)
        self.assertDictContainsSubset({'foo': 'bar'}, consumer.vals)

    def test_apply_mutations__handles_args_without_dunders(self):
        fake_json = {'no': 'underscores'}
        consumer = MockConsumer()
        a = AppContainer(None, consumers=[consumer])

        a.apply_consumer_mutations(fake_json, None)

        self.assertEqual(len(fake_json), 1)
        self.assertDictContainsSubset({'no': 'underscores'}, fake_json)
        self.assertEqual(len(consumer.vals), 0)