Commit 3b9cd02b by Julia Hansbrough

response to cr

parent 5aa1b231
...@@ -212,7 +212,6 @@ class OrderItem(models.Model): ...@@ -212,7 +212,6 @@ class OrderItem(models.Model):
refund_requested_time = models.DateTimeField(null=True) refund_requested_time = models.DateTimeField(null=True)
# general purpose field, not user-visible. Used for reporting # general purpose field, not user-visible. Used for reporting
report_comments = models.TextField(default="") report_comments = models.TextField(default="")
refund_requested_time = models.DateTimeField(null=True)
@property @property
def line_cost(self): def line_cost(self):
......
...@@ -434,7 +434,7 @@ class CertificateItemTest(ModuleStoreTestCase): ...@@ -434,7 +434,7 @@ class CertificateItemTest(ModuleStoreTestCase):
self.mock_get_current_request.return_value = sentinel.request self.mock_get_current_request.return_value = sentinel.request
def test_existing_enrollment(self): def test_existing_enrollment(self):
enrollment = CourseEnrollment.enroll(self.user, self.course_id) CourseEnrollment.enroll(self.user, self.course_id)
cart = Order.get_cart_for_user(user=self.user) cart = Order.get_cart_for_user(user=self.user)
CertificateItem.add_to_order(cart, self.course_id, self.cost, 'verified') CertificateItem.add_to_order(cart, self.course_id, self.cost, 'verified')
# verify that we are still enrolled # verify that we are still enrolled
...@@ -444,19 +444,6 @@ class CertificateItemTest(ModuleStoreTestCase): ...@@ -444,19 +444,6 @@ class CertificateItemTest(ModuleStoreTestCase):
enrollment = CourseEnrollment.objects.get(user=self.user, course_id=self.course_id) enrollment = CourseEnrollment.objects.get(user=self.user, course_id=self.course_id)
self.assertEquals(enrollment.mode, u'verified') self.assertEquals(enrollment.mode, u'verified')
def assert_upgrade_event_was_emitted(self, user, course_id):
""" Helper function; checks that a particular was called only once """
self.mock_server_track.assert_called_once_with(
sentinel.request,
'edx.course.enrollment.upgrade.succeeded',
{
'course_id': course_id,
'user_id': user.pk,
'mode': 'honor'
}
)
self.mock_server_track.reset_mock()
def test_single_item_template(self): def test_single_item_template(self):
cart = Order.get_cart_for_user(user=self.user) cart = Order.get_cart_for_user(user=self.user)
cert_item = CertificateItem.add_to_order(cart, self.course_id, self.cost, 'verified') cert_item = CertificateItem.add_to_order(cart, self.course_id, self.cost, 'verified')
......
...@@ -20,7 +20,7 @@ from student.models import CourseEnrollment ...@@ -20,7 +20,7 @@ from student.models import CourseEnrollment
from course_modes.models import CourseMode from course_modes.models import CourseMode
from edxmako.shortcuts import render_to_response from edxmako.shortcuts import render_to_response
from shoppingcart.processors import render_purchase_form_html from shoppingcart.processors import render_purchase_form_html
from mock import patch, Mock from mock import patch, Mock, sentinel
def mock_render_purchase_form_html(*args, **kwargs): def mock_render_purchase_form_html(*args, **kwargs):
...@@ -39,6 +39,8 @@ postpay_mock = Mock() ...@@ -39,6 +39,8 @@ postpay_mock = Mock()
@override_settings(MODULESTORE=TEST_DATA_MONGO_MODULESTORE) @override_settings(MODULESTORE=TEST_DATA_MONGO_MODULESTORE)
class ShoppingCartViewsTests(ModuleStoreTestCase): class ShoppingCartViewsTests(ModuleStoreTestCase):
def setUp(self): def setUp(self):
patcher = patch('student.models.server_track')
self.mock_server_track = patcher.start()
self.user = UserFactory.create() self.user = UserFactory.create()
self.user.set_password('password') self.user.set_password('password')
self.user.save() self.user.save()
...@@ -204,6 +206,56 @@ class ShoppingCartViewsTests(ModuleStoreTestCase): ...@@ -204,6 +206,56 @@ class ShoppingCartViewsTests(ModuleStoreTestCase):
self.assertFalse(context['any_refunds']) self.assertFalse(context['any_refunds'])
@patch('shoppingcart.views.render_to_response', render_mock) @patch('shoppingcart.views.render_to_response', render_mock)
def test_show_receipt_success_with_upgrade(self):
reg_item = PaidCourseRegistration.add_to_order(self.cart, self.course_id)
cert_item = CertificateItem.add_to_order(self.cart, self.verified_course_id, self.cost, 'honor')
self.cart.purchase(first='FirstNameTesting123', street1='StreetTesting123')
self.login_user()
# When we come from the upgrade flow, we'll have a session variable showing that
s = self.client.session
s['attempting_upgrade'] = True
s.save()
self.mock_server_track.reset_mock()
resp = self.client.get(reverse('shoppingcart.views.show_receipt', args=[self.cart.id]))
# Once they've upgraded, they're no longer *attempting* to upgrade
attempting_upgrade = self.client.session.get('attempting_upgrade', False)
self.assertFalse(attempting_upgrade)
self.assertEqual(resp.status_code, 200)
self.assertIn('FirstNameTesting123', resp.content)
self.assertIn('80.00', resp.content)
((template, context), _) = render_mock.call_args
# When we come from the upgrade flow, we get these context variables
self.assertEqual(template, 'shoppingcart/receipt.html')
self.assertEqual(context['order'], self.cart)
self.assertIn(reg_item, context['order_items'])
self.assertIn(cert_item, context['order_items'])
self.assertFalse(context['any_refunds'])
course_enrollment = CourseEnrollment.get_or_create_enrollment(self.user, self.course_id)
course_enrollment.emit_event('edx.course.enrollment.upgrade.succeeded')
self.mock_server_track.assert_any_call(
None,
'edx.course.enrollment.upgrade.succeeded',
{
'user_id': course_enrollment.user.id,
'course_id': course_enrollment.course_id,
'mode': course_enrollment.mode
}
)
self.mock_server_track.reset_mock()
@patch('shoppingcart.views.render_to_response', render_mock)
def test_show_receipt_success_refund(self): def test_show_receipt_success_refund(self):
reg_item = PaidCourseRegistration.add_to_order(self.cart, self.course_id) reg_item = PaidCourseRegistration.add_to_order(self.cart, self.course_id)
cert_item = CertificateItem.add_to_order(self.cart, self.verified_course_id, self.cost, 'honor') cert_item = CertificateItem.add_to_order(self.cart, self.verified_course_id, self.cost, 'honor')
......
...@@ -102,7 +102,6 @@ def show_receipt(request, ordernum): ...@@ -102,7 +102,6 @@ def show_receipt(request, ordernum):
Displays a receipt for a particular order. Displays a receipt for a particular order.
404 if order is not yet purchased or request.user != order.user 404 if order is not yet purchased or request.user != order.user
""" """
try: try:
order = Order.objects.get(id=ordernum) order = Order.objects.get(id=ordernum)
except Order.DoesNotExist: except Order.DoesNotExist:
...@@ -128,9 +127,10 @@ def show_receipt(request, ordernum): ...@@ -128,9 +127,10 @@ def show_receipt(request, ordernum):
receipt_template = order_items[0].single_item_receipt_template receipt_template = order_items[0].single_item_receipt_template
context.update(order_items[0].single_item_receipt_context) context.update(order_items[0].single_item_receipt_context)
# Only orders where order_items.count() == 1 might be attempting to upgrade
attempting_upgrade = request.session.get('attempting_upgrade', False) attempting_upgrade = request.session.get('attempting_upgrade', False)
if attempting_upgrade: if attempting_upgrade:
course_enrollment = CourseEnrollment.get_or_create_enrollment(request.user, context['course_id']) course_enrollment = CourseEnrollment.get_or_create_enrollment(request.user, order_items[0].course_id)
course_enrollment.emit_event(EVENT_NAME_USER_UPGRADED) course_enrollment.emit_event(EVENT_NAME_USER_UPGRADED)
request.session['attempting_upgrade'] = False request.session['attempting_upgrade'] = False
......
...@@ -29,13 +29,11 @@ ...@@ -29,13 +29,11 @@
Logger.log('edx.course.enrollment.upgrade.clicked', [user, course], null); Logger.log('edx.course.enrollment.upgrade.clicked', [user, course], null);
% if waffle.flag_is_active(request, 'alternate_upsell_copy'): % if waffle.flag_is_active(request, 'alternate_upsell_copy'):
analytics.track("Clicked on Alternate Upsell Copy", { analytics.track("Clicked on Alternate Upsell Copy", {
course: course, course: course
user: user
}); });
% else: % else:
analytics.track("Clicked on Regular Upsell Copy", { analytics.track("Clicked on Regular Upsell Copy", {
course: course, course: course
user: user
}); });
% endif % endif
}); });
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment