Пример #1
0
    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)
Пример #2
0
    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')
Пример #3
0
    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')
Пример #4
0
    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)
Пример #5
0
    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
Пример #6
0
    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)
Пример #7
0
    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)
Пример #8
0
    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)
Пример #9
0
    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'
                })
Пример #10
0
    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'
                })
Пример #11
0
    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']),
             ]),
        ]
Пример #12
0
    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)
Пример #13
0
    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,
            })
Пример #14
0
    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])