Revision 8d427cb9 kamaki/cli/argument/test.py

b/kamaki/cli/argument/test.py
41 41
from kamaki.cli.config import Config
42 42

  
43 43

  
44
def assert_dicts_are_equal(test_case, d1, d2):
45
    for k, v in d1.items():
46
        test_case.assertTrue(k in d2)
47
        if isinstance(v, dict):
48
            test_case.assert_dicts_are_equal(v, d2[k])
49
        else:
50
            test_case.assertEqual(unicode(v), unicode(d2[k]))
51

  
52

  
44 53
cnf_path = 'kamaki.cli.config.Config'
45 54

  
46 55

  
......
272 281
            self.assertRaises(err, da.format_date, datestr)
273 282

  
274 283

  
284
class VersionArgument(TestCase):
285

  
286
    def test_value(self):
287
        va = argument.VersionArgument(parsed_name='--version')
288
        self.assertTrue(va, argument.VersionArgument)
289
        va.value = 'some value'
290
        self.assertEqual(va.value, 'some value')
291

  
292

  
293
class KeyValueArgument(TestCase):
294

  
295
    @patch('kamaki.cli.argument.Argument.__init__')
296
    def test___init__(self, init):
297
        help, pname, default = 'help', 'pname', 'default'
298
        kva = argument.KeyValueArgument(help, pname, default)
299
        self.assertTrue(isinstance(kva, argument.KeyValueArgument))
300
        self.assertEqual(init.mock_calls[-1], call(-1, help, pname, default))
301

  
302
    def test_value(self):
303
        kva = argument.KeyValueArgument(parsed_name='--keyval')
304
        self.assertEqual(kva.value, None)
305
        for kvpairs in (
306
                'strval', 'key=val', 2.8, 42, None,
307
                ('key', 'val'), ('key val'), ['=val', 'key=val'],
308
                ['key1=val1', 'key2 val2'], ('key1 = val1', )):
309
            self.assertRaises(errors.CLIError, kva.value, kvpairs)
310
        for kvpairs, exp in (
311
                (('key=val', ), {'key': 'val'}),
312
                (['key1=val1', 'key2=val2'], {'key1': 'val1', 'key2': 'val2'}),
313
                (
314
                    ('k1=v1 v2', 'k3=', 'k 4=v4'),
315
                    {'k1': 'v1 v2', 'k3': '', 'k 4': 'v4'}),
316
                (('k=v1', 'k=v2', 'k=v3'), {'k': 'v3'})
317
            ):
318
            kva.value = kvpairs
319
            assert_dicts_are_equal(self, kva.value, exp)
320

  
321

  
275 322
if __name__ == '__main__':
276 323
    from sys import argv
277 324
    from kamaki.cli.test import runTestCase
......
282 329
    runTestCase(FlagArgument, 'ValueArgument', argv[1:])
283 330
    runTestCase(IntArgument, 'IntArgument', argv[1:])
284 331
    runTestCase(DateArgument, 'DateArgument', argv[1:])
332
    runTestCase(VersionArgument, 'VersionArgument', argv[1:])
333
    runTestCase(KeyValueArgument, 'KeyValueArgument', argv[1:])

Also available in: Unified diff