Skip to content

Commit

Permalink
test: add test cases in progress
Browse files Browse the repository at this point in the history
  • Loading branch information
varshamenon4 committed Dec 18, 2024
1 parent 24ba4e6 commit 4f6acf6
Show file tree
Hide file tree
Showing 2 changed files with 75 additions and 75 deletions.
7 changes: 4 additions & 3 deletions learning_assistant/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@
from edx_django_utils.cache import get_cache_key
from jinja2 import BaseLoader, Environment
from opaque_keys import InvalidKeyError
from pytz import utc

try:
from common.djangoapps.course_modes.models import CourseMode
Expand Down Expand Up @@ -323,12 +322,14 @@ def audit_trial_is_expired(enrollment, audit_trial_data):
* audit_trial_is_expired (boolean): whether the audit trial is expired
"""
upgrade_deadline = enrollment.upgrade_deadline
# todo: remove this log
log.error(upgrade_deadline)

# If the upgrade deadline has passed, return True for expired. Upgrade deadline is an optional attribute of a
# CourseMode, so if it's None, then do not return True.
days_until_upgrade_deadline = datetime.now(utc) - upgrade_deadline if upgrade_deadline else None
days_until_upgrade_deadline = datetime.now(tz=None) - upgrade_deadline if upgrade_deadline else None
if days_until_upgrade_deadline is not None and days_until_upgrade_deadline >= timedelta(days=0):
return True

# If the user's trial is past its expiry date, return True for expired. Else, return False.
return audit_trial_data is None or audit_trial_data.expiration_date <= datetime.now(utc)
return audit_trial_data is None or audit_trial_data.expiration_date <= datetime.now(tz=None)
143 changes: 71 additions & 72 deletions tests/test_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -599,12 +599,11 @@ def setUp(self):
self.upgrade_deadline = datetime.now() + timedelta(days=1) # 1 day from now

@freeze_time('2024-01-01')
@patch('learning_assistant.api.CourseMode')
def test_upgrade_deadline_expired(self, mock_course_mode):

mock_mode = MagicMock()
mock_mode.expiration_datetime.return_value = datetime.now() - timedelta(days=1) # yesterday
mock_course_mode.objects.get.return_value = mock_mode
@patch('learning_assistant.api.CourseEnrollment')
def test_upgrade_deadline_expired(self, mock_course_enrollment):
# mock_enrollment = MagicMock(upgrade_deadline=)
mock_course_enrollment.return_value.upgrade_deadline.return_value = datetime.now() - timedelta(days=1) # yesterday
# mock_course_enrollment = mock_enrollment

start_date = datetime.now()
audit_trial_data = LearningAssistantAuditTrialData(
Expand All @@ -613,69 +612,69 @@ def test_upgrade_deadline_expired(self, mock_course_mode):
expiration_date=start_date + timedelta(days=settings.LEARNING_ASSISTANT_AUDIT_TRIAL_LENGTH_DAYS),
)

self.assertEqual(audit_trial_is_expired(audit_trial_data, self.course_key), True)

@freeze_time('2024-01-01')
@patch('learning_assistant.api.CourseMode')
def test_upgrade_deadline_none(self, mock_course_mode):

mock_mode = MagicMock()
mock_mode.expiration_datetime.return_value = None
mock_course_mode.objects.get.return_value = mock_mode

# Verify that the audit trial data is considered when determing whether an audit trial is expired and not the
# upgrade deadline.
start_date = datetime.now()
audit_trial_data = LearningAssistantAuditTrialData(
user_id=self.user.id,
start_date=start_date,
expiration_date=start_date + timedelta(days=settings.LEARNING_ASSISTANT_AUDIT_TRIAL_LENGTH_DAYS),
)

self.assertEqual(audit_trial_is_expired(audit_trial_data, self.course_key), False)

start_date = datetime.now() - timedelta(days=settings.LEARNING_ASSISTANT_AUDIT_TRIAL_LENGTH_DAYS + 1)
audit_trial_data = LearningAssistantAuditTrialData(
user_id=self.user.id,
start_date=start_date,
expiration_date=start_date + timedelta(days=settings.LEARNING_ASSISTANT_AUDIT_TRIAL_LENGTH_DAYS),
)

self.assertEqual(audit_trial_is_expired(audit_trial_data, self.course_key), True)

@ddt.data(
# exactly the trial deadline
datetime(year=2024, month=1, day=1) - timedelta(days=settings.LEARNING_ASSISTANT_AUDIT_TRIAL_LENGTH_DAYS),
# 1 day more than trial deadline
datetime(year=2024, month=1, day=1) - timedelta(days=settings.LEARNING_ASSISTANT_AUDIT_TRIAL_LENGTH_DAYS + 1),
)
@freeze_time('2024-01-01')
@patch('learning_assistant.api.CourseMode')
def test_audit_trial_expired(self, start_date, mock_course_mode):
mock_mode = MagicMock()
mock_mode.expiration_datetime.return_value = datetime.now() + timedelta(days=1) # tomorrow
mock_course_mode.objects.get.return_value = mock_mode

audit_trial_data = LearningAssistantAuditTrialData(
user_id=self.user.id,
start_date=start_date,
expiration_date=get_audit_trial_expiration_date(start_date),
)

self.assertEqual(audit_trial_is_expired(audit_trial_data, self.upgrade_deadline), True)

@freeze_time('2024-01-01')
@patch('learning_assistant.api.CourseMode')
def test_audit_trial_unexpired(self, mock_course_mode):
mock_mode = MagicMock()
mock_mode.expiration_datetime.return_value = datetime.now() + timedelta(days=1) # tomorrow
mock_course_mode.objects.get.return_value = mock_mode

start_date = datetime.now() - timedelta(days=settings.LEARNING_ASSISTANT_AUDIT_TRIAL_LENGTH_DAYS - 1)
audit_trial_data = LearningAssistantAuditTrialData(
user_id=self.user.id,
start_date=start_date,
expiration_date=get_audit_trial_expiration_date(start_date),
)

self.assertEqual(audit_trial_is_expired(audit_trial_data, self.upgrade_deadline), False)
self.assertEqual(audit_trial_is_expired(mock_course_enrollment, audit_trial_data), True)

# @freeze_time('2024-01-01')
# @patch('learning_assistant.api.CourseMode')
# def test_upgrade_deadline_none(self, mock_course_mode):
#
# mock_mode = MagicMock()
# mock_mode.expiration_datetime.return_value = None
# mock_course_mode.objects.get.return_value = mock_mode
#
# # Verify that the audit trial data is considered when determing whether an audit trial is expired and not the
# # upgrade deadline.
# start_date = datetime.now()
# audit_trial_data = LearningAssistantAuditTrialData(
# user_id=self.user.id,
# start_date=start_date,
# expiration_date=start_date + timedelta(days=settings.LEARNING_ASSISTANT_AUDIT_TRIAL_LENGTH_DAYS),
# )
#
# self.assertEqual(audit_trial_is_expired(audit_trial_data, self.course_key), False)
#
# start_date = datetime.now() - timedelta(days=settings.LEARNING_ASSISTANT_AUDIT_TRIAL_LENGTH_DAYS + 1)
# audit_trial_data = LearningAssistantAuditTrialData(
# user_id=self.user.id,
# start_date=start_date,
# expiration_date=start_date + timedelta(days=settings.LEARNING_ASSISTANT_AUDIT_TRIAL_LENGTH_DAYS),
# )
#
# self.assertEqual(audit_trial_is_expired(audit_trial_data, self.course_key), True)
#
# @ddt.data(
# # exactly the trial deadline
# datetime(year=2024, month=1, day=1) - timedelta(days=settings.LEARNING_ASSISTANT_AUDIT_TRIAL_LENGTH_DAYS),
# # 1 day more than trial deadline
# datetime(year=2024, month=1, day=1) - timedelta(days=settings.LEARNING_ASSISTANT_AUDIT_TRIAL_LENGTH_DAYS + 1),
# )
# @freeze_time('2024-01-01')
# @patch('learning_assistant.api.CourseMode')
# def test_audit_trial_expired(self, start_date, mock_course_mode):
# mock_mode = MagicMock()
# mock_mode.expiration_datetime.return_value = datetime.now() + timedelta(days=1) # tomorrow
# mock_course_mode.objects.get.return_value = mock_mode
#
# audit_trial_data = LearningAssistantAuditTrialData(
# user_id=self.user.id,
# start_date=start_date,
# expiration_date=get_audit_trial_expiration_date(start_date),
# )
#
# self.assertEqual(audit_trial_is_expired(audit_trial_data, self.upgrade_deadline), True)
#
# @freeze_time('2024-01-01')
# @patch('learning_assistant.api.CourseMode')
# def test_audit_trial_unexpired(self, mock_course_mode):
# mock_mode = MagicMock()
# mock_mode.expiration_datetime.return_value = datetime.now() + timedelta(days=1) # tomorrow
# mock_course_mode.objects.get.return_value = mock_mode
#
# start_date = datetime.now() - timedelta(days=settings.LEARNING_ASSISTANT_AUDIT_TRIAL_LENGTH_DAYS - 1)
# audit_trial_data = LearningAssistantAuditTrialData(
# user_id=self.user.id,
# start_date=start_date,
# expiration_date=get_audit_trial_expiration_date(start_date),
# )
#
# self.assertEqual(audit_trial_is_expired(audit_trial_data, self.upgrade_deadline), False)

0 comments on commit 4f6acf6

Please sign in to comment.