def test_persist_new_version(self): source = OrganizationSourceFactory(version=HEAD) concept = ConceptFactory(mnemonic='concept1', parent=source) self.assertEqual(source.concepts_set.count(), 2) # parent-child self.assertEqual(source.concepts.count(), 2) self.assertEqual(concept.sources.count(), 1) self.assertTrue(source.is_latest_version) version1 = OrganizationSourceFactory.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(), 2) # parent-child self.assertEqual(source.concepts.count(), 2) self.assertTrue(version1.is_latest_version) self.assertEqual(version1.concepts.count(), 1) self.assertEqual( version1.concepts.first(), source.concepts.filter(is_latest_version=True).first()) self.assertEqual(version1.concepts_set.count(), 0) # no direct child
def test_source_version_delete(self): source = OrganizationSourceFactory(version=HEAD) concept = ConceptFactory( mnemonic='concept1', version=HEAD, sources=[source], parent=source ) self.assertTrue(source.is_latest_version) self.assertEqual(concept.get_latest_version().sources.count(), 1) version1 = OrganizationSourceFactory.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.get_latest_version().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.get_latest_version().sources.count(), 1)
def test_new_version_should_not_affect_last_child_update(self): source = OrganizationSourceFactory(version=HEAD) source_updated_at = source.updated_at source_last_child_update = source.last_child_update self.assertIsNotNone(source.id) self.assertEqual(source_updated_at, source_last_child_update) concept = ConceptFactory(sources=[source], parent=source) source.refresh_from_db() self.assertEqual(source.updated_at, source_updated_at) self.assertEqual(source.last_child_update, concept.updated_at) self.assertNotEqual(source.last_child_update, source_updated_at) self.assertNotEqual(source.last_child_update, source_last_child_update) source_last_child_update = source.last_child_update source_v1 = OrganizationSourceFactory.build(version='v1', mnemonic=source.mnemonic, organization=source.parent) Source.persist_new_version(source_v1, source.created_by) source_v1 = source.versions.filter(version='v1').first() source.refresh_from_db() self.assertIsNotNone(source_v1.id) self.assertEqual(source.last_child_update, source_last_child_update) self.assertEqual(source.updated_at, source_updated_at) source_v1_updated_at = source_v1.updated_at source_v1_last_child_update = source_v1.last_child_update source_v2 = OrganizationSourceFactory.build(version='v2', mnemonic=source.mnemonic, organization=source.parent) Source.persist_new_version(source_v2, source.created_by) source_v2 = source.versions.filter(version='v2').first() source.refresh_from_db() source_v1.refresh_from_db() self.assertIsNotNone(source_v2.id) self.assertEqual(source.last_child_update, source_last_child_update) self.assertEqual(source.updated_at, source_updated_at) self.assertEqual(source_v1.last_child_update, source_v1_last_child_update) self.assertEqual(source_v1.updated_at, source_v1_updated_at)
def setUp(self): super().setUp() self.new_source = OrganizationSourceFactory.build(organization=None) self.user = UserProfileFactory()