Commit be76f731 by Jay Zoldak

Consolidate and upgrade factories

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