Deprecate ExperimentWaffleFlag.override method
This is part of a removal of the many override methods of toggle flag/namespace classes. This allows us to remove imports of test modules from production code.
This commit is contained in:
@@ -10,12 +10,14 @@ import waffle
|
||||
from django.contrib.messages.middleware import MessageMiddleware
|
||||
from django.test import RequestFactory
|
||||
from django.urls import reverse
|
||||
from freezegun import freeze_time
|
||||
from mock import patch
|
||||
from pytz import utc
|
||||
|
||||
from course_modes.models import CourseMode
|
||||
from course_modes.tests.factories import CourseModeFactory
|
||||
from freezegun import freeze_time
|
||||
from lms.djangoapps.commerce.models import CommerceConfiguration
|
||||
from lms.djangoapps.course_home_api.toggles import COURSE_HOME_MICROFRONTEND, COURSE_HOME_MICROFRONTEND_DATES_TAB
|
||||
from lms.djangoapps.courseware.courses import get_course_date_blocks
|
||||
from lms.djangoapps.courseware.date_summary import (
|
||||
CertificateAvailableDate,
|
||||
@@ -32,8 +34,7 @@ from lms.djangoapps.courseware.models import (
|
||||
DynamicUpgradeDeadlineConfiguration,
|
||||
OrgDynamicUpgradeDeadlineConfiguration
|
||||
)
|
||||
from lms.djangoapps.commerce.models import CommerceConfiguration
|
||||
from lms.djangoapps.course_home_api.toggles import COURSE_HOME_MICROFRONTEND, COURSE_HOME_MICROFRONTEND_DATES_TAB
|
||||
from lms.djangoapps.experiments.testutils import override_experiment_waffle_flag
|
||||
from lms.djangoapps.verify_student.models import VerificationDeadline
|
||||
from lms.djangoapps.verify_student.tests.factories import SoftwareSecurePhotoVerificationFactory
|
||||
from openedx.core.djangoapps.content.course_overviews.models import CourseOverview
|
||||
@@ -44,7 +45,10 @@ from openedx.core.djangoapps.user_api.preferences.api import set_user_preference
|
||||
from openedx.core.djangoapps.waffle_utils.testutils import override_waffle_flag
|
||||
from openedx.features.course_duration_limits.models import CourseDurationLimitConfig
|
||||
from openedx.features.course_experience import (
|
||||
RELATIVE_DATES_FLAG, DISABLE_UNIFIED_COURSE_TAB_FLAG, UPGRADE_DEADLINE_MESSAGE, CourseHomeMessages
|
||||
DISABLE_UNIFIED_COURSE_TAB_FLAG,
|
||||
RELATIVE_DATES_FLAG,
|
||||
UPGRADE_DEADLINE_MESSAGE,
|
||||
CourseHomeMessages
|
||||
)
|
||||
from student.tests.factories import TEST_PASSWORD, CourseEnrollmentFactory, UserFactory
|
||||
from xmodule.modulestore import ModuleStoreEnum
|
||||
@@ -145,7 +149,7 @@ class CourseDateSummaryTest(SharedModuleStoreTestCase):
|
||||
CourseEnrollmentFactory(course_id=course.id, user=user, mode=CourseMode.VERIFIED)
|
||||
self.assert_block_types(course, user, expected_blocks)
|
||||
|
||||
@RELATIVE_DATES_FLAG.override(active=True)
|
||||
@override_experiment_waffle_flag(RELATIVE_DATES_FLAG, active=True)
|
||||
def test_enabled_block_types_with_assignments(self): # pylint: disable=too-many-statements
|
||||
"""
|
||||
Creates a course with multiple subsections to test all of the different
|
||||
@@ -300,7 +304,7 @@ class CourseDateSummaryTest(SharedModuleStoreTestCase):
|
||||
for html_tag in assignment_title_html:
|
||||
self.assertIn(html_tag, assignment_title)
|
||||
|
||||
@RELATIVE_DATES_FLAG.override(active=True)
|
||||
@override_experiment_waffle_flag(RELATIVE_DATES_FLAG, active=True)
|
||||
@ddt.data(
|
||||
([], 3),
|
||||
([{
|
||||
@@ -366,7 +370,7 @@ class CourseDateSummaryTest(SharedModuleStoreTestCase):
|
||||
blocks = get_course_date_blocks(course, user, request, include_past_dates=True)
|
||||
self.assertEqual(len(blocks), date_block_count)
|
||||
|
||||
@RELATIVE_DATES_FLAG.override(active=True)
|
||||
@override_experiment_waffle_flag(RELATIVE_DATES_FLAG, active=True)
|
||||
def test_enabled_block_types_with_expired_course(self):
|
||||
course = create_course_run(days_till_start=-100)
|
||||
user = create_user()
|
||||
@@ -543,7 +547,7 @@ class CourseDateSummaryTest(SharedModuleStoreTestCase):
|
||||
{'weeks_to_complete': 7}, # Weeks to complete > time til end (end date shown)
|
||||
{'weeks_to_complete': 4}, # Weeks to complete < time til end (end date not shown)
|
||||
)
|
||||
@RELATIVE_DATES_FLAG.override(active=True)
|
||||
@override_experiment_waffle_flag(RELATIVE_DATES_FLAG, active=True)
|
||||
def test_course_end_date_self_paced(self, cr_details):
|
||||
"""
|
||||
In self-paced courses, the end date will now only show up if the learner
|
||||
@@ -733,7 +737,7 @@ class CourseDateSummaryTest(SharedModuleStoreTestCase):
|
||||
)
|
||||
@ddt.unpack
|
||||
@override_waffle_flag(DISABLE_UNIFIED_COURSE_TAB_FLAG, active=False)
|
||||
@RELATIVE_DATES_FLAG.override(active=True)
|
||||
@override_experiment_waffle_flag(RELATIVE_DATES_FLAG, active=True)
|
||||
def test_dates_tab_link_render(self, url_name, mfe_active):
|
||||
""" The dates tab link should only show for enrolled or staff users """
|
||||
course = create_course_run()
|
||||
@@ -751,7 +755,7 @@ class CourseDateSummaryTest(SharedModuleStoreTestCase):
|
||||
def assert_html_elements(assert_function, user):
|
||||
self.client.login(username=user.username, password=TEST_PASSWORD)
|
||||
if mfe_active:
|
||||
with COURSE_HOME_MICROFRONTEND.override(active=True), \
|
||||
with override_experiment_waffle_flag(COURSE_HOME_MICROFRONTEND, active=True), \
|
||||
COURSE_HOME_MICROFRONTEND_DATES_TAB.override(active=True):
|
||||
response = self.client.get(url, follow=True)
|
||||
else:
|
||||
|
||||
@@ -11,17 +11,10 @@ import unittest
|
||||
from datetime import datetime, timedelta
|
||||
from uuid import uuid4
|
||||
|
||||
import ddt
|
||||
import six
|
||||
from markupsafe import escape
|
||||
from mock import MagicMock, PropertyMock, call, create_autospec, patch
|
||||
from pytz import UTC, utc
|
||||
from six import text_type
|
||||
from six.moves import range
|
||||
from six.moves.urllib.parse import quote, urlencode
|
||||
|
||||
from completion.test_utils import CompletionWaffleTestMixin
|
||||
from crum import set_current_request
|
||||
import ddt
|
||||
from django.conf import settings
|
||||
from django.contrib.auth.models import AnonymousUser
|
||||
from django.http import Http404, HttpResponseBadRequest
|
||||
@@ -30,17 +23,24 @@ from django.test.client import Client
|
||||
from django.test.utils import override_settings
|
||||
from django.urls import reverse, reverse_lazy
|
||||
from freezegun import freeze_time
|
||||
from markupsafe import escape
|
||||
from milestones.tests.utils import MilestonesTestCaseMixin
|
||||
from mock import MagicMock, PropertyMock, call, create_autospec, patch
|
||||
from opaque_keys.edx.keys import CourseKey, UsageKey
|
||||
from opaque_keys.edx.locator import BlockUsageLocator, CourseLocator
|
||||
from pytz import UTC, utc
|
||||
from six import text_type
|
||||
from six.moves import range
|
||||
from six.moves.urllib.parse import quote, urlencode
|
||||
from web_fragments.fragment import Fragment
|
||||
from xblock.core import XBlock
|
||||
from xblock.fields import Scope, String
|
||||
import lms.djangoapps.courseware.views.views as views
|
||||
|
||||
import lms.djangoapps.courseware.views.views as views
|
||||
from capa.tests.response_xml_factory import MultipleChoiceResponseXMLFactory
|
||||
from course_modes.models import CourseMode
|
||||
from course_modes.tests.factories import CourseModeFactory
|
||||
from edx_toggles.toggles.testutils import override_waffle_flag
|
||||
from lms.djangoapps.certificates import api as certs_api
|
||||
from lms.djangoapps.certificates.models import (
|
||||
CertificateGenerationConfiguration,
|
||||
@@ -63,6 +63,7 @@ from lms.djangoapps.courseware.toggles import (
|
||||
from lms.djangoapps.courseware.url_helpers import get_microfrontend_url, get_redirect_url
|
||||
from lms.djangoapps.courseware.user_state_client import DjangoXBlockUserStateClient
|
||||
from lms.djangoapps.courseware.views.index import show_courseware_mfe_link
|
||||
from lms.djangoapps.experiments.testutils import override_experiment_waffle_flag
|
||||
from lms.djangoapps.grades.config.waffle import ASSUME_ZERO_GRADE_IF_ABSENT
|
||||
from lms.djangoapps.grades.config.waffle import waffle as grades_waffle
|
||||
from lms.djangoapps.verify_student.models import VerificationDeadline
|
||||
@@ -1445,7 +1446,7 @@ class ProgressPageTests(ProgressPageBaseTests):
|
||||
def test_progress_queries(self, enable_waffle, initial, subsequent):
|
||||
ContentTypeGatingConfig.objects.create(enabled=True, enabled_as_of=datetime(2018, 1, 1))
|
||||
self.setup_course()
|
||||
with grades_waffle().override(ASSUME_ZERO_GRADE_IF_ABSENT, active=enable_waffle):
|
||||
with override_waffle_flag(ASSUME_ZERO_GRADE_IF_ABSENT, active=enable_waffle):
|
||||
with self.assertNumQueries(
|
||||
initial, table_blacklist=QUERY_COUNT_TABLE_BLACKLIST
|
||||
), check_mongo_calls(1):
|
||||
@@ -3135,7 +3136,7 @@ class DatesTabTestCase(ModuleStoreTestCase):
|
||||
response = self._get_response(self.course)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
@RELATIVE_DATES_FLAG.override(active=True)
|
||||
@override_experiment_waffle_flag(RELATIVE_DATES_FLAG, active=True)
|
||||
@patch('edx_django_utils.monitoring.set_custom_attribute')
|
||||
def test_defaults(self, mock_set_custom_attribute):
|
||||
enrollment = CourseEnrollmentFactory(course_id=self.course.id, user=self.user, mode=CourseMode.VERIFIED)
|
||||
@@ -3196,7 +3197,7 @@ class DatesTabTestCase(ModuleStoreTestCase):
|
||||
# Make sure the assignment type is rendered
|
||||
self.assertContains(response, 'Homework:')
|
||||
|
||||
@RELATIVE_DATES_FLAG.override(active=True)
|
||||
@override_experiment_waffle_flag(RELATIVE_DATES_FLAG, active=True)
|
||||
def test_reset_deadlines_banner_displays(self):
|
||||
CourseEnrollmentFactory(course_id=self.course.id, user=self.user, mode=CourseMode.VERIFIED)
|
||||
now = datetime.now(utc)
|
||||
@@ -3250,7 +3251,7 @@ class TestShowCoursewareMFE(TestCase):
|
||||
)
|
||||
for user, course_key, is_course_staff, preview_active, redirect_active in combos:
|
||||
with override_waffle_flag(COURSEWARE_MICROFRONTEND_COURSE_TEAM_PREVIEW, preview_active):
|
||||
with REDIRECT_TO_COURSEWARE_MICROFRONTEND.override(active=redirect_active):
|
||||
with override_experiment_waffle_flag(REDIRECT_TO_COURSEWARE_MICROFRONTEND, active=redirect_active):
|
||||
assert show_courseware_mfe_link(user, is_course_staff, course_key) is False
|
||||
|
||||
@patch.dict(settings.FEATURES, {'ENABLE_COURSEWARE_MICROFRONTEND': True})
|
||||
@@ -3270,14 +3271,14 @@ class TestShowCoursewareMFE(TestCase):
|
||||
)
|
||||
for user, is_course_staff, preview_active, redirect_active in old_mongo_combos:
|
||||
with override_waffle_flag(COURSEWARE_MICROFRONTEND_COURSE_TEAM_PREVIEW, preview_active):
|
||||
with REDIRECT_TO_COURSEWARE_MICROFRONTEND.override(active=redirect_active):
|
||||
with override_experiment_waffle_flag(REDIRECT_TO_COURSEWARE_MICROFRONTEND, active=redirect_active):
|
||||
assert show_courseware_mfe_link(user, is_course_staff, old_course_key) is False
|
||||
|
||||
# We've checked all old-style course keys now, so we can test only the
|
||||
# new ones going forward. Now we check combinations of waffle flags and
|
||||
# user permissions...
|
||||
with override_waffle_flag(COURSEWARE_MICROFRONTEND_COURSE_TEAM_PREVIEW, True):
|
||||
with REDIRECT_TO_COURSEWARE_MICROFRONTEND.override(active=True):
|
||||
with override_experiment_waffle_flag(REDIRECT_TO_COURSEWARE_MICROFRONTEND, active=True):
|
||||
# (preview=on, redirect=on)
|
||||
# Global and Course Staff can see the link.
|
||||
self.assertTrue(show_courseware_mfe_link(global_staff_user, True, new_course_key))
|
||||
@@ -3286,7 +3287,7 @@ class TestShowCoursewareMFE(TestCase):
|
||||
|
||||
# Regular users don't see the link.
|
||||
self.assertFalse(show_courseware_mfe_link(regular_user, False, new_course_key))
|
||||
with REDIRECT_TO_COURSEWARE_MICROFRONTEND.override(active=False):
|
||||
with override_experiment_waffle_flag(REDIRECT_TO_COURSEWARE_MICROFRONTEND, active=False):
|
||||
# (preview=on, redirect=off)
|
||||
# Global and Course Staff can see the link.
|
||||
self.assertTrue(show_courseware_mfe_link(global_staff_user, True, new_course_key))
|
||||
@@ -3297,7 +3298,7 @@ class TestShowCoursewareMFE(TestCase):
|
||||
self.assertFalse(show_courseware_mfe_link(regular_user, False, new_course_key))
|
||||
|
||||
with override_waffle_flag(COURSEWARE_MICROFRONTEND_COURSE_TEAM_PREVIEW, False):
|
||||
with REDIRECT_TO_COURSEWARE_MICROFRONTEND.override(active=True):
|
||||
with override_experiment_waffle_flag(REDIRECT_TO_COURSEWARE_MICROFRONTEND, active=True):
|
||||
# (preview=off, redirect=on)
|
||||
# Global staff see the link anyway
|
||||
self.assertTrue(show_courseware_mfe_link(global_staff_user, True, new_course_key))
|
||||
@@ -3309,7 +3310,7 @@ class TestShowCoursewareMFE(TestCase):
|
||||
|
||||
# Regular users don't see the link.
|
||||
self.assertFalse(show_courseware_mfe_link(regular_user, False, new_course_key))
|
||||
with REDIRECT_TO_COURSEWARE_MICROFRONTEND.override(active=False):
|
||||
with override_experiment_waffle_flag(REDIRECT_TO_COURSEWARE_MICROFRONTEND, active=False):
|
||||
# (preview=off, redirect=off)
|
||||
# Global staff see the link anyway
|
||||
self.assertTrue(show_courseware_mfe_link(global_staff_user, True, new_course_key))
|
||||
@@ -3368,7 +3369,7 @@ class MFERedirectTests(BaseViewsTestCase):
|
||||
# learners will be redirected when the waffle flag is set
|
||||
lms_url, mfe_url = self._get_urls()
|
||||
|
||||
with REDIRECT_TO_COURSEWARE_MICROFRONTEND.override(active=True):
|
||||
with override_experiment_waffle_flag(REDIRECT_TO_COURSEWARE_MICROFRONTEND, active=True):
|
||||
assert self.client.get(lms_url).url == mfe_url
|
||||
|
||||
def test_staff_no_redirect(self):
|
||||
@@ -3380,14 +3381,14 @@ class MFERedirectTests(BaseViewsTestCase):
|
||||
self.client.login(username=course_staff.username, password='test')
|
||||
|
||||
assert self.client.get(lms_url).status_code == 200
|
||||
with REDIRECT_TO_COURSEWARE_MICROFRONTEND.override(active=True):
|
||||
with override_experiment_waffle_flag(REDIRECT_TO_COURSEWARE_MICROFRONTEND, active=True):
|
||||
assert self.client.get(lms_url).status_code == 200
|
||||
|
||||
# global staff will never be redirected
|
||||
self._create_global_staff_user()
|
||||
assert self.client.get(lms_url).status_code == 200
|
||||
|
||||
with REDIRECT_TO_COURSEWARE_MICROFRONTEND.override(active=True):
|
||||
with override_experiment_waffle_flag(REDIRECT_TO_COURSEWARE_MICROFRONTEND, active=True):
|
||||
assert self.client.get(lms_url).status_code == 200
|
||||
|
||||
def test_exam_no_redirect(self):
|
||||
@@ -3397,5 +3398,5 @@ class MFERedirectTests(BaseViewsTestCase):
|
||||
|
||||
lms_url, mfe_url = self._get_urls()
|
||||
|
||||
with REDIRECT_TO_COURSEWARE_MICROFRONTEND.override(active=True):
|
||||
with override_experiment_waffle_flag(REDIRECT_TO_COURSEWARE_MICROFRONTEND, active=True):
|
||||
assert self.client.get(lms_url).status_code == 200
|
||||
|
||||
Reference in New Issue
Block a user