def test_version_field_reference(self):
        field = VersionField(
            obj=[self.oc1.id, self.oc2.id],
            reference_label='aristotle_mdr._concept',
            help_text='Help Me'
        )

        self.assertTrue(field.is_reference)
        self.assertTrue(field.is_list)
        self.assertFalse(field.is_link)

        lookup = {
            'aristotle_mdr._concept': {
                self.oc1.id: self.oc1,
                self.oc2.id: self.oc2
            }
        }

        field.dereference(lookup)

        self.assertFalse(field.is_reference)
        self.assertTrue(field.is_link)
        self.assertTrue(field.is_list)

        self.assertCountEqual(field.object_list, [self.oc1, self.oc2])
    def test_version_field_invalid_lookup(self):

        field = VersionField(obj=[2], reference_label='aristotle_mdr._concept')

        self.assertFalse(field.is_link)
        self.assertTrue(field.is_reference)

        field.dereference({})

        self.assertFalse(field.is_link)
        self.assertFalse(field.is_reference)
        self.assertEqual(str(field), field.perm_message)
    def test_version_field_list_handling(self):

        field = VersionField(obj=[self.oc1], )

        self.assertEqual(field.obj, self.oc1)
        self.assertFalse(field.is_list)

        field = VersionField(obj=[], )

        self.assertFalse(field.is_link)
        self.assertTrue(field.is_list)

        field = VersionField(value=[])

        self.assertFalse(field.is_link)
        self.assertFalse(field.is_list)
        self.assertEqual(str(field), 'None')
    def test_version_field_value_only(self):

        field = VersionField(value='My Value', help_text='Help Me')

        self.assertFalse(field.is_link)
        self.assertFalse(field.is_reference)
        self.assertFalse(field.is_list)
        self.assertFalse(field.is_html)
        self.assertEqual(str(field), 'My Value')
    def test_version_field_obj_display(self):

        field = VersionField(obj=self.oc1, )

        self.assertTrue(field.is_link)
        self.assertFalse(field.is_list)
        self.assertFalse(field.is_reference)
        self.assertEqual(str(field), self.oc1.name)
        self.assertEqual(field.link_id, self.oc1.id)
    def test_version_field_component_display(self):

        vd = models.ValueDomain.objects.create(name='Test Value Domain',
                                               definition='Test Definition')
        pv = models.PermissibleValue.objects.create(value='Val',
                                                    meaning='Mean',
                                                    valueDomain=vd,
                                                    order=0)

        field = VersionField(obj=pv)

        self.assertTrue(field.is_link)
        self.assertFalse(field.is_list)
        self.assertFalse(field.is_reference)
        self.assertEqual(str(field), str(pv))
        self.assertEqual(field.link_id, vd.id)