diff --git a/cms/djangoapps/export_course_metadata/management/__init__.py b/cms/djangoapps/export_course_metadata/management/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/cms/djangoapps/export_course_metadata/management/commands/__init__.py b/cms/djangoapps/export_course_metadata/management/commands/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/cms/djangoapps/export_course_metadata/management/commands/export_course_metadata_for_all_courses.py b/cms/djangoapps/export_course_metadata/management/commands/export_course_metadata_for_all_courses.py new file mode 100644 index 0000000000000000000000000000000000000000..ec82dd7605a7b9bffde493e25c01d820c64f0857 --- /dev/null +++ b/cms/djangoapps/export_course_metadata/management/commands/export_course_metadata_for_all_courses.py @@ -0,0 +1,33 @@ +""" +Export course metadata for all courses +""" + +from django.core.management.base import BaseCommand + +from xmodule.modulestore.django import modulestore + +from cms.djangoapps.export_course_metadata.signals import export_course_metadata + + +class Command(BaseCommand): + """ + Export course metadata for all courses + """ + help = 'Export course metadata for all courses' + + def handle(self, *args, **options): + """ + Execute the command + """ + export_course_metadata_for_all_courses() + + +def export_course_metadata_for_all_courses(): + """ + Export course metadata for all courses + """ + module_store = modulestore() + courses = module_store.get_courses() + + for course in courses: + export_course_metadata(None, course.id) diff --git a/cms/djangoapps/export_course_metadata/management/commands/tests/__init__.py b/cms/djangoapps/export_course_metadata/management/commands/tests/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/cms/djangoapps/export_course_metadata/management/commands/tests/test_export_course_metadata_for_all_courses.py b/cms/djangoapps/export_course_metadata/management/commands/tests/test_export_course_metadata_for_all_courses.py new file mode 100644 index 0000000000000000000000000000000000000000..18872e1459ed285b699a1118b07614bf2b425f50 --- /dev/null +++ b/cms/djangoapps/export_course_metadata/management/commands/tests/test_export_course_metadata_for_all_courses.py @@ -0,0 +1,32 @@ +""" +Tests for exporting course metadata for all courses. +""" + +from unittest.mock import patch + +from edx_toggles.toggles.testutils import override_waffle_flag +from xmodule.modulestore.tests.django_utils import ModuleStoreTestCase +from xmodule.modulestore.tests.factories import CourseFactory + +from cms.djangoapps.export_course_metadata.toggles import EXPORT_COURSE_METADATA_FLAG + +from ..export_course_metadata_for_all_courses import export_course_metadata_for_all_courses + + +@override_waffle_flag(EXPORT_COURSE_METADATA_FLAG, True) +class ExportAllCourses(ModuleStoreTestCase): + """ + Tests for exporting course metadata for all courses. + """ + def setUp(self): + super().setUp() + CourseFactory.create() + CourseFactory.create() + + @patch('cms.djangoapps.export_course_metadata.tasks.course_metadata_export_storage.save') + def test_exporting_all_courses(self, patched_storage): + """ + Test for exporting course metadata for all courses. + """ + export_course_metadata_for_all_courses() + assert len(patched_storage.mock_calls) == 2