diff --git a/figures/settings/lms_production.py b/figures/settings/lms_production.py index d3ffb5bb..fdf60ce9 100644 --- a/figures/settings/lms_production.py +++ b/figures/settings/lms_production.py @@ -25,6 +25,11 @@ def update_webpack_loader(webpack_loader_settings, figures_env_tokens): def update_celerybeat_schedule(celerybeat_schedule_settings, figures_env_tokens): """ Figures pipeline job schedule configuration in CELERYBEAT_SCHEDULE. + + Daily metrics pipeline scheduler is on by default + Course MAU metrics pipeline scheduler is off by default + + TODO: Language improvement: Change the "IMPORT" to "CAPTURE" or "EXTRACT" """ if figures_env_tokens.get('ENABLE_DAILY_METRICS_IMPORT', True): celerybeat_schedule_settings['figures-populate-daily-metrics'] = { @@ -35,7 +40,7 @@ def update_celerybeat_schedule(celerybeat_schedule_settings, figures_env_tokens) ), } - if figures_env_tokens.get('ENABLE_DAILY_MAU_COLLECTION', True): + if figures_env_tokens.get('ENABLE_DAILY_MAU_IMPORT', False): celerybeat_schedule_settings['figures-daily-mau'] = { 'task': 'figures.tasks.populate_all_mau', 'schedule': crontab( diff --git a/tests/test_settings.py b/tests/test_settings.py index 6937899a..f88720bf 100644 --- a/tests/test_settings.py +++ b/tests/test_settings.py @@ -87,3 +87,45 @@ def test_update_settings(self, figures_env_tokens, run_celery): assert self.CELERY_TASK_NAME not in settings.CELERYBEAT_SCHEDULE assert settings.ENV_TOKENS['FIGURES'] == figures_env_tokens + + +class TestDailyMauPipelineSettings(object): + """Tests MAU pipeline settings + + See how edx-platforms does plugins. App: openedx.core.djangoapps.plugins + + * constants.PLUGIN_APP_SETTINGS_FUNC_NAME + * openedx.core.djangoapps.plugins.plugin_settings + + TODO: Abstract the core functionality in this test class because it presents + a pattern for testing plugin CeleryBeat schedule settings + """ + TASK_NAME = 'figures-daily-mau' + TASK_FUNC = 'figures.tasks.populate_all_mau' + + @pytest.fixture(autouse=True) + def setup(self, db): + self.settings = mock.Mock( + WEBPACK_LOADER={}, + CELERYBEAT_SCHEDULE={}, + FEATURES={}, + ENV_TOKENS={}, + CELERY_IMPORTS=[], + ) + + def test_daily_mau_pipeline_flag_enabled(self): + self.settings.ENV_TOKENS['FIGURES'] = { 'ENABLE_DAILY_MAU_IMPORT': True } + plugin_settings(self.settings) + assert self.TASK_NAME in self.settings.CELERYBEAT_SCHEDULE + assert set(['task', 'schedule']) == set( + self.settings.CELERYBEAT_SCHEDULE[self.TASK_NAME].keys()) + + def test_daily_mau_pipeline_flag_disabled(self): + self.settings.ENV_TOKENS['FIGURES'] = { 'ENABLE_DAILY_MAU_IMPORT': False } + plugin_settings(self.settings) + assert self.TASK_NAME not in self.settings.CELERYBEAT_SCHEDULE + + def test_daily_mau_pipeline_flag_not_present(self): + assert 'FIGURES' not in self.settings.ENV_TOKENS + plugin_settings(self.settings) + assert self.TASK_NAME not in self.settings.CELERYBEAT_SCHEDULE