Esempio n. 1
0
    def test_init_params(self):
        """Parameters can be instantiated with another instance of Parameters"""
        params_1 = insightiq_api.Parameters({'one' : 1})
        params = insightiq_api.Parameters(params_1)

        expected = [['one', 1]]
        actual = params._data

        self.assertEqual(expected, actual)
Esempio n. 2
0
    def test_items(self):
        """Parameters supports the `.items()` method"""
        params = insightiq_api.Parameters({'one': 1}, {'one': 'foo'})
        value = list(params.items()) # using list() b/c newer versions of Python return a generator
        expected = [('one', 1), ('one', 'foo')]

        self.assertEqual(value, expected)
Esempio n. 3
0
    def test_pop(self):
        """Parameters support the `.pop()` method"""
        params = insightiq_api.Parameters(one=1)
        value = params.pop('one')
        expected = 1

        self.assertEqual(value, expected)
Esempio n. 4
0
    def test_len(self):
        """Parameters returns the correct answer for ``len()``"""
        params = insightiq_api.Parameters({'one' : 'foo'}, one=1, two=2)
        value = len(params)
        expected = 3

        self.assertEqual(value, expected)
Esempio n. 5
0
    def test_get_all(self):
        """Parameters - ``.get_all()`` returns all instances of duplicate parameters"""
        params = insightiq_api.Parameters({'one': 1}, {'one': 'foo'}, {'two': 'bar'})
        value = params.get_all('one')
        expected = [['one', 1], ['one', 'foo']]

        self.assertEqual(value, expected)
Esempio n. 6
0
    def test_keys(self):
        """Parameters supports the `.keys()` method"""
        params = insightiq_api.Parameters(one=1)
        value = list(params.keys())
        expected = ['one']

        self.assertEqual(value, expected)
Esempio n. 7
0
    def test_NAME(self):
        """Parameters - the NAME property is 0"""
        params = insightiq_api.Parameters()

        value = params.NAME
        expected = 0

        self.assertEqual(value, expected)
Esempio n. 8
0
    def test_VALUE(self):
        """Parameters - the VALUE property is 1"""
        params = insightiq_api.Parameters()

        value = params.VALUE
        expected = 1

        self.assertEqual(value, expected)
Esempio n. 9
0
    def test_init_params_complex_list(self):
        """Parameters supports list of multiple valid types"""
        params = insightiq_api.Parameters([{'one' : 1}, ('two', 2)])

        value = params._data
        expected = [['one', 1], ['two', 2]]

        self.assertEqual(value, expected)
Esempio n. 10
0
    def test_init_params_list(self):
        """Parameters can be instantiated with a list of key/value pairs"""
        params = insightiq_api.Parameters([('one', 1), ('two', 2)])

        value = params._data
        expected = [['one', 1], ['two', 2]]

        self.assertEqual(value, expected)
Esempio n. 11
0
    def test_init_dict(self):
        """Parameters can be instantiated with a normal dictionary"""
        params = insightiq_api.Parameters({'one' : 1})

        expected = [['one', 1]]
        actual = params._data

        self.assertEqual(expected, actual)
Esempio n. 12
0
    def test_init_keywords(self):
        """Parameters can be instantiated with keyword arguments"""
        params = insightiq_api.Parameters(one=1)

        expected = [['one', 1]]
        actual = params._data

        self.assertEqual(expected, actual)
Esempio n. 13
0
    def test_setattr_modifies(self):
        """Parameters supports changing param values via the dictionary syntax"""
        params = insightiq_api.Parameters(one=1)
        params['one'] = 2

        value = params.get('one')
        expected = 2

        self.assertEqual(value, expected)
Esempio n. 14
0
    def test_getitem(self):
        """Parameters supports dictionary syntax for retrieving an attribute"""
        params = insightiq_api.Parameters(one=1)
        try:
            value = params['one']
        except TypeError as doh:
            value = '%s' % doh

        self.assertEqual(value, 1)
Esempio n. 15
0
    def test_init_odict(self):
        """Parameters can be instantiated with a `collections.OrderedDict`"""
        odict = collections.OrderedDict(one=1)
        params = insightiq_api.Parameters(odict)

        expected = [['one', 1]]
        actual = params._data

        self.assertEqual(expected, actual)
Esempio n. 16
0
    def test_modify_parameter(self):
        """Parameters can change a specific instance of parameters"""
        params = insightiq_api.Parameters({'one': 1}, {'one': 3})
        params.modify_parameter(name='one', new_value=2, occurrence=1)

        value = params.get_all('one')
        expected = [['one', 1], ['one', 2]]

        self.assertEqual(value, expected)
