def test_query_string_parser_expands_uri_array(self): parser = parse.QueryString() parser.parse( 'field[spam]=foo&field[eggs][42]=bar&field[ham][spam][eggs]=baz') self.assertEqual( parser, { 'field[spam]': 'foo', 'field[eggs][42]': 'bar', 'field[ham][spam][eggs]': 'baz' }) parser.expand_array() self.assertEqual( parser, { 'field': { 'spam': 'foo', 'eggs': { '42': 'bar' }, 'ham': { 'spam': { 'eggs': 'baz' } } } })
def test_query_string_parser_expands_dots(self): parser = parse.QueryString() parser.parse( 'field.spam=foo&field.eggs.42=bar&field.ham.spam.eggs=baz') self.assertEqual( parser, { 'field.spam': 'foo', 'field.eggs.42': 'bar', 'field.ham.spam.eggs': 'baz' }) parser.expand_dots() self.assertEqual( parser, { 'field': { 'spam': 'foo', 'eggs': { '42': 'bar' }, 'ham': { 'spam': { 'eggs': 'baz' } } } })
def test_expand_dots_returns_the_parser_instance(self): parser = parse.QueryString() parser.parse( 'field.spam=foo&field.eggs.42=bar&field.ham.spam.eggs=baz') parsed = parser.expand_dots() self.assertIs(parser, parsed) self.assertEqual( parsed, { 'field': { 'spam': 'foo', 'eggs': { '42': 'bar' }, 'ham': { 'spam': { 'eggs': 'baz' } } } })
def test_expand_array_returns_the_parser_instance(self): parser = parse.QueryString() parser.parse( 'field[spam]=foo&field[eggs][42]=bar&field[ham][spam][eggs]=baz') parsed = parser.expand_array() self.assertIs(parser, parsed) self.assertEqual( parsed, { 'field': { 'spam': 'foo', 'eggs': { '42': 'bar' }, 'ham': { 'spam': { 'eggs': 'baz' } } } })
def test_query_string_parser_known_values(self): for original, expected in self.known_values: parser = parse.QueryString() parser.parse(original) self.assertEqual(parser, expected)
def test_query_string_parser_dot_expansion_known_values(self): for parsed, expanded in self.known_values: parser = parse.QueryString(parsed) parser.expand_dots() self.assertEqual(parser, expanded)
def test_parse_method_returns_the_parser_instance(self): parser = parse.QueryString() parsed = parser.parse('foo=bar&foo=ham&foo=baz') self.assertIs(parser, parsed) self.assertEqual(parsed, {'foo': ['bar', 'ham', 'baz']})
def test_query_string_parser_parses_params_with_duplicate_keys(self): parser = parse.QueryString() parser.parse('foo=bar&foo=ham&foo=baz') self.assertEqual(parser['foo'], ['bar', 'ham', 'baz'])
def test_query_string_parser_parses_raw_querystring(self): parser = parse.QueryString() parser.parse('field1=foo&field2=bar&field3=baz') self.assertEqual(parser['field1'], 'foo') self.assertEqual(parser['field2'], 'bar') self.assertEqual(parser['field3'], 'baz')
def test_query_string_parser_behaves_like_dict(self): parser = parse.QueryString() parser['foo'] = 'bar' self.assertEqual(parser['foo'], 'bar')
def test_query_string_parser_is_dict_instance(self): parser = parse.QueryString() self.assertTrue(isinstance(parser, dict))