Add user_metadata to reflect if a user has purchased before.

REVO-20
This commit is contained in:
Cali Stenson
2018-11-30 16:36:08 -05:00
parent 6840da3f5d
commit 241cff006a
7 changed files with 61 additions and 37 deletions

View File

@@ -239,23 +239,25 @@ class TestFieldOverrideMongoPerformance(FieldOverridePerformanceTestCase):
MODULESTORE = TEST_DATA_MONGO_MODULESTORE
__test__ = True
# TODO: decrease query count as part of REVO-28
QUERY_COUNT = 33
TEST_DATA = {
# (providers, course_width, enable_ccx, view_as_ccx): (
# # of sql queries to default,
# # of mongo queries,
# )
('no_overrides', 1, True, False): (31, 1),
('no_overrides', 2, True, False): (31, 1),
('no_overrides', 3, True, False): (31, 1),
('ccx', 1, True, False): (31, 1),
('ccx', 2, True, False): (31, 1),
('ccx', 3, True, False): (31, 1),
('no_overrides', 1, False, False): (31, 1),
('no_overrides', 2, False, False): (31, 1),
('no_overrides', 3, False, False): (31, 1),
('ccx', 1, False, False): (31, 1),
('ccx', 2, False, False): (31, 1),
('ccx', 3, False, False): (31, 1),
('no_overrides', 1, True, False): (QUERY_COUNT, 1),
('no_overrides', 2, True, False): (QUERY_COUNT, 1),
('no_overrides', 3, True, False): (QUERY_COUNT, 1),
('ccx', 1, True, False): (QUERY_COUNT, 1),
('ccx', 2, True, False): (QUERY_COUNT, 1),
('ccx', 3, True, False): (QUERY_COUNT, 1),
('no_overrides', 1, False, False): (QUERY_COUNT, 1),
('no_overrides', 2, False, False): (QUERY_COUNT, 1),
('no_overrides', 3, False, False): (QUERY_COUNT, 1),
('ccx', 1, False, False): (QUERY_COUNT, 1),
('ccx', 2, False, False): (QUERY_COUNT, 1),
('ccx', 3, False, False): (QUERY_COUNT, 1),
}
@@ -266,20 +268,22 @@ class TestFieldOverrideSplitPerformance(FieldOverridePerformanceTestCase):
MODULESTORE = TEST_DATA_SPLIT_MODULESTORE
__test__ = True
# TODO: decrease query count as part of REVO-28
QUERY_COUNT = 33
TEST_DATA = {
('no_overrides', 1, True, False): (31, 3),
('no_overrides', 2, True, False): (31, 3),
('no_overrides', 3, True, False): (31, 3),
('ccx', 1, True, False): (31, 3),
('ccx', 2, True, False): (31, 3),
('ccx', 3, True, False): (31, 3),
('ccx', 1, True, True): (32, 3),
('ccx', 2, True, True): (32, 3),
('ccx', 3, True, True): (32, 3),
('no_overrides', 1, False, False): (31, 3),
('no_overrides', 2, False, False): (31, 3),
('no_overrides', 3, False, False): (31, 3),
('ccx', 1, False, False): (31, 3),
('ccx', 2, False, False): (31, 3),
('ccx', 3, False, False): (31, 3),
('no_overrides', 1, True, False): (QUERY_COUNT, 3),
('no_overrides', 2, True, False): (QUERY_COUNT, 3),
('no_overrides', 3, True, False): (QUERY_COUNT, 3),
('ccx', 1, True, False): (QUERY_COUNT, 3),
('ccx', 2, True, False): (QUERY_COUNT, 3),
('ccx', 3, True, False): (QUERY_COUNT, 3),
('ccx', 1, True, True): (34, 3),
('ccx', 2, True, True): (34, 3),
('ccx', 3, True, True): (34, 3),
('no_overrides', 1, False, False): (QUERY_COUNT, 3),
('no_overrides', 2, False, False): (QUERY_COUNT, 3),
('no_overrides', 3, False, False): (QUERY_COUNT, 3),
('ccx', 1, False, False): (QUERY_COUNT, 3),
('ccx', 2, False, False): (QUERY_COUNT, 3),
('ccx', 3, False, False): (QUERY_COUNT, 3),
}

View File

