def test_load_existing(self): course_id = self.course_enrollments[0].course_id assert CourseDailyMetrics.objects.count() == 0 cdm, created = pipeline_cdm.CourseDailyMetricsLoader(course_id).load() assert cdm and created assert CourseDailyMetrics.objects.count() == 1 cdm2, created2 = pipeline_cdm.CourseDailyMetricsLoader(course_id).load() assert cdm2 and not created2 assert cdm2.id == cdm.id assert CourseDailyMetrics.objects.count() == 1
def test_load_existing(self, monkeypatch): with mock.patch.dict('figures.helpers.settings.FEATURES', {'FIGURES_IS_MULTISITE': False}): course_id = self.course_enrollments[0].course_id assert CourseDailyMetrics.objects.count() == 0 cdm, created = pipeline_cdm.CourseDailyMetricsLoader( course_id).load() assert cdm and created assert CourseDailyMetrics.objects.count() == 1 cdm2, created2 = pipeline_cdm.CourseDailyMetricsLoader( course_id).load() assert cdm2 and not created2 assert cdm2.id == cdm.id assert CourseDailyMetrics.objects.count() == 1
def test_load(self, monkeypatch): course_id = "course-v1:certs-appsembler+001+2019" def get_data(self, date_for): return { 'average_progress': 1.0, 'num_learners_completed': 2, 'enrollment_count': 3, 'average_days_to_complete': 0.0, 'course_id': CourseLocator(u'certs-appsembler', u'001', u'2019', None, None), 'date_for': date_for, 'active_learners_today': 0 } with mock.patch.dict('figures.helpers.settings.FEATURES', {'FIGURES_IS_MULTISITE': False}): monkeypatch.setattr( figures.pipeline.course_daily_metrics.CourseDailyMetricsLoader, 'get_data', get_data) cdm, created = pipeline_cdm.CourseDailyMetricsLoader( course_id).load() assert cdm and created
def seed_course_daily_metrics_for_course(course_id): end_date = LAST_DAY start_date = days_from(end_date, -DAYS_BACK) for dt in rrule(DAILY, dtstart=start_date, until=end_date): if VERBOSE: print('populating day {} for course {}'.format(dt, course_id)) cdm, created = pipeline_cdm.CourseDailyMetricsLoader(course_id).load( date_for=dt, force_update=True)
def test_average_progress_yesterday_or_prior(self, monkeypatch, days_back, expected_val): monkeypatch.setattr(figures.pipeline.course_daily_metrics, 'bulk_calculate_course_progress_data', lambda **_kwargs: dict(average_progress=1)) course_id = self.course_enrollments[0].course_id date_for = datetime.datetime.today().date() - relativedelta( days=days_back) cdm, created = pipeline_cdm.CourseDailyMetricsLoader(course_id).load( date_for=date_for) assert cdm.average_progress == expected_val
def test_load_invalid_data(self, monkeypatch, average_progress): course_id = self.course_enrollments[0].course_id monkeypatch.setattr(figures.pipeline.course_daily_metrics, 'bulk_calculate_course_progress_data', lambda **_kwargs: dict(average_progress=average_progress)) with pytest.raises(ValidationError) as execinfo: assert CourseDailyMetrics.objects.count() == 0 cdm, created = pipeline_cdm.CourseDailyMetricsLoader(course_id).load() assert CourseDailyMetrics.objects.count() == 0 assert 'average_progress' in execinfo.value.message_dict
def test_load_invalid_data(self, monkeypatch, average_progress): def mock_get_average_progress(course_id, date_for, course_enrollments): return average_progress course_id = self.course_enrollments[0].course_id monkeypatch.setattr( figures.pipeline.course_daily_metrics, 'get_average_progress', mock_get_average_progress) with pytest.raises(ValidationError) as execinfo: assert CourseDailyMetrics.objects.count() == 0 cdm, created = pipeline_cdm.CourseDailyMetricsLoader(course_id).load() assert CourseDailyMetrics.objects.count() == 0 assert 'average_progress' in execinfo.value.message_dict
def test_load(self, monkeypatch): # pick a course, any course (we'll just pick the first, but doesn't matter which) if OPENEDX_RELEASE == GINKGO: course_id = self.course_enrollments[0].course_id else: course_id = self.course_enrollments[0].course.id def get_data(self, date_for): return { 'average_progress': 1.0, 'num_learners_completed': 2, 'enrollment_count': 3, 'average_days_to_complete': 0.0, 'course_id': course_id, 'date_for': date_for, 'active_learners_today': 0} monkeypatch.setattr( figures.pipeline.course_daily_metrics.CourseDailyMetricsLoader, 'get_data', get_data) cdm, created = pipeline_cdm.CourseDailyMetricsLoader(course_id).load() assert cdm and created
def test_load(self): course_id = self.course_enrollments[0].course_id results = pipeline_cdm.CourseDailyMetricsLoader(course_id).load() assert results