def test_input_value_is_converted_to_a_list(self): """Verify that the input value is converted to a list.""" test_input = [ ([1, 2, 3], [1, 2, 3]), ((1, 2, 3), [1, 2, 3]), ({ 1: 'a', 2: 'b', 3: 'c' }, [(1, 'a'), (2, 'b'), (3, 'c')]), ('abcdefgh', ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']), (1, [1]), (2.0, [2.0]), (references.Reference('4d47faf2-fc79-432f-ad7b-94047c303a22', 'issues', 'master'), [ references.Reference('4d47faf2-fc79-432f-ad7b-94047c303a22', 'issues', 'master') ]), ] for value, list_value in test_input: list_property = properties.ListProperty('property name', value) self.assertTrue(isinstance(list_property.value, list)) self.assertEquals(type(list_property.value), type([])) self.assertEquals(list_property.value, list_value)
def test_json_representation_is_correct(self): """Verify that the JSON repr of reference properties is correct.""" prop = properties.ReferenceProperty( 'name', references.Reference('5f2c9a1d-1113-49f1-9d1d-29aaa4a520b0', None, None)) string = json.dumps(prop, cls=JSONObjectEncoder) data = json.loads(string) self.assertTrue(isinstance(data, dict)) self.assertEqual(data['uuid'], '5f2c9a1d-1113-49f1-9d1d-29aaa4a520b0') self.assertTrue('service' not in data) self.assertTrue('ref' not in data) prop = properties.ReferenceProperty( 'name', references.Reference('5f2c9a1d-1113-49f1-9d1d-29aaa4a520b0', 'issues', None)) string = json.dumps(prop, cls=JSONObjectEncoder) data = json.loads(string) self.assertTrue(isinstance(data, dict)) self.assertEqual(data['uuid'], '5f2c9a1d-1113-49f1-9d1d-29aaa4a520b0') self.assertEqual(data['service'], 'issues') self.assertTrue('ref' not in data) prop = properties.ReferenceProperty( 'name', references.Reference('5f2c9a1d-1113-49f1-9d1d-29aaa4a520b0', 'issues', 'master')) string = json.dumps(prop, cls=JSONObjectEncoder) data = json.loads(string) self.assertTrue(isinstance(data, dict)) self.assertEqual(data['uuid'], '5f2c9a1d-1113-49f1-9d1d-29aaa4a520b0') self.assertEqual(data['service'], 'issues') self.assertEqual(data['ref'], 'master')
def test_yaml_representation_has_all_expected_fields(self): """Verify that the YAML representation of reference props is ok.""" prop = properties.ReferenceProperty( 'name', references.Reference('5f2c9a1d-1113-49f1-9d1d-29aaa4a520b0', None, None)) string = yaml.dump(prop) data = yaml.load(string) self.assertTrue(isinstance(data, dict)) self.assertEqual(data['uuid'], '5f2c9a1d-1113-49f1-9d1d-29aaa4a520b0') self.assertTrue('service' not in data) self.assertTrue('ref' not in data) prop = properties.ReferenceProperty( 'name', references.Reference('5f2c9a1d-1113-49f1-9d1d-29aaa4a520b0', 'issues', None)) string = yaml.dump(prop) data = yaml.load(string) self.assertTrue(isinstance(data, dict)) self.assertEqual(data['uuid'], '5f2c9a1d-1113-49f1-9d1d-29aaa4a520b0') self.assertEqual(data['service'], 'issues') self.assertTrue('ref' not in data) prop = properties.ReferenceProperty( 'name', references.Reference('5f2c9a1d-1113-49f1-9d1d-29aaa4a520b0', 'issues', 'master')) string = yaml.dump(prop) data = yaml.load(string) self.assertTrue(isinstance(data, dict)) self.assertEqual(data['uuid'], '5f2c9a1d-1113-49f1-9d1d-29aaa4a520b0') self.assertEqual(data['service'], 'issues') self.assertEqual(data['ref'], 'master')
def test_constructor_sets_uuid_service_and_ref(self): """Verify that the constructor sets all members correctly.""" for uuid, service, ref in self.references: object_reference = references.Reference(uuid, service, ref) self.assertEqual(object_reference.uuid, uuid) self.assertEqual(object_reference.service, service) self.assertEqual(object_reference.ref, ref)
def class_object_references_in_tree(self, class_entry): """Return references to all objects of a class in a commit.""" object_references = set() object_entries = self.repo[class_entry.oid] for object_entry in object_entries: reference = references.Reference(object_entry.name, None, None) object_references.add(reference) return object_references
def test_constructor_sets_class_name_and_object_references_correctly(self): """Verify the constructor sets class name and object references.""" for class_name, raw_references in self.test_input: object_references = set( references.Reference(*x) for x in raw_references) klass = objects.ObjectClass(class_name, object_references) self.assertEqual(klass.name, class_name) self.assertEqual(klass.objects, object_references)
def test_constructor_sets_property_name_and_value_properly(self): """Verify that the constructor sets name and value properly.""" test_references = [ references.Reference('229dd334-321c-4c95-95a6-aff5533db1d6', None, None), references.Reference('12c814bc-f3e6-4ee3-9f25-4b69a4d6fb95', 'issues', None), references.Reference('4d47faf2-fc79-432f-ad7b-94047c303a22', None, 'master'), references.Reference('61427efc-e0cd-4f2a-b44e-d603ea506ab3', 'issues', 'master') ] for object_reference in test_references: name = 'property name' reference_property = properties.ReferenceProperty( name, object_reference) self.assertEqual(reference_property.name, name) self.assertEqual(reference_property.value, object_reference)
def test_constructor_sets_property_name_and_value_properly(self): """Verify that the constructor sets name and value properly.""" test_input = [ ('property1', []), ('property2', [1]), ('property3', [1.0, 2.1]), ('property4', [1, 'foo']), ('property5', ['foo', 'bar', 'baz']), ('property6', [ references.Reference('4d47faf2-fc79-432f-ad7b-94047c303a22', None, 'master'), references.Reference('61427efc-e0cd-4f2a-b44e-d603ea506ab3', 'issues', 'master'), ]), ] for name, values in test_input: list_property = properties.ListProperty(name, values) self.assertEqual(list_property.name, name) self.assertEqual(list_property.value, values)
def test_json_representation_has_all_expected_fields(self): """Verify that the JSON representation of Reference objects is ok.""" string = json.dumps(references.Reference( '1f3f242f-377d-413b-82e3-d9639403d2f3', None, None), cls=JSONObjectEncoder) data = json.loads(string) self.assertEqual( data, {'uuid': '1f3f242f-377d-413b-82e3-d9639403d2f3'}) string = json.dumps(references.Reference( '1f3f242f-377d-413b-82e3-d9639403d2f3', 'issues', None), cls=JSONObjectEncoder) data = json.loads(string) self.assertEqual( data, { 'uuid': '1f3f242f-377d-413b-82e3-d9639403d2f3', 'service': 'issues' }) string = json.dumps(references.Reference( '1f3f242f-377d-413b-82e3-d9639403d2f3', None, 'master'), cls=JSONObjectEncoder) data = json.loads(string) self.assertEqual( data, { 'uuid': '1f3f242f-377d-413b-82e3-d9639403d2f3', 'ref': 'master' }) string = json.dumps(references.Reference( '1f3f242f-377d-413b-82e3-d9639403d2f3', 'issues', 'master'), cls=JSONObjectEncoder) data = json.loads(string) self.assertEqual( data, { 'uuid': '1f3f242f-377d-413b-82e3-d9639403d2f3', 'service': 'issues', 'ref': 'master' })
def test_yaml_representation_has_all_expected_fields(self): """Verify that the YAML representation of Reference objects is ok.""" string = yaml.dump(references.Reference( '1f3f242f-377d-413b-82e3-d9639403d2f3', None, None)) data = yaml.load(string) self.assertEqual( data, {'uuid': '1f3f242f-377d-413b-82e3-d9639403d2f3'}) string = yaml.dump(references.Reference( '1f3f242f-377d-413b-82e3-d9639403d2f3', 'issues', None)) data = yaml.load(string) self.assertEqual( data, { 'uuid': '1f3f242f-377d-413b-82e3-d9639403d2f3', 'service': 'issues' }) string = yaml.dump(references.Reference( '1f3f242f-377d-413b-82e3-d9639403d2f3', None, 'master')) data = yaml.load(string) self.assertEqual( data, { 'uuid': '1f3f242f-377d-413b-82e3-d9639403d2f3', 'ref': 'master' }) string = yaml.dump(references.Reference( '1f3f242f-377d-413b-82e3-d9639403d2f3', 'issues', 'master')) data = yaml.load(string) self.assertEqual( data, { 'uuid': '1f3f242f-377d-413b-82e3-d9639403d2f3', 'service': 'issues', 'ref': 'master' })
def setUp(self): """Initialise helper variables for the tests.""" self.test_input = [ ('hash1', '5e27f17c-ff22-4c49-82d9-6549f2800d1a', objects.ObjectClass('someclass', []), []), ('hash2', 'ad791799-4c3a-4cac-a07d-43493baab121', objects.ObjectClass('someclass', []), [ properties.TextProperty('title', 'Title'), properties.TextProperty('info', 'Info'), properties.FloatProperty('amount', 237.5), properties.BooleanProperty('important', False), properties.IntProperty('count', 5), properties.TimestampProperty('date', '1377703755 +0100'), properties.ReferenceProperty( 'others', set([ references.Reference('a', None, None), references.Reference('b', None, None), references.Reference('c', None, None), ])), properties.ListProperty('tags', ['tag-1', 'tag-2', 'tag-3']), ]), ]
def reference_property_in_data(self, context, object_entry, prop_def, data): """Return a reference property from an object properties dictionary.""" if not isinstance(data, dict): context.error( ReferencePropertyValueNotADictError(context, prop_def.name, data)) return None else: if 'uuid' not in data: context.error( ReferencePropertyUUIDUndefinedError( context, prop_def.name, data)) elif not isinstance(data['uuid'], basestring): context.error( ReferencePropertyUUIDNotAStringError( context, prop_def.name, data['uuid'])) elif not expressions.object_uuid.match(data['uuid']): context.error( ReferencePropertyUUIDInvalidError(context, prop_def.name, data['uuid'])) if 'ref' in data and not isinstance(data['ref'], basestring): context.error( ReferencePropertyRefNotAStringError( context, prop_def.name, data['ref'])) if 'service' in data: if not isinstance(data['service'], basestring): context.error( ReferencePropertyServiceNotAStringError( context, prop_def.name, data['service'])) reference = references.Reference(data.get('uuid', None), data.get('ref', None), data.get('service', None)) return properties.ReferenceProperty(prop_def.name, reference)
def test_yaml_representation_has_all_expected_fields(self): """Verify that the YAML representation of ObjectClass objects is ok.""" for class_name, raw_references in self.test_input: object_references = \ set(references.Reference(*x) for x in raw_references) klass = objects.ObjectClass(class_name, object_references) string = yaml.dump(klass) yaml_data = yaml.load(string) reference_list = [] for reference in sorted(object_references): d = {'uuid': reference.uuid} if reference.service: d['service'] = reference.service if reference.ref: d['ref'] = reference.ref reference_list.append(d) self.assertEqual(yaml_data, { 'name': class_name, 'objects': reference_list, })
def test_equality_operator_is_correct(self): """Verify that the __eq__ operator is correct.""" for uuid, service, ref in self.references: reference1 = references.Reference(uuid, service, ref) reference2 = references.Reference(uuid, service, ref) self.assertEqual(reference1, reference2) for input1, input2 in itertools.permutations(self.references, 2): uuid1, service1, ref1 = input1 uuid2, service2, ref2 = input2 reference1 = references.Reference(uuid1, service1, ref1) reference2 = references.Reference(uuid2, service2, ref2) self.assertNotEqual(reference1, reference2) self.assertFalse(reference1 == reference2) self.assertNotEqual( references.Reference(*self.references[0]), self.references[0]) self.assertFalse( references.Reference(*self.references[0]) == self.references[0])