never give users discount unless they've seen the banner
This commit is contained in:
@@ -36,7 +36,7 @@ from lms.djangoapps.courseware.tests.factories import (
|
||||
)
|
||||
from lms.djangoapps.discussion.django_comment_client.tests.factories import RoleFactory
|
||||
from openedx.features.discounts.applicability import get_discount_expiration_date
|
||||
from openedx.features.discounts.utils import format_strikeout_price
|
||||
from openedx.features.discounts.utils import format_strikeout_price, REV1008_EXPERIMENT_ID
|
||||
from openedx.core.djangoapps.content.course_overviews.models import CourseOverview
|
||||
from openedx.core.djangoapps.dark_lang.models import DarkLangConfig
|
||||
from openedx.core.djangoapps.django_comment_common.models import (
|
||||
@@ -431,6 +431,10 @@ class TestCourseHomePageAccess(CourseHomePageTestCase):
|
||||
can_receive_discount_mock.return_value = applicability
|
||||
discount_percentage_mock.return_value = percentage
|
||||
user = self.create_user_for_course(self.course, CourseUserType.ENROLLED)
|
||||
now_time = datetime.now(tz=UTC).strftime(u"%Y-%m-%d %H:%M:%S%z")
|
||||
ExperimentData.objects.create(
|
||||
user=user, experiment_id=REV1008_EXPERIMENT_ID, key=str(self.course), value=now_time
|
||||
)
|
||||
self.client.login(username=user.username, password=self.TEST_PASSWORD)
|
||||
url = course_home_url(self.course)
|
||||
response = self.client.get(url)
|
||||
|
||||
@@ -69,26 +69,7 @@ def get_discount_expiration_date(user, course):
|
||||
saw_banner = ExperimentData.objects.get(user=user, experiment_id=REV1008_EXPERIMENT_ID, key=str(course))
|
||||
time_limit_start = parse_datetime(saw_banner.value)
|
||||
except ExperimentData.DoesNotExist:
|
||||
pass
|
||||
|
||||
if not time_limit_start:
|
||||
enrollment = course_enrollment.first()
|
||||
try:
|
||||
# Content availability date is equivalent to max(enrollment date, course start date)
|
||||
# for most people. Using the schedule date will provide flexibility to deal with
|
||||
# more complex business rules in the future.
|
||||
content_availability_date = enrollment.schedule.start
|
||||
# We have anecdotally observed a case where the schedule.start was
|
||||
# equal to the course start, but should have been equal to the enrollment start
|
||||
# https://openedx.atlassian.net/browse/PROD-58
|
||||
# This section is meant to address that case
|
||||
if enrollment.created and course.start:
|
||||
if (content_availability_date.date() == course.start.date() and
|
||||
course.start < enrollment.created < timezone.now()):
|
||||
content_availability_date = enrollment.created
|
||||
except CourseEnrollment.schedule.RelatedObjectDoesNotExist:
|
||||
content_availability_date = max(enrollment.created, course.start)
|
||||
time_limit_start = content_availability_date
|
||||
return None
|
||||
|
||||
discount_expiration_date = time_limit_start + timedelta(weeks=1)
|
||||
|
||||
|
||||
@@ -15,9 +15,11 @@ from course_modes.models import CourseMode
|
||||
from course_modes.tests.factories import CourseModeFactory
|
||||
from enterprise.models import EnterpriseCustomer, EnterpriseCustomerUser
|
||||
from entitlements.tests.factories import CourseEntitlementFactory
|
||||
from experiments.models import ExperimentData
|
||||
from openedx.core.djangoapps.content.course_overviews.models import CourseOverview
|
||||
from openedx.core.djangoapps.waffle_utils.testutils import override_waffle_flag
|
||||
from openedx.features.discounts.models import DiscountRestrictionConfig
|
||||
from openedx.features.discounts.utils import REV1008_EXPERIMENT_ID
|
||||
from student.tests.factories import CourseEnrollmentFactory, UserFactory
|
||||
from xmodule.modulestore.tests.django_utils import ModuleStoreTestCase
|
||||
from xmodule.modulestore.tests.factories import CourseFactory
|
||||
@@ -38,6 +40,10 @@ class TestApplicability(ModuleStoreTestCase):
|
||||
self.user = UserFactory.create()
|
||||
self.course = CourseFactory.create(run='test', display_name='test')
|
||||
CourseModeFactory.create(course_id=self.course.id, mode_slug='verified')
|
||||
now_time = datetime.now(tz=pytz.UTC).strftime(u"%Y-%m-%d %H:%M:%S%z")
|
||||
ExperimentData.objects.create(
|
||||
user=self.user, experiment_id=REV1008_EXPERIMENT_ID, key=str(self.course), value=now_time
|
||||
)
|
||||
|
||||
holdback_patcher = patch('openedx.features.discounts.applicability._is_in_holdback', return_value=False)
|
||||
self.mock_holdback = holdback_patcher.start()
|
||||
|
||||
Reference in New Issue
Block a user