Consolidate and upgrade factories
This commit is contained in:
@@ -46,9 +46,7 @@ class UserFactory(DjangoModelFactory):
|
||||
date_joined = datetime(2011, 1, 1)
|
||||
|
||||
|
||||
class AdminFactory(Factory):
|
||||
FACTORY_FOR = User
|
||||
|
||||
class AdminFactory(UserFactory):
|
||||
is_staff = True
|
||||
|
||||
|
||||
|
||||
@@ -1,62 +1,85 @@
|
||||
import factory
|
||||
from student.models import (User, UserProfile, Registration,
|
||||
CourseEnrollmentAllowed)
|
||||
from courseware.models import StudentModule
|
||||
from django.contrib.auth.models import Group
|
||||
from datetime import datetime
|
||||
import uuid
|
||||
import json
|
||||
from functools import partial
|
||||
|
||||
from factory import DjangoModelFactory, SubFactory
|
||||
from student.tests.factories import UserFactory as StudentUserFactory
|
||||
from student.tests.factories import GroupFactory as StudentGroupFactory
|
||||
from student.tests.factories import UserProfileFactory as StudentUserProfileFactory
|
||||
from student.tests.factories import CourseEnrollmentAllowedFactory as StudentCourseEnrollmentAllowedFactory
|
||||
from student.tests.factories import RegistrationFactory as StudentRegistrationFactory
|
||||
from courseware.models import StudentModule, XModuleContentField, XModuleSettingsField
|
||||
from courseware.models import XModuleStudentInfoField, XModuleStudentPrefsField
|
||||
|
||||
from xmodule.modulestore import Location
|
||||
|
||||
location = partial(Location, 'i4x', 'edX', 'test_course', 'problem')
|
||||
|
||||
|
||||
class UserProfileFactory(factory.Factory):
|
||||
FACTORY_FOR = UserProfile
|
||||
|
||||
user = None
|
||||
class UserProfileFactory(StudentUserProfileFactory):
|
||||
name = 'Robot Studio'
|
||||
courseware = 'course.xml'
|
||||
|
||||
|
||||
class RegistrationFactory(factory.Factory):
|
||||
FACTORY_FOR = Registration
|
||||
|
||||
user = None
|
||||
activation_key = uuid.uuid4().hex
|
||||
class RegistrationFactory(StudentRegistrationFactory):
|
||||
pass
|
||||
|
||||
|
||||
class UserFactory(factory.Factory):
|
||||
FACTORY_FOR = User
|
||||
|
||||
username = 'robot'
|
||||
class UserFactory(StudentUserFactory):
|
||||
email = 'robot@edx.org'
|
||||
password = 'test'
|
||||
first_name = 'Robot'
|
||||
last_name = 'Tester'
|
||||
is_staff = False
|
||||
is_active = True
|
||||
is_superuser = False
|
||||
last_login = datetime.now()
|
||||
date_joined = datetime.now()
|
||||
|
||||
|
||||
class GroupFactory(factory.Factory):
|
||||
FACTORY_FOR = Group
|
||||
|
||||
class GroupFactory(StudentGroupFactory):
|
||||
name = 'test_group'
|
||||
|
||||
|
||||
class CourseEnrollmentAllowedFactory(factory.Factory):
|
||||
FACTORY_FOR = CourseEnrollmentAllowed
|
||||
|
||||
email = 'test@edx.org'
|
||||
course_id = 'edX/test/2012_Fall'
|
||||
class CourseEnrollmentAllowedFactory(StudentCourseEnrollmentAllowedFactory):
|
||||
pass
|
||||
|
||||
|
||||
class StudentModuleFactory(factory.Factory):
|
||||
class StudentModuleFactory(DjangoModelFactory):
|
||||
FACTORY_FOR = StudentModule
|
||||
|
||||
module_type = "problem"
|
||||
student = factory.SubFactory(UserFactory)
|
||||
student = SubFactory(UserFactory)
|
||||
course_id = "MITx/999/Robot_Super_Course"
|
||||
state = None
|
||||
grade = None
|
||||
max_grade = None
|
||||
done = 'na'
|
||||
|
||||
|
||||
class ContentFactory(DjangoModelFactory):
|
||||
FACTORY_FOR = XModuleContentField
|
||||
|
||||
field_name = 'existing_field'
|
||||
value = json.dumps('old_value')
|
||||
definition_id = location('def_id').url()
|
||||
|
||||
|
||||
class SettingsFactory(DjangoModelFactory):
|
||||
FACTORY_FOR = XModuleSettingsField
|
||||
|
||||
field_name = 'existing_field'
|
||||
value = json.dumps('old_value')
|
||||
usage_id = '%s-%s' % ('edX/test_course/test', location('def_id').url())
|
||||
|
||||
|
||||
class StudentPrefsFactory(DjangoModelFactory):
|
||||
FACTORY_FOR = XModuleStudentPrefsField
|
||||
|
||||
field_name = 'existing_field'
|
||||
value = json.dumps('old_value')
|
||||
student = SubFactory(UserFactory)
|
||||
module_type = 'problem'
|
||||
|
||||
|
||||
class StudentInfoFactory(DjangoModelFactory):
|
||||
FACTORY_FOR = XModuleStudentInfoField
|
||||
|
||||
field_name = 'existing_field'
|
||||
value = json.dumps('old_value')
|
||||
student = SubFactory(UserFactory)
|
||||
|
||||
@@ -1,15 +1,19 @@
|
||||
import factory
|
||||
import json
|
||||
from mock import Mock
|
||||
from django.contrib.auth.models import User
|
||||
|
||||
from functools import partial
|
||||
|
||||
from courseware.model_data import LmsKeyValueStore, InvalidWriteError, InvalidScopeError, ModelDataCache
|
||||
from courseware.models import StudentModule, XModuleContentField, XModuleSettingsField, XModuleStudentInfoField, XModuleStudentPrefsField
|
||||
from courseware.model_data import LmsKeyValueStore, InvalidWriteError
|
||||
from courseware.model_data import InvalidScopeError, ModelDataCache
|
||||
from courseware.models import StudentModule, XModuleContentField, XModuleSettingsField
|
||||
from courseware.models import XModuleStudentInfoField, XModuleStudentPrefsField
|
||||
|
||||
from student.tests.factories import UserFactory
|
||||
from courseware.tests.factories import StudentModuleFactory as cmfStudentModuleFactory
|
||||
from courseware.tests.factories import ContentFactory, SettingsFactory
|
||||
from courseware.tests.factories import StudentPrefsFactory, StudentInfoFactory
|
||||
|
||||
from xblock.core import Scope, BlockScope
|
||||
from xmodule.modulestore import Location
|
||||
|
||||
from django.test import TestCase
|
||||
|
||||
|
||||
@@ -19,6 +23,7 @@ def mock_field(scope, name):
|
||||
field.name = name
|
||||
return field
|
||||
|
||||
|
||||
def mock_descriptor(fields=[], lms_fields=[]):
|
||||
descriptor = Mock()
|
||||
descriptor.stores_state = True
|
||||
@@ -37,53 +42,9 @@ prefs_key = partial(LmsKeyValueStore.Key, Scope.preferences, 'user', 'problem')
|
||||
user_info_key = partial(LmsKeyValueStore.Key, Scope.user_info, 'user', None)
|
||||
|
||||
|
||||
class UserFactory(factory.Factory):
|
||||
FACTORY_FOR = User
|
||||
|
||||
username = 'user'
|
||||
|
||||
|
||||
class StudentModuleFactory(factory.Factory):
|
||||
FACTORY_FOR = StudentModule
|
||||
|
||||
module_type = 'problem'
|
||||
class StudentModuleFactory(cmfStudentModuleFactory):
|
||||
module_state_key = location('def_id').url()
|
||||
student = factory.SubFactory(UserFactory)
|
||||
course_id = course_id
|
||||
state = None
|
||||
|
||||
|
||||
class ContentFactory(factory.Factory):
|
||||
FACTORY_FOR = XModuleContentField
|
||||
|
||||
field_name = 'existing_field'
|
||||
value = json.dumps('old_value')
|
||||
definition_id = location('def_id').url()
|
||||
|
||||
|
||||
class SettingsFactory(factory.Factory):
|
||||
FACTORY_FOR = XModuleSettingsField
|
||||
|
||||
field_name = 'existing_field'
|
||||
value = json.dumps('old_value')
|
||||
usage_id = '%s-%s' % (course_id, location('def_id').url())
|
||||
|
||||
|
||||
class StudentPrefsFactory(factory.Factory):
|
||||
FACTORY_FOR = XModuleStudentPrefsField
|
||||
|
||||
field_name = 'existing_field'
|
||||
value = json.dumps('old_value')
|
||||
student = factory.SubFactory(UserFactory)
|
||||
module_type = 'problem'
|
||||
|
||||
|
||||
class StudentInfoFactory(factory.Factory):
|
||||
FACTORY_FOR = XModuleStudentInfoField
|
||||
|
||||
field_name = 'existing_field'
|
||||
value = json.dumps('old_value')
|
||||
student = factory.SubFactory(UserFactory)
|
||||
|
||||
|
||||
class TestDescriptorFallback(TestCase):
|
||||
@@ -114,7 +75,7 @@ class TestDescriptorFallback(TestCase):
|
||||
class TestInvalidScopes(TestCase):
|
||||
def setUp(self):
|
||||
self.desc_md = {}
|
||||
self.user = UserFactory.create()
|
||||
self.user = UserFactory.create(username='user')
|
||||
self.mdc = ModelDataCache([mock_descriptor([mock_field(Scope.user_state, 'a_field')])], course_id, self.user)
|
||||
self.kvs = LmsKeyValueStore(self.desc_md, self.mdc)
|
||||
|
||||
@@ -180,7 +141,7 @@ class TestStudentModuleStorage(TestCase):
|
||||
|
||||
class TestMissingStudentModule(TestCase):
|
||||
def setUp(self):
|
||||
self.user = UserFactory.create()
|
||||
self.user = UserFactory.create(username='user')
|
||||
self.desc_md = {}
|
||||
self.mdc = ModelDataCache([mock_descriptor()], course_id, self.user)
|
||||
self.kvs = LmsKeyValueStore(self.desc_md, self.mdc)
|
||||
|
||||
@@ -1,42 +1,18 @@
|
||||
import string
|
||||
import random
|
||||
import collections
|
||||
|
||||
from django.test import TestCase
|
||||
from factory import DjangoModelFactory
|
||||
from student.tests.factories import UserFactory, CourseEnrollmentFactory
|
||||
|
||||
import factory
|
||||
from django.contrib.auth.models import User
|
||||
from student.models import UserProfile, CourseEnrollment
|
||||
from django_comment_client.models import Role, Permission
|
||||
|
||||
import django_comment_client.models as models
|
||||
import django_comment_client.utils as utils
|
||||
|
||||
import xmodule.modulestore.django as django
|
||||
|
||||
|
||||
class UserFactory(factory.Factory):
|
||||
FACTORY_FOR = User
|
||||
username = 'robot'
|
||||
password = '123456'
|
||||
email = 'robot@edx.org'
|
||||
is_active = True
|
||||
is_staff = False
|
||||
|
||||
|
||||
class CourseEnrollmentFactory(factory.Factory):
|
||||
FACTORY_FOR = CourseEnrollment
|
||||
user = factory.SubFactory(UserFactory)
|
||||
course_id = 'edX/toy/2012_Fall'
|
||||
|
||||
|
||||
class RoleFactory(factory.Factory):
|
||||
class RoleFactory(DjangoModelFactory):
|
||||
FACTORY_FOR = Role
|
||||
name = 'Student'
|
||||
course_id = 'edX/toy/2012_Fall'
|
||||
|
||||
|
||||
class PermissionFactory(factory.Factory):
|
||||
class PermissionFactory(DjangoModelFactory):
|
||||
FACTORY_FOR = Permission
|
||||
name = 'create_comment'
|
||||
|
||||
|
||||
@@ -5,15 +5,19 @@ import json
|
||||
from uuid import uuid4
|
||||
from random import shuffle
|
||||
from tempfile import NamedTemporaryFile
|
||||
from factory import Factory, SubFactory
|
||||
from factory import DjangoModelFactory, SubFactory
|
||||
|
||||
from django.test import TestCase
|
||||
from django.test.client import Client
|
||||
from django.test.utils import override_settings
|
||||
from django.core.management import call_command
|
||||
from django.core.urlresolvers import reverse
|
||||
from nose.tools import assert_true
|
||||
|
||||
from courseware.tests.tests import TEST_DATA_MONGO_MODULESTORE
|
||||
from licenses.models import CourseSoftware, UserLicense
|
||||
from courseware.tests.tests import LoginEnrollmentTestCase, get_user
|
||||
|
||||
from student.tests.factories import UserFactory
|
||||
from xmodule.modulestore.tests.factories import CourseFactory
|
||||
from xmodule.modulestore.tests.django_utils import ModuleStoreTestCase
|
||||
|
||||
@@ -27,7 +31,7 @@ SERIAL_1 = '123456abcde'
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class CourseSoftwareFactory(Factory):
|
||||
class CourseSoftwareFactory(DjangoModelFactory):
|
||||
'''Factory for generating CourseSoftware objects in database'''
|
||||
FACTORY_FOR = CourseSoftware
|
||||
|
||||
@@ -37,7 +41,7 @@ class CourseSoftwareFactory(Factory):
|
||||
course_id = COURSE_1
|
||||
|
||||
|
||||
class UserLicenseFactory(Factory):
|
||||
class UserLicenseFactory(DjangoModelFactory):
|
||||
'''
|
||||
Factory for generating UserLicense objects in database
|
||||
|
||||
@@ -46,19 +50,24 @@ class UserLicenseFactory(Factory):
|
||||
'''
|
||||
FACTORY_FOR = UserLicense
|
||||
|
||||
user = None
|
||||
software = SubFactory(CourseSoftwareFactory)
|
||||
serial = SERIAL_1
|
||||
|
||||
|
||||
class LicenseTestCase(LoginEnrollmentTestCase):
|
||||
class LicenseTestCase(TestCase):
|
||||
'''Tests for licenses.views'''
|
||||
def setUp(self):
|
||||
'''creates a user and logs in'''
|
||||
self.setup_viewtest_user()
|
||||
# self.setup_viewtest_user()
|
||||
self.user = UserFactory(username='test',
|
||||
email='test@edx.org', password='test_password')
|
||||
self.client = Client()
|
||||
assert_true(self.client.login(username='test', password='test_password'))
|
||||
self.software = CourseSoftwareFactory()
|
||||
|
||||
def test_get_license(self):
|
||||
UserLicenseFactory(user=get_user(self.viewtest_email), software=self.software)
|
||||
UserLicenseFactory(user=self.user, software=self.software)
|
||||
response = self.client.post(reverse('user_software_license'),
|
||||
{'software': SOFTWARE_1, 'generate': 'false'},
|
||||
HTTP_X_REQUESTED_WITH='XMLHttpRequest',
|
||||
@@ -125,7 +134,7 @@ class LicenseTestCase(LoginEnrollmentTestCase):
|
||||
self.assertEqual(404, response.status_code)
|
||||
|
||||
def test_get_license_without_login(self):
|
||||
self.logout()
|
||||
self.client.logout()
|
||||
response = self.client.post(reverse('user_software_license'),
|
||||
{'software': SOFTWARE_1, 'generate': 'false'},
|
||||
HTTP_X_REQUESTED_WITH='XMLHttpRequest',
|
||||
|
||||
Reference in New Issue
Block a user