@@ -435,7 +435,9 @@ class SelfPacedCourseInfoTestCase(LoginEnrollmentTestCase, SharedModuleStoreTest
self.assertEqual(resp.status_code, 200)
def test_num_queries_instructor_paced(self):
self.fetch_course_info_with_queries(self.instructor_paced_course, 38, 3)
# TODO: decrease query count as part of REVO-28
self.fetch_course_info_with_queries(self.instructor_paced_course, 40, 3)
def test_num_queries_self_paced(self):
self.fetch_course_info_with_queries(self.self_paced_course, 38, 3)
# TODO: decrease query count as part of REVO-28
self.fetch_course_info_with_queries(self.self_paced_course, 40, 3)

View File

@@ -213,11 +213,12 @@ class IndexQueryTestCase(ModuleStoreTestCase):
NUM_PROBLEMS = 20
@ddt.data(
(ModuleStoreEnum.Type.mongo, 10, 169),
(ModuleStoreEnum.Type.split, 4, 165),
(ModuleStoreEnum.Type.mongo, 10, 171),
(ModuleStoreEnum.Type.split, 4, 167),
)
@ddt.unpack
def test_index_query_counts(self, store_type, expected_mongo_query_count, expected_mysql_query_count):
# TODO: decrease query count as part of REVO-28
ContentTypeGatingConfig.objects.create(enabled=True, enabled_as_of=datetime(2018, 1, 1))
with self.store.default_store(store_type):
course = CourseFactory.create()
@@ -1439,12 +1440,13 @@ class ProgressPageTests(ProgressPageBaseTests):
self.assertContains(resp, u"Download Your Certificate")
@ddt.data(
(True, 51),
(False, 50)
(True, 53),
(False, 52)
)
@ddt.unpack
def test_progress_queries_paced_courses(self, self_paced, query_count):
"""Test that query counts remain the same for self-paced and instructor-paced courses."""
# TODO: decrease query count as part of REVO-28
ContentTypeGatingConfig.objects.create(enabled=True, enabled_as_of=datetime(2018, 1, 1))
self.setup_course(self_paced=self_paced)
with self.assertNumQueries(query_count, table_blacklist=QUERY_COUNT_TABLE_BLACKLIST), check_mongo_calls(1):
@@ -1452,8 +1454,8 @@ class ProgressPageTests(ProgressPageBaseTests):
@patch.dict(settings.FEATURES, {'ASSUME_ZERO_GRADE_IF_ABSENT_FOR_ALL_TESTS': False})
@ddt.data(
(False, 58, 38),
(True, 50, 34)
(False, 60, 40),
(True, 52, 36)
)
@ddt.unpack
def test_progress_queries(self, enable_waffle, initial, subsequent):

View File

@@ -50,7 +50,15 @@ def get_experiment_user_metadata_context(course, user):
enrollment_mode = None
enrollment_time = None
enrollment = None
# TODO: clean up as part of REVO-28 (START)
has_non_audit_enrollments = None
# TODO: clean up as part of REVO-28 (END)
try:
# TODO: clean up as part of REVO-28 (START)
user_enrollments = CourseEnrollment.objects.select_related('course').filter(user_id=user.id)
audit_enrollments = user_enrollments.filter(mode='audit')
has_non_audit_enrollments = (len(audit_enrollments) != len(user_enrollments))
# TODO: clean up as part of REVO-28 (END)
enrollment = CourseEnrollment.objects.select_related(
'course'
).get(user_id=user.id, course_id=course.id)
@@ -83,4 +91,7 @@ def get_experiment_user_metadata_context(course, user):
'has_staff_access': has_staff_access,
'forum_roles': forum_roles,
'partition_groups': user_partitions,
# TODO: clean up as part of REVO-28 (START)
'has_non_audit_enrollments': has_non_audit_enrollments,
# TODO: clean up as part of REVO-28 (END)
}

View File

@@ -18,6 +18,9 @@ user_metadata = {
'has_staff_access',
'forum_roles',
'partition_groups',
# TODO: clean up as part of REVO-28 (START)
'has_non_audit_enrollments',
# TODO: clean up as part of REtest_VO-28 (END)
)
}

View File

@@ -194,7 +194,8 @@ class TestCourseHomePage(CourseHomePageTestCase):
course_home_url(self.course)
# Fetch the view and verify the query counts
with self.assertNumQueries(76, table_blacklist=QUERY_COUNT_TABLE_BLACKLIST):
# TODO: decrease query count as part of REVO-28
with self.assertNumQueries(78, table_blacklist=QUERY_COUNT_TABLE_BLACKLIST):
with check_mongo_calls(4):
url = course_home_url(self.course)
self.client.get(url)

View File

@@ -129,7 +129,8 @@ class TestCourseUpdatesPage(SharedModuleStoreTestCase):
course_updates_url(self.course)
# Fetch the view and verify that the query counts haven't changed
with self.assertNumQueries(50, table_blacklist=QUERY_COUNT_TABLE_BLACKLIST):
# TODO: decrease query count as part of REVO-28
with self.assertNumQueries(52, table_blacklist=QUERY_COUNT_TABLE_BLACKLIST):
with check_mongo_calls(4):
url = course_updates_url(self.course)
self.client.get(url)