On publish, add evenly spaced dates to self-paced courses
This commit is contained in:
@@ -243,7 +243,7 @@ class TestGetBlocksQueryCounts(TestGetBlocksQueryCountsBase):
|
||||
self._get_blocks(
|
||||
course,
|
||||
expected_mongo_queries=0,
|
||||
expected_sql_queries=13 if with_storage_backing else 12,
|
||||
expected_sql_queries=14 if with_storage_backing else 13,
|
||||
)
|
||||
|
||||
@ddt.data(
|
||||
@@ -260,9 +260,9 @@ class TestGetBlocksQueryCounts(TestGetBlocksQueryCountsBase):
|
||||
clear_course_from_cache(course.id)
|
||||
|
||||
if with_storage_backing:
|
||||
num_sql_queries = 23
|
||||
num_sql_queries = 24
|
||||
else:
|
||||
num_sql_queries = 13
|
||||
num_sql_queries = 14
|
||||
|
||||
self._get_blocks(
|
||||
course,
|
||||
|
||||
@@ -1492,8 +1492,8 @@ class ProgressPageTests(ProgressPageBaseTests):
|
||||
self.assertContains(resp, u"Download Your Certificate")
|
||||
|
||||
@ddt.data(
|
||||
(True, 53),
|
||||
(False, 52)
|
||||
(True, 57),
|
||||
(False, 56)
|
||||
)
|
||||
@ddt.unpack
|
||||
def test_progress_queries_paced_courses(self, self_paced, query_count):
|
||||
@@ -1506,8 +1506,8 @@ class ProgressPageTests(ProgressPageBaseTests):
|
||||
|
||||
@patch.dict(settings.FEATURES, {'ASSUME_ZERO_GRADE_IF_ABSENT_FOR_ALL_TESTS': False})
|
||||
@ddt.data(
|
||||
(False, 61, 40),
|
||||
(True, 52, 35)
|
||||
(False, 65, 44),
|
||||
(True, 56, 39)
|
||||
)
|
||||
@ddt.unpack
|
||||
def test_progress_queries(self, enable_waffle, initial, subsequent):
|
||||
|
||||
@@ -164,10 +164,10 @@ class RecalculateSubsectionGradeTest(HasCourseWithProblemsMixin, ModuleStoreTest
|
||||
self.assertEqual(mock_block_structure_create.call_count, 1)
|
||||
|
||||
@ddt.data(
|
||||
(ModuleStoreEnum.Type.mongo, 1, 37, True),
|
||||
(ModuleStoreEnum.Type.mongo, 1, 37, False),
|
||||
(ModuleStoreEnum.Type.split, 3, 37, True),
|
||||
(ModuleStoreEnum.Type.split, 3, 37, False),
|
||||
(ModuleStoreEnum.Type.mongo, 1, 38, True),
|
||||
(ModuleStoreEnum.Type.mongo, 1, 38, False),
|
||||
(ModuleStoreEnum.Type.split, 3, 38, True),
|
||||
(ModuleStoreEnum.Type.split, 3, 38, False),
|
||||
)
|
||||
@ddt.unpack
|
||||
def test_query_counts(self, default_store, num_mongo_calls, num_sql_calls, create_multiple_subsections):
|
||||
@@ -179,8 +179,8 @@ class RecalculateSubsectionGradeTest(HasCourseWithProblemsMixin, ModuleStoreTest
|
||||
self._apply_recalculate_subsection_grade()
|
||||
|
||||
@ddt.data(
|
||||
(ModuleStoreEnum.Type.mongo, 1, 37),
|
||||
(ModuleStoreEnum.Type.split, 3, 37),
|
||||
(ModuleStoreEnum.Type.mongo, 1, 38),
|
||||
(ModuleStoreEnum.Type.split, 3, 38),
|
||||
)
|
||||
@ddt.unpack
|
||||
def test_query_counts_dont_change_with_more_content(self, default_store, num_mongo_calls, num_sql_calls):
|
||||
@@ -225,8 +225,8 @@ class RecalculateSubsectionGradeTest(HasCourseWithProblemsMixin, ModuleStoreTest
|
||||
)
|
||||
|
||||
@ddt.data(
|
||||
(ModuleStoreEnum.Type.mongo, 1, 20),
|
||||
(ModuleStoreEnum.Type.split, 3, 20),
|
||||
(ModuleStoreEnum.Type.mongo, 1, 21),
|
||||
(ModuleStoreEnum.Type.split, 3, 21),
|
||||
)
|
||||
@ddt.unpack
|
||||
def test_persistent_grades_not_enabled_on_course(self, default_store, num_mongo_queries, num_sql_queries):
|
||||
@@ -240,8 +240,8 @@ class RecalculateSubsectionGradeTest(HasCourseWithProblemsMixin, ModuleStoreTest
|
||||
self.assertEqual(len(PersistentSubsectionGrade.bulk_read_grades(self.user.id, self.course.id)), 0)
|
||||
|
||||
@ddt.data(
|
||||
(ModuleStoreEnum.Type.mongo, 1, 38),
|
||||
(ModuleStoreEnum.Type.split, 3, 38),
|
||||
(ModuleStoreEnum.Type.mongo, 1, 39),
|
||||
(ModuleStoreEnum.Type.split, 3, 39),
|
||||
)
|
||||
@ddt.unpack
|
||||
def test_persistent_grades_enabled_on_course(self, default_store, num_mongo_queries, num_sql_queries):
|
||||
|
||||
@@ -65,10 +65,13 @@ from openedx.core.djangoapps.course_date_signals.handlers import extract_dates
|
||||
from openedx.core.djangoapps.course_groups.cohorts import set_course_cohorted
|
||||
from openedx.core.djangoapps.django_comment_common.models import FORUM_ROLE_COMMUNITY_TA
|
||||
from openedx.core.djangoapps.django_comment_common.utils import seed_permissions_roles
|
||||
from openedx.core.djangoapps.schedules.tests.factories import ScheduleFactory
|
||||
from openedx.core.djangoapps.site_configuration import helpers as configuration_helpers
|
||||
from openedx.core.djangoapps.site_configuration.tests.mixins import SiteMixin
|
||||
from openedx.core.djangoapps.waffle_utils.testutils import override_waffle_flag
|
||||
from openedx.core.lib.teams_config import TeamsConfig
|
||||
from openedx.core.lib.xblock_utils import grade_histogram
|
||||
from openedx.features.course_experience import RELATIVE_DATES_FLAG
|
||||
from shoppingcart.models import (
|
||||
Coupon,
|
||||
CouponRedemption,
|
||||
@@ -4478,6 +4481,8 @@ class TestDueDateExtensions(SharedModuleStoreTestCase, LoginEnrollmentTestCase):
|
||||
|
||||
self.user1 = user1
|
||||
self.user2 = user2
|
||||
ScheduleFactory.create(enrollment__user=self.user1, enrollment__course_id=self.course.id)
|
||||
ScheduleFactory.create(enrollment__user=self.user2, enrollment__course_id=self.course.id)
|
||||
self.instructor = InstructorFactory(course_key=self.course.id)
|
||||
self.client.login(username=self.instructor.username, password='test')
|
||||
extract_dates(None, self.course.id)
|
||||
@@ -4519,6 +4524,7 @@ class TestDueDateExtensions(SharedModuleStoreTestCase, LoginEnrollmentTestCase):
|
||||
get_extended_due(self.course, self.week3, self.user1)
|
||||
)
|
||||
|
||||
@override_waffle_flag(RELATIVE_DATES_FLAG, True)
|
||||
def test_reset_date(self):
|
||||
self.test_change_due_date()
|
||||
url = reverse('reset_due_date', kwargs={'course_id': text_type(self.course.id)})
|
||||
@@ -4637,10 +4643,13 @@ class TestDueDateExtensionsDeletedDate(ModuleStoreTestCase, LoginEnrollmentTestC
|
||||
|
||||
self.user1 = user1
|
||||
self.user2 = user2
|
||||
ScheduleFactory.create(enrollment__user=self.user1, enrollment__course_id=self.course.id)
|
||||
ScheduleFactory.create(enrollment__user=self.user2, enrollment__course_id=self.course.id)
|
||||
self.instructor = InstructorFactory(course_key=self.course.id)
|
||||
self.client.login(username=self.instructor.username, password='test')
|
||||
extract_dates(None, self.course.id)
|
||||
|
||||
@override_waffle_flag(RELATIVE_DATES_FLAG, True)
|
||||
def test_reset_extension_to_deleted_date(self):
|
||||
"""
|
||||
Test that we can delete a due date extension after deleting the normal
|
||||
|
||||
@@ -15,9 +15,9 @@ from django.test import TestCase
|
||||
from opaque_keys.edx.keys import CourseKey
|
||||
from pytz import UTC
|
||||
|
||||
from edx_when import api
|
||||
from edx_when.field_data import DateLookupFieldData
|
||||
from openedx.core.djangoapps.course_date_signals import handlers
|
||||
from openedx.core.djangoapps.schedules.tests.factories import ScheduleFactory
|
||||
from student.tests.factories import UserFactory
|
||||
from xmodule.fields import Date
|
||||
from xmodule.modulestore.tests.django_utils import ModuleStoreTestCase, SharedModuleStoreTestCase
|
||||
@@ -228,6 +228,8 @@ class TestSetDueDateExtension(ModuleStoreTestCase):
|
||||
self.week3 = week3
|
||||
self.user = user
|
||||
|
||||
ScheduleFactory.create(enrollment__user=self.user, enrollment__course_id=self.course.id)
|
||||
|
||||
inject_field_data((course, week1, week2, week3, homework, assignment), course, user)
|
||||
|
||||
def _clear_field_data_cache(self):
|
||||
@@ -241,7 +243,6 @@ class TestSetDueDateExtension(ModuleStoreTestCase):
|
||||
block._field_data._load_dates(self.course.id, self.user, use_cached=False) # pylint: disable=protected-access
|
||||
block.fields['due']._del_cached_value(block) # pylint: disable=protected-access
|
||||
|
||||
@api.override_enabled()
|
||||
def test_set_due_date_extension(self):
|
||||
extended = datetime.datetime(2013, 12, 25, 0, 0, tzinfo=UTC)
|
||||
tools.set_due_date_extension(self.course, self.week1, self.user, extended)
|
||||
@@ -297,6 +298,8 @@ class TestDataDumps(ModuleStoreTestCase):
|
||||
self.week2 = week2
|
||||
self.user1 = user1
|
||||
self.user2 = user2
|
||||
ScheduleFactory.create(enrollment__user=self.user1, enrollment__course_id=self.course.id)
|
||||
ScheduleFactory.create(enrollment__user=self.user2, enrollment__course_id=self.course.id)
|
||||
handlers.extract_dates(None, course.id)
|
||||
|
||||
def test_dump_module_extensions(self):
|
||||
|
||||
Reference in New Issue
Block a user