Commit e2ed8ff7 by Toby Lawrence

Switch to SharedModuleStoreTestCase in the 'student' app where possible.

parent 9ae0dada
...@@ -3,19 +3,23 @@ Tests student admin.py ...@@ -3,19 +3,23 @@ Tests student admin.py
""" """
from django.core.urlresolvers import reverse from django.core.urlresolvers import reverse
from xmodule.modulestore.tests.django_utils import ModuleStoreTestCase from xmodule.modulestore.tests.django_utils import SharedModuleStoreTestCase
from xmodule.modulestore.tests.factories import CourseFactory from xmodule.modulestore.tests.factories import CourseFactory
from student.tests.factories import UserFactory from student.tests.factories import UserFactory
class AdminCourseRolesPageTest(ModuleStoreTestCase): class AdminCourseRolesPageTest(SharedModuleStoreTestCase):
"""Test the django admin course roles form saving data in db. """Test the django admin course roles form saving data in db.
""" """
@classmethod
def setUpClass(cls):
super(AdminCourseRolesPageTest, cls).setUpClass()
cls.course = CourseFactory.create(org='edx')
def setUp(self): def setUp(self):
super(AdminCourseRolesPageTest, self).setUp() super(AdminCourseRolesPageTest, self).setUp()
self.user = UserFactory.create(is_staff=True, is_superuser=True) self.user = UserFactory.create(is_staff=True, is_superuser=True)
self.user.save() self.user.save()
self.course = CourseFactory.create(org='edx')
def test_save_valid_data(self): def test_save_valid_data(self):
......
...@@ -12,7 +12,7 @@ from mock import patch ...@@ -12,7 +12,7 @@ from mock import patch
from opaque_keys.edx.locations import SlashSeparatedCourseKey from opaque_keys.edx.locations import SlashSeparatedCourseKey
from student.tests.factories import UserFactory, CourseEnrollmentFactory from student.tests.factories import UserFactory, CourseEnrollmentFactory
from xmodule.modulestore.tests.django_utils import ModuleStoreTestCase from xmodule.modulestore.tests.django_utils import SharedModuleStoreTestCase
from xmodule.modulestore.tests.django_utils import TEST_DATA_MIXED_TOY_MODULESTORE from xmodule.modulestore.tests.django_utils import TEST_DATA_MIXED_TOY_MODULESTORE
from xmodule.modulestore.tests.factories import CourseFactory from xmodule.modulestore.tests.factories import CourseFactory
...@@ -22,16 +22,18 @@ from bulk_email.models import CourseAuthorization # pylint: disable=import-erro ...@@ -22,16 +22,18 @@ from bulk_email.models import CourseAuthorization # pylint: disable=import-erro
@unittest.skipUnless(settings.ROOT_URLCONF == 'lms.urls', 'Test only valid in lms') @unittest.skipUnless(settings.ROOT_URLCONF == 'lms.urls', 'Test only valid in lms')
class TestStudentDashboardEmailView(ModuleStoreTestCase): class TestStudentDashboardEmailView(SharedModuleStoreTestCase):
""" """
Check for email view displayed with flag Check for email view displayed with flag
""" """
@classmethod
def setUpClass(cls):
super(TestStudentDashboardEmailView, cls).setUpClass()
cls.course = CourseFactory.create()
def setUp(self): def setUp(self):
super(TestStudentDashboardEmailView, self).setUp() super(TestStudentDashboardEmailView, self).setUp()
self.course = CourseFactory.create()
# Create student account # Create student account
student = UserFactory.create() student = UserFactory.create()
CourseEnrollmentFactory.create(user=student, course_id=self.course.id) CourseEnrollmentFactory.create(user=student, course_id=self.course.id)
...@@ -84,7 +86,7 @@ class TestStudentDashboardEmailView(ModuleStoreTestCase): ...@@ -84,7 +86,7 @@ class TestStudentDashboardEmailView(ModuleStoreTestCase):
@unittest.skipUnless(settings.ROOT_URLCONF == 'lms.urls', 'Test only valid in lms') @unittest.skipUnless(settings.ROOT_URLCONF == 'lms.urls', 'Test only valid in lms')
class TestStudentDashboardEmailViewXMLBacked(ModuleStoreTestCase): class TestStudentDashboardEmailViewXMLBacked(SharedModuleStoreTestCase):
""" """
Check for email view on student dashboard, with XML backed course. Check for email view on student dashboard, with XML backed course.
""" """
......
...@@ -8,8 +8,9 @@ from django.conf import settings ...@@ -8,8 +8,9 @@ from django.conf import settings
from django.core.urlresolvers import reverse from django.core.urlresolvers import reverse
from mock import patch from mock import patch
from django.test.utils import override_settings from django.test.utils import override_settings
from xmodule.modulestore import ModuleStoreEnum
from xmodule.modulestore.tests.django_utils import ModuleStoreTestCase from xmodule.modulestore.tests.django_utils import SharedModuleStoreTestCase
from xmodule.modulestore.tests.factories import CourseFactory from xmodule.modulestore.tests.factories import CourseFactory
from student.tests.factories import UserFactory, CourseEnrollmentFactory from student.tests.factories import UserFactory, CourseEnrollmentFactory
from certificates.tests.factories import GeneratedCertificateFactory # pylint: disable=import-error from certificates.tests.factories import GeneratedCertificateFactory # pylint: disable=import-error
...@@ -30,23 +31,28 @@ def _fake_is_request_in_microsite(): ...@@ -30,23 +31,28 @@ def _fake_is_request_in_microsite():
@ddt.ddt @ddt.ddt
@unittest.skipUnless(settings.ROOT_URLCONF == 'lms.urls', 'Test only valid in lms') @unittest.skipUnless(settings.ROOT_URLCONF == 'lms.urls', 'Test only valid in lms')
class CertificateDisplayTest(ModuleStoreTestCase): class CertificateDisplayTest(SharedModuleStoreTestCase):
"""Tests display of certificates on the student dashboard. """ """Tests display of certificates on the student dashboard. """
USERNAME = "test_user" USERNAME = "test_user"
PASSWORD = "password" PASSWORD = "password"
DOWNLOAD_URL = "http://www.example.com/certificate.pdf" DOWNLOAD_URL = "http://www.example.com/certificate.pdf"
@classmethod
def setUpClass(cls):
super(CertificateDisplayTest, cls).setUpClass()
cls.course = CourseFactory()
cls.course.certificates_display_behavior = "early_with_info"
with cls.store.branch_setting(ModuleStoreEnum.Branch.draft_preferred, cls.course.id):
cls.store.update_item(cls.course, cls.USERNAME)
def setUp(self): def setUp(self):
super(CertificateDisplayTest, self).setUp() super(CertificateDisplayTest, self).setUp()
self.user = UserFactory.create(username=self.USERNAME, password=self.PASSWORD) self.user = UserFactory.create(username=self.USERNAME, password=self.PASSWORD)
result = self.client.login(username=self.USERNAME, password=self.PASSWORD) result = self.client.login(username=self.USERNAME, password=self.PASSWORD)
self.assertTrue(result, msg="Could not log in") self.assertTrue(result, msg="Could not log in")
self.course = CourseFactory()
self.course.certificates_display_behavior = "early_with_info"
self.update_course(self.course, self.user.username)
@ddt.data('verified', 'professional') @ddt.data('verified', 'professional')
@patch.dict('django.conf.settings.FEATURES', {'CERTIFICATES_HTML_VIEW': False}) @patch.dict('django.conf.settings.FEATURES', {'CERTIFICATES_HTML_VIEW': False})
def test_display_verified_certificate(self, enrollment_mode): def test_display_verified_certificate(self, enrollment_mode):
......
...@@ -8,7 +8,7 @@ from mock import patch ...@@ -8,7 +8,7 @@ from mock import patch
from django.conf import settings from django.conf import settings
from django.core.urlresolvers import reverse from django.core.urlresolvers import reverse
from course_modes.models import CourseMode from course_modes.models import CourseMode
from xmodule.modulestore.tests.django_utils import ModuleStoreTestCase from xmodule.modulestore.tests.django_utils import SharedModuleStoreTestCase
from xmodule.modulestore.tests.factories import CourseFactory from xmodule.modulestore.tests.factories import CourseFactory
from util.testing import UrlResetMixin from util.testing import UrlResetMixin
from embargo.test_utils import restrict_course from embargo.test_utils import restrict_course
...@@ -18,7 +18,7 @@ from student.models import CourseEnrollment ...@@ -18,7 +18,7 @@ from student.models import CourseEnrollment
@ddt.ddt @ddt.ddt
@unittest.skipUnless(settings.ROOT_URLCONF == 'lms.urls', 'Test only valid in lms') @unittest.skipUnless(settings.ROOT_URLCONF == 'lms.urls', 'Test only valid in lms')
class EnrollmentTest(UrlResetMixin, ModuleStoreTestCase): class EnrollmentTest(UrlResetMixin, SharedModuleStoreTestCase):
""" """
Test student enrollment, especially with different course modes. Test student enrollment, especially with different course modes.
""" """
...@@ -27,6 +27,11 @@ class EnrollmentTest(UrlResetMixin, ModuleStoreTestCase): ...@@ -27,6 +27,11 @@ class EnrollmentTest(UrlResetMixin, ModuleStoreTestCase):
EMAIL = "bob@example.com" EMAIL = "bob@example.com"
PASSWORD = "edx" PASSWORD = "edx"
@classmethod
def setUpClass(cls):
super(EnrollmentTest, cls).setUpClass()
cls.course = CourseFactory.create()
@patch.dict(settings.FEATURES, {'EMBARGO': True}) @patch.dict(settings.FEATURES, {'EMBARGO': True})
def setUp(self): def setUp(self):
""" Create a course and user, then log in. """ """ Create a course and user, then log in. """
......
...@@ -10,8 +10,7 @@ from django.core.urlresolvers import reverse ...@@ -10,8 +10,7 @@ from django.core.urlresolvers import reverse
from util.testing import UrlResetMixin from util.testing import UrlResetMixin
from xmodule.modulestore.tests.factories import CourseFactory from xmodule.modulestore.tests.factories import CourseFactory
from third_party_auth.tests.testutil import ThirdPartyAuthTestMixin from third_party_auth.tests.testutil import ThirdPartyAuthTestMixin
from xmodule.modulestore.tests.django_utils import ModuleStoreTestCase from xmodule.modulestore.tests.django_utils import SharedModuleStoreTestCase
# This relies on third party auth being enabled in the test # This relies on third party auth being enabled in the test
# settings with the feature flag `ENABLE_THIRD_PARTY_AUTH` # settings with the feature flag `ENABLE_THIRD_PARTY_AUTH`
...@@ -38,14 +37,19 @@ def _finish_auth_url(params): ...@@ -38,14 +37,19 @@ def _finish_auth_url(params):
@ddt.ddt @ddt.ddt
@unittest.skipUnless(settings.ROOT_URLCONF == 'lms.urls', 'Test only valid in lms') @unittest.skipUnless(settings.ROOT_URLCONF == 'lms.urls', 'Test only valid in lms')
class LoginFormTest(ThirdPartyAuthTestMixin, UrlResetMixin, ModuleStoreTestCase): class LoginFormTest(ThirdPartyAuthTestMixin, UrlResetMixin, SharedModuleStoreTestCase):
"""Test rendering of the login form. """ """Test rendering of the login form. """
@classmethod
def setUpClass(cls):
super(LoginFormTest, cls).setUpClass()
cls.course = CourseFactory.create()
@patch.dict(settings.FEATURES, {"ENABLE_COMBINED_LOGIN_REGISTRATION": False}) @patch.dict(settings.FEATURES, {"ENABLE_COMBINED_LOGIN_REGISTRATION": False})
def setUp(self): def setUp(self):
super(LoginFormTest, self).setUp('lms.urls') super(LoginFormTest, self).setUp('lms.urls')
self.url = reverse("signin_user") self.url = reverse("signin_user")
self.course = CourseFactory.create()
self.course_id = unicode(self.course.id) self.course_id = unicode(self.course.id)
self.courseware_url = reverse("courseware", args=[self.course_id]) self.courseware_url = reverse("courseware", args=[self.course_id])
self.configure_google_provider(enabled=True) self.configure_google_provider(enabled=True)
...@@ -148,14 +152,19 @@ class LoginFormTest(ThirdPartyAuthTestMixin, UrlResetMixin, ModuleStoreTestCase) ...@@ -148,14 +152,19 @@ class LoginFormTest(ThirdPartyAuthTestMixin, UrlResetMixin, ModuleStoreTestCase)
@ddt.ddt @ddt.ddt
@unittest.skipUnless(settings.ROOT_URLCONF == 'lms.urls', 'Test only valid in lms') @unittest.skipUnless(settings.ROOT_URLCONF == 'lms.urls', 'Test only valid in lms')
class RegisterFormTest(ThirdPartyAuthTestMixin, UrlResetMixin, ModuleStoreTestCase): class RegisterFormTest(ThirdPartyAuthTestMixin, UrlResetMixin, SharedModuleStoreTestCase):
"""Test rendering of the registration form. """ """Test rendering of the registration form. """
@classmethod
def setUpClass(cls):
super(RegisterFormTest, cls).setUpClass()
cls.course = CourseFactory.create()
@patch.dict(settings.FEATURES, {"ENABLE_COMBINED_LOGIN_REGISTRATION": False}) @patch.dict(settings.FEATURES, {"ENABLE_COMBINED_LOGIN_REGISTRATION": False})
def setUp(self): def setUp(self):
super(RegisterFormTest, self).setUp('lms.urls') super(RegisterFormTest, self).setUp('lms.urls')
self.url = reverse("register_user") self.url = reverse("register_user")
self.course = CourseFactory.create()
self.course_id = unicode(self.course.id) self.course_id = unicode(self.course.id)
self.configure_google_provider(enabled=True) self.configure_google_provider(enabled=True)
self.configure_facebook_provider(enabled=True) self.configure_facebook_provider(enabled=True)
......
...@@ -41,10 +41,14 @@ class RefundableTest(SharedModuleStoreTestCase): ...@@ -41,10 +41,14 @@ class RefundableTest(SharedModuleStoreTestCase):
Tests for dashboard utility functions Tests for dashboard utility functions
""" """
@classmethod
def setUpClass(cls):
super(RefundableTest, cls).setUpClass()
cls.course = CourseFactory.create()
def setUp(self): def setUp(self):
""" Setup components used by each refund test.""" """ Setup components used by each refund test."""
super(RefundableTest, self).setUp() super(RefundableTest, self).setUp()
self.course = CourseFactory.create()
self.user = UserFactory.create(username="jack", email="jack@fake.edx.org", password='test') self.user = UserFactory.create(username="jack", email="jack@fake.edx.org", password='test')
self.verified_mode = CourseModeFactory.create( self.verified_mode = CourseModeFactory.create(
course_id=self.course.id, course_id=self.course.id,
......
...@@ -12,13 +12,13 @@ from django.conf import settings ...@@ -12,13 +12,13 @@ from django.conf import settings
from student.tests.factories import UserFactory, CourseEnrollmentFactory from student.tests.factories import UserFactory, CourseEnrollmentFactory
from student.models import CourseEnrollment from student.models import CourseEnrollment
from student.helpers import DISABLE_UNENROLL_CERT_STATES from student.helpers import DISABLE_UNENROLL_CERT_STATES
from xmodule.modulestore.tests.django_utils import ModuleStoreTestCase from xmodule.modulestore.tests.django_utils import SharedModuleStoreTestCase
from xmodule.modulestore.tests.factories import CourseFactory from xmodule.modulestore.tests.factories import CourseFactory
@ddt.ddt @ddt.ddt
@unittest.skipUnless(settings.ROOT_URLCONF == 'lms.urls', 'Test only valid in lms') @unittest.skipUnless(settings.ROOT_URLCONF == 'lms.urls', 'Test only valid in lms')
class TestStudentDashboardUnenrollments(ModuleStoreTestCase): class TestStudentDashboardUnenrollments(SharedModuleStoreTestCase):
""" """
Test to ensure that the student dashboard does not show the unenroll button for users with certificates. Test to ensure that the student dashboard does not show the unenroll button for users with certificates.
""" """
...@@ -27,10 +27,14 @@ class TestStudentDashboardUnenrollments(ModuleStoreTestCase): ...@@ -27,10 +27,14 @@ class TestStudentDashboardUnenrollments(ModuleStoreTestCase):
PASSWORD = "edx" PASSWORD = "edx"
UNENROLL_ELEMENT_ID = "#actions-item-unenroll-0" UNENROLL_ELEMENT_ID = "#actions-item-unenroll-0"
@classmethod
def setUpClass(cls):
super(TestStudentDashboardUnenrollments, cls).setUpClass()
cls.course = CourseFactory.create()
def setUp(self): def setUp(self):
""" Create a course and user, then log in. """ """ Create a course and user, then log in. """
super(TestStudentDashboardUnenrollments, self).setUp() super(TestStudentDashboardUnenrollments, self).setUp()
self.course = CourseFactory.create()
self.user = UserFactory.create(username=self.USERNAME, email=self.EMAIL, password=self.PASSWORD) self.user = UserFactory.create(username=self.USERNAME, email=self.EMAIL, password=self.PASSWORD)
CourseEnrollmentFactory(course_id=self.course.id, user=self.user) CourseEnrollmentFactory(course_id=self.course.id, user=self.user)
self.cert_status = None self.cert_status = None
......
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