예제 #1
0
    def test_source_version_delete(self):
        source = SourceFactory(version=HEAD)
        concept = ConceptFactory(mnemonic='concept1',
                                 version=HEAD,
                                 sources=[source],
                                 parent=source)

        self.assertTrue(source.is_latest_version)
        self.assertEqual(concept.sources.count(), 1)

        version1 = SourceFactory.build(name='version1',
                                       version='v1',
                                       mnemonic=source.mnemonic,
                                       organization=source.organization)
        Source.persist_new_version(version1, source.created_by)
        source.refresh_from_db()

        self.assertEqual(concept.sources.count(), 2)
        self.assertTrue(version1.is_latest_version)
        self.assertFalse(source.is_latest_version)

        source_versions = Source.objects.filter(
            mnemonic=source.mnemonic,
            version='v1',
        )
        self.assertTrue(source_versions.exists())
        self.assertEqual(version1.concepts.count(), 1)

        version1.delete()
        source.refresh_from_db()

        self.assertFalse(
            Source.objects.filter(
                version='v1',
                mnemonic=source.mnemonic,
            ).exists())
        self.assertTrue(source.is_latest_version)
        self.assertEqual(concept.sources.count(), 1)

        with self.assertRaises(ValidationError) as ex:
            source.delete()

        self.assertEqual(ex.exception.message_dict, {
            'detail': ['Cannot delete only version.'],
        })
예제 #2
0
    def test_persist_new_version(self):
        source = SourceFactory(version=HEAD)
        concept = ConceptFactory(mnemonic='concept1', parent=source)

        self.assertEqual(source.concepts_set.count(), 1)  # parent-child
        self.assertEqual(source.concepts.count(), 1)
        self.assertEqual(concept.sources.count(), 1)
        self.assertTrue(source.is_latest_version)

        version1 = SourceFactory.build(name='version1',
                                       version='v1',
                                       mnemonic=source.mnemonic,
                                       organization=source.organization)
        Source.persist_new_version(version1, source.created_by)
        source.refresh_from_db()

        self.assertFalse(source.is_latest_version)
        self.assertEqual(source.concepts_set.count(), 1)  # parent-child
        self.assertEqual(source.concepts.count(), 1)
        self.assertTrue(version1.is_latest_version)
        self.assertEqual(version1.concepts.count(), 1)
        self.assertEqual(version1.concepts_set.count(), 0)  # no direct child
예제 #3
0
 def setUp(self):
     super().setUp()
     self.new_source = SourceFactory.build(organization=None)
     self.user = UserProfileFactory()