def test_get_spec_uuid(self): tester = self missing_name = 'missing_name' unique_name = 'unique_name' ambiguous_name = 'ambiguous_name' bundle_counts = { missing_name: 0, unique_name: 1, ambiguous_name: 2, } test_uuids = ['test_uuid_0', 'test_uuid_1', 'test_uuid_2'] test_uuid = test_uuids[0] class MockBundleModel(object): def search_bundles(self, **kwargs): tester.assertEqual(set(kwargs), set(['name'])) tester.assertIn(kwargs['name'], bundle_counts) count = bundle_counts[kwargs['name']] return [ type('MockBundle', (object,), {'uuid': test_uuids[i]}) for i in range(count) ] model = MockBundleModel() # Test that get_spec_uuid is idempotent on generated uuids. uuid = spec_util.generate_uuid() self.assertEqual(uuid, canonicalize.get_spec_uuid(model, uuid)) # Test that get_spec_uuid returns the uuid of a uniquely named bundle. self.assertEqual(test_uuid, canonicalize.get_spec_uuid(model, unique_name)) # Test that get_spec_uuid raises UsageErrors on missing or ambigious names. self.assertRaises( UsageError, lambda: canonicalize.get_spec_uuid(model, missing_name), ) self.assertRaises( UsageError, lambda: canonicalize.get_spec_uuid(model, ambiguous_name), ) # Test that get_spec_uuid raises UsageError on specs that can be neither a # name or a uuid. self.assertRaises( UsageError, lambda: canonicalize.get_spec_uuid(model, 'names have no exclamations!'), )
def get_spec_uuid(self, bundle_spec): return canonicalize.get_spec_uuid(self.model, bundle_spec)