Merge branch 'release'

This commit is contained in:
Sarina Canelake
2014-06-11 21:30:05 -04:00
12 changed files with 133 additions and 26 deletions

View File

@@ -1,5 +1,6 @@
from course_modes.models import CourseMode
from factory.django import DjangoModelFactory
from xmodule.modulestore.locations import SlashSeparatedCourseKey
# Factories don't have __init__ methods, and are self documenting
@@ -7,9 +8,10 @@ from factory.django import DjangoModelFactory
class CourseModeFactory(DjangoModelFactory):
FACTORY_FOR = CourseMode
course_id = u'MITx/999/Robot_Super_Course'
course_id = SlashSeparatedCourseKey('MITx', '999', 'Robot_Super_Course')
mode_slug = 'audit'
mode_display_name = 'audit course'
min_price = 0
currency = 'usd'
expiration_datetime = None
suggested_prices = ''

View File

@@ -0,0 +1,100 @@
import ddt
import unittest
from django.test import TestCase
from django.conf import settings
from django.core.urlresolvers import reverse
from mock import patch, Mock
from course_modes.tests.factories import CourseModeFactory
from student.tests.factories import CourseEnrollmentFactory, UserFactory
from xmodule.modulestore.locations import SlashSeparatedCourseKey
@ddt.ddt
class CourseModeViewTest(TestCase):
def setUp(self):
self.course_id = SlashSeparatedCourseKey('org', 'course', 'run')
for mode in ('audit', 'verified', 'honor'):
CourseModeFactory(mode_slug=mode, course_id=self.course_id)
@unittest.skipUnless(settings.ROOT_URLCONF == 'lms.urls', 'Test only valid in lms')
@ddt.data(
# is_active?, enrollment_mode, upgrade?, redirect?
(True, 'verified', True, True), # User is already verified
(True, 'verified', False, True), # User is already verified
(True, 'honor', True, False), # User isn't trying to upgrade
(True, 'honor', False, True), # User is trying to upgrade
(True, 'audit', True, False), # User isn't trying to upgrade
(True, 'audit', False, True), # User is trying to upgrade
(False, 'verified', True, False), # User isn't active
(False, 'verified', False, False), # User isn't active
(False, 'honor', True, False), # User isn't active
(False, 'honor', False, False), # User isn't active
(False, 'audit', True, False), # User isn't active
(False, 'audit', False, False), # User isn't active
)
@ddt.unpack
@patch('course_modes.views.modulestore', Mock())
def test_reregister_redirect(self, is_active, enrollment_mode, upgrade, redirect):
enrollment = CourseEnrollmentFactory(
is_active=is_active,
mode=enrollment_mode,
course_id=self.course_id
)
self.client.login(
username=enrollment.user.username,
password='test'
)
if upgrade:
get_params = {'upgrade': True}
else:
get_params = {}
response = self.client.get(
reverse('course_modes_choose', args=[self.course_id.to_deprecated_string()]),
get_params,
follow=False,
)
if redirect:
self.assertEquals(response.status_code, 302)
self.assertTrue(response['Location'].endswith(reverse('dashboard')))
else:
self.assertEquals(response.status_code, 200)
# TODO: Fix it so that response.templates works w/ mako templates, and then assert
# that the right template rendered
@unittest.skipUnless(settings.ROOT_URLCONF == 'lms.urls', 'Test only valid in lms')
@ddt.data(
'',
'1,,2',
'1, ,2',
'1, 2, 3'
)
@patch('course_modes.views.modulestore', Mock())
def test_suggested_prices(self, price_list):
course_id = SlashSeparatedCourseKey('org', 'course', 'price_course')
user = UserFactory()
for mode in ('audit', 'honor'):
CourseModeFactory(mode_slug=mode, course_id=course_id)
CourseModeFactory(mode_slug='verified', course_id=course_id, suggested_prices=price_list)
self.client.login(
username=user.username,
password='test'
)
response = self.client.get(
reverse('course_modes_choose', args=[self.course_id.to_deprecated_string()]),
follow=False,
)
self.assertEquals(response.status_code, 200)
# TODO: Fix it so that response.templates works w/ mako templates, and then assert
# that the right template rendered