Revision b3cb58c2 kamaki/cli/test.py

b/kamaki/cli/test.py
42 42
    Argument, ConfigArgument, RuntimeConfigArgument, FlagArgument,
43 43
    ValueArgument, IntArgument, DateArgument, VersionArgument,
44 44
    KeyValueArgument, ProgressBarArgument, ArgumentParseManager)
45
from kamaki.cli.utils.test import UtilsMethods
45 46

  
46 47

  
47 48
class History(TestCase):
......
279 280
        GL.assert_called_once_with('my logger name')
280 281

  
281 282

  
282
class UtilsMethods(TestCase):
283

  
284
    def assert_dicts_are_equal(self, d1, d2):
285
        for k, v in d1.items():
286
            self.assertTrue(k in d2)
287
            if isinstance(v, dict):
288
                self.assert_dicts_are_equal(v, d2[k])
289
            else:
290
                self.assertEqual(unicode(v), unicode(d2[k]))
291

  
292
    def test_guess_mime_type(self):
293
        from kamaki.cli.utils import guess_mime_type
294
        from mimetypes import guess_type
295
        for args in product(
296
                ('file.txt', 'file.png', 'file.zip', 'file.gz', None, 'X'),
297
                ('a type', None),
298
                ('an/encoding', None)):
299
            filename, ctype, cencoding = args
300
            if filename:
301
                exp_type, exp_enc = guess_type(filename)
302
                self.assertEqual(
303
                    guess_mime_type(*args),
304
                    (exp_type or ctype, exp_enc or cencoding))
305
            else:
306
                self.assertRaises(AssertionError, guess_mime_type, *args)
307

  
308
    def test_pretty_keys(self):
309
        from kamaki.cli.utils import pretty_keys
310
        for args, exp in (
311
                (
312
                    ({'k1': 'v1', 'k1_k2': 'v2'}, ),
313
                    {'k1': 'v1', 'k1 k2': 'v2'}),
314
                (
315
                    ({'k1': 'v1', 'k1_k2': 'v2'}, '1'),
316
                    {'k': 'v1', 'k _k2': 'v2'}),
317
                (
318
                    ({'k1_k2': 'v1', 'k1': {'k2': 'v2', 'k2_k3': 'v3'}}, ),
319
                    {'k1 k2': 'v1', 'k1': {'k2': 'v2', 'k2_k3': 'v3'}}),
320
                (
321
                    (
322
                        {'k1_k2': 'v1', 'k1': {'k2': 'v2', 'k2_k3': 'v3'}},
323
                        '_',
324
                        True),
325
                    {'k1 k2': 'v1', 'k1': {'k2': 'v2', 'k2 k3': 'v3'}}),
326
                (
327
                    (
328
                        {
329
                            'k1_k2': {'k_1': 'v_1', 'k_2': {'k_3': 'v_3'}},
330
                            'k1': {'k2': 'v2', 'k2_k3': 'v3'}},
331
                        '_',
332
                        True),
333
                    {
334
                        'k1 k2': {'k 1': 'v_1', 'k 2': {'k 3': 'v_3'}},
335
                        'k1': {'k2': 'v2', 'k2 k3': 'v3'}}),
336
                (
337
                    (
338
                        {
339
                            'k1_k2': {'k_1': 'v_1', 'k_2': {'k_3': 'v_3'}},
340
                            'k1': {'k2': 'v2', 'k2_k3': 'v3'}},
341
                        '1',
342
                        True),
343
                    {
344
                        'k _k2': {'k_': 'v_1', 'k_2': {'k_3': 'v_3'}},
345
                        'k': {'k2': 'v2', 'k2_k3': 'v3'}})
346
            ):
347
            initial = dict(args[0])
348
            self.assert_dicts_are_equal(pretty_keys(*args), exp)
349
            self.assert_dicts_are_equal(initial, args[0])
350

  
351

  
352 283
#  TestCase auxiliary methods
353 284

  
354 285
def runTestCase(cls, test_name, args=[], failure_collector=[]):

Also available in: Unified diff