Esempio n. 17
0
    def test_add(self):
        """Parameters - ``add()`` creats duplicate entries for the same parameter name"""
        params = insightiq_api.Parameters(one=1)
        params.add(name='one', value='foo')

        value = params._data
        expected = [['one', 1], ['one', 'foo']]

        self.assertEqual(value, expected)
Esempio n. 18
0
    def test_iterative_addition(self):
        """Parameters - adding duplicate params works in a for-loop"""
        params = insightiq_api.Parameters()
        for value in range(3):
            params.add('guid', value)

        value = params.get_all('guid')
        expected = [['guid', 0], ['guid', 1], ['guid', 2]]

        self.assertEqual(value, expected)
Esempio n. 19
0
    def test_building_query_string(self):
        """Parameters - iterating the object to build an HTTP query string is simple"""
        params = insightiq_api.Parameters({'one': 1}, {'one': 'foo'}, {'two': 'bar'})
        tmp = []
        for param, value in params.items():
            tmp.append('%s=%s' % (param, value))
        query = '&'.join(tmp)
        expected = 'one=1&one=foo&two=bar'

        self.assertEqual(query, expected)
Esempio n. 20
0
    def test_delete_parameter(self):
        """Parameters can delete a specific instance of a parameter"""
        params = insightiq_api.Parameters({'one': 1}, {'one': 2}, {'one': 3})
        # order of the init args == order of the occurrence
        params.delete_parameter(name='one', occurrence=1) # base zero, so the 2nd

        value = params.get_all('one')
        expected = [['one', 1], ['one', 3]]

        self.assertEqual(value, expected)
Esempio n. 21
0
    def test_setattr(self):
        """Parameters support dictionary syntax for setting an attribute"""
        params = insightiq_api.Parameters()
        try:
            params['one'] = 1
        except TypeError as doh:
            value = '%s' % doh
        else:
            value = params._data
        expected = [['one', 1]]

        self.assertEqual(value, expected)
Esempio n. 22
0
    def test_modify_occurrence(self):
        """Parameters - changing the value of a specific param works"""
        params = insightiq_api.Parameters({'one': 1}, {'one': 'foo'}, {'two': 2})
        ones = params.get_all('one')
        for index, pair in enumerate(ones):
            if pair[params.VALUE] == 'foo':
                # deleting a specific param would just call the ``.delete_parameter()`` method instead
                params.modify_parameter(name=pair[params.NAME], new_value='bar', occurrence=index)

        value = params._data
        expected = [['one', 1], ['one', 'bar'], ['two', 2]]

        self.assertEqual(value, expected)
Esempio n. 23
0
 def test_modify_parameter_no_occurrence(self):
     """Parameters raises KeyError when trying to modify an occurrence that does not exist"""
     params = insightiq_api.Parameters(one=1)
     with self.assertRaises(KeyError):
         params.modify_parameter(name='one', new_value=2, occurrence=200)
Esempio n. 24
0
 def test_delete_parameter_no_occurrence(self):
     """Parameters raises KeyError when trying to delete an occurrence that does not exist"""
     params = insightiq_api.Parameters(one=1)
     with self.assertRaises(KeyError):
         params.delete_parameter(name='one', occurrence=200)
Esempio n. 25
0
 def test_init_params_list_bad(self):
     """Parameters cannot be instantiated with a random list"""
     with self.assertRaises(ValueError):
         insightiq_api.Parameters(['one', 1, 'two', 2])
Esempio n. 26
0
 def test_VALUE_readonly(self):
     """Parameters - the VALUE property is read only"""
     params = insightiq_api.Parameters()
     with self.assertRaises(AttributeError):
         params.VALUE = 'foo'
Esempio n. 27
0
 def test_init_params_tuple_too_long(self):
     """Parameters wont accept a tuple/list when it's length  is not two"""
     with self.assertRaises(ValueError):
         insightiq_api.Parameters([(2,3,4,5)])
Esempio n. 28
0
 def test_getitem_keyerror(self):
     """Parameters - asking for a non-existant parameter raises KeyError"""
     params = insightiq_api.Parameters()
     with self.assertRaises(KeyError):
         params['doh']
Esempio n. 29
0
 def test_delitem_no_param(self):
     """Parameters raises KeyError when trying to delete a param that doesn't exist"""
     params = insightiq_api.Parameters()
     with self.assertRaises(KeyError):
         del params['foo']