From 81dc9084b2d5f6e0e553620e1d19786056c0184c Mon Sep 17 00:00:00 2001 From: Dmitry Dygalo Date: Sun, 13 Mar 2016 11:08:27 +0100 Subject: [PATCH] Added unit tests for structures module --- tests/test_structures.py | 79 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 tests/test_structures.py diff --git a/tests/test_structures.py b/tests/test_structures.py new file mode 100644 index 00000000..1c332bb2 --- /dev/null +++ b/tests/test_structures.py @@ -0,0 +1,79 @@ +# coding: utf-8 +import pytest + +from requests.structures import CaseInsensitiveDict, LookupDict + + +class TestCaseInsensitiveDict: + + @pytest.fixture(autouse=True) + def setup(self): + """ + CaseInsensitiveDict instance with "Accept" header. + """ + self.case_insensitive_dict = CaseInsensitiveDict() + self.case_insensitive_dict['Accept'] = 'application/json' + + def test_list(self): + assert list(self.case_insensitive_dict) == ['Accept'] + + possible_keys = pytest.mark.parametrize('key', ('accept', 'ACCEPT', 'aCcEpT', 'Accept')) + + @possible_keys + def test_getitem(self, key): + assert self.case_insensitive_dict[key] == 'application/json' + + @possible_keys + def test_delitem(self, key): + del self.case_insensitive_dict[key] + assert key not in self.case_insensitive_dict + + def test_lower_items(self): + assert list(self.case_insensitive_dict.lower_items()) == [('accept', 'application/json')] + + def test_repr(self): + assert repr(self.case_insensitive_dict) == "{'Accept': 'application/json'}" + + def test_copy(self): + copy = self.case_insensitive_dict.copy() + assert copy is not self.case_insensitive_dict + assert copy == self.case_insensitive_dict + + @pytest.mark.parametrize( + 'other, result', ( + ({'AccePT': 'application/json'}, True), + ({}, False), + (None, False) + ) + ) + def test_instance_equality(self, other, result): + assert (self.case_insensitive_dict == other) is result + + +class TestLookupDict: + + @pytest.fixture(autouse=True) + def setup(self): + """ + LookupDict instance with "bad_gateway" attribute. + """ + self.lookup_dict = LookupDict('test') + self.lookup_dict.bad_gateway = 502 + + def test_repr(self): + assert repr(self.lookup_dict) == "" + + get_item_parameters = pytest.mark.parametrize( + 'key, value', ( + ('bad_gateway', 502), + ('not_a_key', None) + ) + ) + + @get_item_parameters + def test_getitem(self, key, value): + assert self.lookup_dict[key] == value + + @get_item_parameters + def test_get(self, key, value): + assert self.lookup_dict.get(key) == value