diff --git a/tests/openedx_tagging/core/tagging/import_export/test_api.py b/tests/openedx_tagging/core/tagging/import_export/test_api.py index 9721fec44..a20874adf 100644 --- a/tests/openedx_tagging/core/tagging/import_export/test_api.py +++ b/tests/openedx_tagging/core/tagging/import_export/test_api.py @@ -8,7 +8,7 @@ import openedx_tagging.core.tagging.import_export.api as import_export_api from openedx_tagging.core.tagging.import_export import ParserFormat -from openedx_tagging.core.tagging.models import LanguageTaxonomy, TagImportTask, TagImportTaskState, Taxonomy +from openedx_tagging.core.tagging.models import LanguageTaxonomy, Tag, TagImportTask, TagImportTaskState, Taxonomy from .mixins import TestImportExportMixin @@ -197,3 +197,32 @@ def test_import_with_export_output(self) -> None: if tag.parent: assert new_tag.parent assert tag.parent.external_id == new_tag.parent.external_id + + def test_import_removing_with_childs(self) -> None: + """ + Test import need to remove childs with parents that will also be removed + """ + new_taxonomy = Taxonomy(name="New taxonomy") + new_taxonomy.save() + parent = Tag.objects.create( + id=-1, + external_id="tag_1", + value="Tag 1", + taxonomy=new_taxonomy, + ) + Tag.objects.create( + id=-2, + external_id="tag_2", + value="Tag 2", + parent=parent, + taxonomy=new_taxonomy, + ) + + # Import with empty tags, to remove all tags + importFile = BytesIO(json.dumps({"tags": []}).encode()) + assert import_export_api.import_tags( + new_taxonomy, + importFile, + ParserFormat.JSON, + replace=True, + )