def test_released_versions(self): source = OrganizationSourceFactory() source_v1 = OrganizationSourceFactory(mnemonic=source.mnemonic, organization=source.organization, version='v1') self.assertEqual(source.released_versions.count(), 0) source_v1.released = True source_v1.save() self.assertEqual(source.released_versions.count(), 1) self.assertEqual(source_v1.released_versions.count(), 1)
def test_child_count_updates(self): source = OrganizationSourceFactory(version=HEAD) self.assertEqual(source.active_concepts, 0) concept = ConceptFactory(sources=[source], parent=source) source.save() self.assertEqual(source.num_concepts, 1) self.assertEqual(source.active_concepts, 1) self.assertEqual(source.last_concept_update, concept.updated_at) self.assertEqual(source.last_child_update, source.last_concept_update)
def test_concept_access_changes_with_source(self): source = OrganizationSourceFactory(version=HEAD) self.assertEqual(source.public_access, ACCESS_TYPE_EDIT) concept = ConceptFactory(parent=source, public_access=ACCESS_TYPE_EDIT) self.assertEqual(concept.public_access, ACCESS_TYPE_EDIT) source.public_access = ACCESS_TYPE_VIEW source.save() concept.refresh_from_db() self.assertEqual(source.public_access, ACCESS_TYPE_VIEW) self.assertEqual(source.public_access, concept.public_access)
def test_is_exporting(self, async_result_klass_mock): source = OrganizationSourceFactory() self.assertFalse(source.is_exporting) async_result_instance_mock = Mock(successful=Mock(return_value=True)) async_result_klass_mock.return_value = async_result_instance_mock source._background_process_ids = [None, ''] # pylint: disable=protected-access source.save() self.assertFalse(source.is_exporting) source._background_process_ids = ['1', '2', '3'] # pylint: disable=protected-access source.save() self.assertFalse(source.is_exporting) async_result_instance_mock = Mock(successful=Mock(return_value=False), failed=Mock(return_value=True)) async_result_klass_mock.return_value = async_result_instance_mock source._background_process_ids = [1, 2, 3] # pylint: disable=protected-access source.save() self.assertFalse(source.is_exporting) async_result_instance_mock = Mock(successful=Mock(return_value=False), failed=Mock(return_value=False)) async_result_instance_mock.name = 'core.common.tasks.foobar' async_result_klass_mock.return_value = async_result_instance_mock source._background_process_ids = [1, 2, 3] # pylint: disable=protected-access source.save() self.assertFalse(source.is_exporting) async_result_instance_mock = Mock( name='core.common.tasks.export_source', successful=Mock(return_value=False), failed=Mock(return_value=False)) async_result_instance_mock.name = 'core.common.tasks.export_source' async_result_klass_mock.return_value = async_result_instance_mock source._background_process_ids = [1, 2, 3] # pylint: disable=protected-access source.save() self.assertTrue(source.is_exporting)
def test_source_active_inactive_should_affect_children(self): source = OrganizationSourceFactory(is_active=True) concept = ConceptFactory(parent=source, is_active=True) source.is_active = False source.save() concept.refresh_from_db() self.assertFalse(source.is_active) self.assertFalse(concept.is_active) source.is_active = True source.save() concept.refresh_from_db() self.assertTrue(source.is_active) self.assertTrue(concept.is_active)
def test_is_processing(self, async_result_klass_mock): source = OrganizationSourceFactory() self.assertFalse(source.is_processing) async_result_instance_mock = Mock(successful=Mock(return_value=True)) async_result_klass_mock.return_value = async_result_instance_mock source._background_process_ids = ['1', '2', '3'] # pylint: disable=protected-access source.save() self.assertFalse(source.is_processing) self.assertEqual(source._background_process_ids, []) # pylint: disable=protected-access async_result_instance_mock = Mock(successful=Mock(return_value=False), failed=Mock(return_value=True)) async_result_klass_mock.return_value = async_result_instance_mock source._background_process_ids = [1, 2, 3] # pylint: disable=protected-access source.save() self.assertFalse(source.is_processing) self.assertEqual(source._background_process_ids, []) # pylint: disable=protected-access async_result_instance_mock = Mock(successful=Mock(return_value=False), failed=Mock(return_value=False)) async_result_klass_mock.return_value = async_result_instance_mock source._background_process_ids = [1, 2, 3] # pylint: disable=protected-access source.save() self.assertTrue(source.is_processing) self.assertEqual(source._background_process_ids, [1, 2, 3]) # pylint: disable=protected-access
def test_display_name(self): source = OrganizationSourceFactory(default_locale='fr', supported_locales=['fr', 'ti']) ch_locale = LocalizedTextFactory(locale_preferred=True, locale='ch') en_locale = LocalizedTextFactory(locale_preferred=True, locale='en') concept = ConceptFactory(names=[ch_locale, en_locale], parent=source) self.assertEqual( concept.display_name, en_locale.name) # locale preferred order by created at desc source.supported_locales = ['fr', 'ti', 'ch'] source.save() self.assertEqual( concept.display_name, ch_locale.name) # locale preferred parent's supported locale # taking scenarios for ciel 1366 concept concept = ConceptFactory( parent=source, names=[ LocalizedTextFactory(locale_preferred=True, locale='en', name='MALARIA SMEAR, QUALITATIVE'), LocalizedTextFactory(type='SHORT', locale_preferred=False, locale='en', name='malaria sm, qual'), LocalizedTextFactory(locale_preferred=False, locale='en', name='Jungle fever smear'), LocalizedTextFactory(locale_preferred=True, locale='fr', name='FROTTIS POUR DÉTECTER PALUDISME'), LocalizedTextFactory(locale_preferred=False, locale='ht', name='tès MALARYA , kalitatif'), LocalizedTextFactory(locale_preferred=False, locale='es', name='frotis de malaria (cualitativo)'), LocalizedTextFactory(locale_preferred=False, locale='es', name='Frotis de paludismo'), ]) source.default_locale = 'en' source.supported_locales = ['en'] source.save() self.assertEqual(concept.display_name, 'MALARIA SMEAR, QUALITATIVE') source.default_locale = 'fr' source.supported_locales = ['fr', 'en'] source.save() self.assertEqual(concept.display_name, 'FROTTIS POUR DÉTECTER PALUDISME') source.default_locale = 'es' source.supported_locales = ['es'] source.save() self.assertEqual(concept.display_name, 'Frotis de paludismo') source.default_locale = 'ht' source.supported_locales = ['ht', 'en'] source.save() self.assertEqual(concept.display_name, 'tès MALARYA , kalitatif') source.default_locale = 'ti' source.supported_locales = ['ti'] source.save() self.assertEqual( concept.display_name, 'MALARIA SMEAR, QUALITATIVE') # system default locale = en source.default_locale = 'ti' source.supported_locales = ['ti', 'en'] source.save() self.assertEqual(concept.display_name, 'MALARIA SMEAR, QUALITATIVE')