Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
E
edx-platform
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
edx
edx-platform
Commits
2c5a7ccd
Commit
2c5a7ccd
authored
Feb 02, 2013
by
Jay Zoldak
Committed by
Jay Zoldak
Feb 06, 2013
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Rearrange factories and clean up imports
parent
b329b0ea
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
136 additions
and
131 deletions
+136
-131
cms/djangoapps/contentstore/tests/factories.py
+0
-116
cms/djangoapps/contentstore/tests/tests.py
+18
-15
common/lib/xmodule/xmodule/modulestore/tests/factories.py
+118
-0
No files found.
cms/djangoapps/contentstore/tests/factories.py
View file @
2c5a7ccd
from
factory
import
Factory
from
datetime
import
datetime
from
time
import
gmtime
from
uuid
import
uuid4
from
student.models
import
(
User
,
UserProfile
,
Registration
,
CourseEnrollmentAllowed
)
from
django.contrib.auth.models
import
Group
from
xmodule.modulestore
import
Location
from
xmodule.modulestore.django
import
modulestore
from
xmodule.timeparse
import
stringify_time
class
UserProfileFactory
(
Factory
):
FACTORY_FOR
=
UserProfile
...
...
@@ -46,114 +42,3 @@ class CourseEnrollmentAllowedFactory(Factory):
email
=
'test@edx.org'
course_id
=
'edX/test/2012_Fall'
def
XMODULE_COURSE_CREATION
(
class_to_create
,
**
kwargs
):
return
XModuleCourseFactory
.
_create
(
class_to_create
,
**
kwargs
)
def
XMODULE_ITEM_CREATION
(
class_to_create
,
**
kwargs
):
return
XModuleItemFactory
.
_create
(
class_to_create
,
**
kwargs
)
class
XModuleCourseFactory
(
Factory
):
"""
Factory for XModule courses.
"""
ABSTRACT_FACTORY
=
True
_creation_function
=
(
XMODULE_COURSE_CREATION
,)
@classmethod
def
_create
(
cls
,
target_class
,
*
args
,
**
kwargs
):
template
=
Location
(
'i4x'
,
'edx'
,
'templates'
,
'course'
,
'Empty'
)
org
=
kwargs
.
get
(
'org'
)
number
=
kwargs
.
get
(
'number'
)
display_name
=
kwargs
.
get
(
'display_name'
)
location
=
Location
(
'i4x'
,
org
,
number
,
'course'
,
Location
.
clean
(
display_name
))
store
=
modulestore
(
'direct'
)
# Write the data to the mongo datastore
new_course
=
store
.
clone_item
(
template
,
location
)
# This metadata code was copied from cms/djangoapps/contentstore/views.py
if
display_name
is
not
None
:
new_course
.
metadata
[
'display_name'
]
=
display_name
new_course
.
metadata
[
'data_dir'
]
=
uuid4
()
.
hex
new_course
.
metadata
[
'start'
]
=
stringify_time
(
gmtime
())
new_course
.
tabs
=
[{
"type"
:
"courseware"
},
{
"type"
:
"course_info"
,
"name"
:
"Course Info"
},
{
"type"
:
"discussion"
,
"name"
:
"Discussion"
},
{
"type"
:
"wiki"
,
"name"
:
"Wiki"
},
{
"type"
:
"progress"
,
"name"
:
"Progress"
}]
# Update the data in the mongo datastore
store
.
update_metadata
(
new_course
.
location
.
url
(),
new_course
.
own_metadata
)
return
new_course
class
Course
:
pass
class
CourseFactory
(
XModuleCourseFactory
):
FACTORY_FOR
=
Course
template
=
'i4x://edx/templates/course/Empty'
org
=
'MITx'
number
=
'999'
display_name
=
'Robot Super Course'
class
XModuleItemFactory
(
Factory
):
"""
Factory for XModule items.
"""
ABSTRACT_FACTORY
=
True
_creation_function
=
(
XMODULE_ITEM_CREATION
,)
@classmethod
def
_create
(
cls
,
target_class
,
*
args
,
**
kwargs
):
"""
kwargs must include parent_location, template. Can contain display_name
target_class is ignored
"""
DETACHED_CATEGORIES
=
[
'about'
,
'static_tab'
,
'course_info'
]
parent_location
=
Location
(
kwargs
.
get
(
'parent_location'
))
template
=
Location
(
kwargs
.
get
(
'template'
))
display_name
=
kwargs
.
get
(
'display_name'
)
store
=
modulestore
(
'direct'
)
# This code was based off that in cms/djangoapps/contentstore/views.py
parent
=
store
.
get_item
(
parent_location
)
dest_location
=
parent_location
.
_replace
(
category
=
template
.
category
,
name
=
uuid4
()
.
hex
)
new_item
=
store
.
clone_item
(
template
,
dest_location
)
# TODO: This needs to be deleted when we have proper storage for static content
new_item
.
metadata
[
'data_dir'
]
=
parent
.
metadata
[
'data_dir'
]
# replace the display name with an optional parameter passed in from the caller
if
display_name
is
not
None
:
new_item
.
metadata
[
'display_name'
]
=
display_name
store
.
update_metadata
(
new_item
.
location
.
url
(),
new_item
.
own_metadata
)
if
new_item
.
location
.
category
not
in
DETACHED_CATEGORIES
:
store
.
update_children
(
parent_location
,
parent
.
definition
.
get
(
'children'
,
[])
+
[
new_item
.
location
.
url
()])
return
new_item
class
Item
:
pass
class
ItemFactory
(
XModuleItemFactory
):
FACTORY_FOR
=
Item
parent_location
=
'i4x://MITx/999/course/Robot_Super_Course'
template
=
'i4x://edx/templates/chapter/Empty'
display_name
=
'Section One'
\ No newline at end of file
cms/djangoapps/contentstore/tests/tests.py
View file @
2c5a7ccd
...
...
@@ -9,23 +9,26 @@ from path import path
from
tempfile
import
mkdtemp
import
json
from
fs.osfs
import
OSFS
import
copy
from
student.models
import
Registration
from
django.contrib.auth.models
import
User
import
xmodule.modulestore.django
from
xmodule.modulestore.xml_importer
import
import_from_xml
import
copy
from
factories
import
*
from
cms.djangoapps.contentstore.utils
import
get_modulestore
from
xmodule.modulestore
import
Location
from
xmodule.modulestore.store_utilities
import
clone_course
from
xmodule.modulestore.store_utilities
import
delete_course
from
xmodule.modulestore.django
import
modulestore
from
xmodule.modulestore.django
import
modulestore
,
_MODULESTORES
from
xmodule.contentstore.django
import
contentstore
from
xmodule.
course_module
import
CourseDescriptor
from
xmodule.
templates
import
update_templates
from
xmodule.modulestore.xml_exporter
import
export_to_xml
from
cms.djangoapps.contentstore.utils
import
get_modulestore
from
xmodule.modulestore.xml_importer
import
import_from_xml
from
xmodule.capa_module
import
CapaDescriptor
from
xmodule.course_module
import
CourseDescriptor
from
xmodule.seq_module
import
SequenceDescriptor
from
xmodule.modulestore.tests.factories
import
CourseFactory
,
ItemFactory
def
parse_json
(
response
):
"""Parse response, which is assumed to be json"""
...
...
@@ -217,9 +220,9 @@ class ContentStoreTest(TestCase):
# (though it shouldn't), do this manually
# from the bash shell to drop it:
# $ mongo test_xmodule --eval "db.dropDatabase()"
xmodule
.
modulestore
.
django
.
_MODULESTORES
=
{}
xmodule
.
modulestore
.
django
.
modulestore
()
.
collection
.
drop
()
xmodule
.
templates
.
update_templates
()
_MODULESTORES
=
{}
modulestore
()
.
collection
.
drop
()
update_templates
()
self
.
client
=
Client
()
self
.
client
.
login
(
username
=
uname
,
password
=
password
)
...
...
@@ -237,8 +240,8 @@ class ContentStoreTest(TestCase):
# cms/djangoapps/contentstore/__init__.py
# update_templates() will try to update the templates
# via upsert and it sometimes seems to be messing things up.
xmodule
.
modulestore
.
django
.
_MODULESTORES
=
{}
xmodule
.
modulestore
.
django
.
modulestore
()
.
collection
.
drop
()
_MODULESTORES
=
{}
modulestore
()
.
collection
.
drop
()
def
test_create_course
(
self
):
"""Test new course creation - happy path"""
...
...
@@ -288,12 +291,12 @@ class ContentStoreTest(TestCase):
def
test_course_factory
(
self
):
course
=
CourseFactory
.
create
()
self
.
assertIsInstance
(
course
,
xmodule
.
course_module
.
CourseDescriptor
)
self
.
assertIsInstance
(
course
,
CourseDescriptor
)
def
test_item_factory
(
self
):
course
=
CourseFactory
.
create
()
item
=
ItemFactory
.
create
(
parent_location
=
course
.
location
)
self
.
assertIsInstance
(
item
,
xmodule
.
seq_module
.
SequenceDescriptor
)
self
.
assertIsInstance
(
item
,
SequenceDescriptor
)
def
test_course_index_view_with_course
(
self
):
"""Test viewing the index page with an existing course"""
...
...
common/lib/xmodule/xmodule/modulestore/tests/factories.py
0 → 100644
View file @
2c5a7ccd
from
factory
import
Factory
# from datetime import datetime
from
time
import
gmtime
from
uuid
import
uuid4
from
xmodule.modulestore
import
Location
from
xmodule.modulestore.django
import
modulestore
from
xmodule.timeparse
import
stringify_time
def
XMODULE_COURSE_CREATION
(
class_to_create
,
**
kwargs
):
return
XModuleCourseFactory
.
_create
(
class_to_create
,
**
kwargs
)
def
XMODULE_ITEM_CREATION
(
class_to_create
,
**
kwargs
):
return
XModuleItemFactory
.
_create
(
class_to_create
,
**
kwargs
)
class
XModuleCourseFactory
(
Factory
):
"""
Factory for XModule courses.
"""
ABSTRACT_FACTORY
=
True
_creation_function
=
(
XMODULE_COURSE_CREATION
,)
@classmethod
def
_create
(
cls
,
target_class
,
*
args
,
**
kwargs
):
template
=
Location
(
'i4x'
,
'edx'
,
'templates'
,
'course'
,
'Empty'
)
org
=
kwargs
.
get
(
'org'
)
number
=
kwargs
.
get
(
'number'
)
display_name
=
kwargs
.
get
(
'display_name'
)
location
=
Location
(
'i4x'
,
org
,
number
,
'course'
,
Location
.
clean
(
display_name
))
store
=
modulestore
(
'direct'
)
# Write the data to the mongo datastore
new_course
=
store
.
clone_item
(
template
,
location
)
# This metadata code was copied from cms/djangoapps/contentstore/views.py
if
display_name
is
not
None
:
new_course
.
metadata
[
'display_name'
]
=
display_name
new_course
.
metadata
[
'data_dir'
]
=
uuid4
()
.
hex
new_course
.
metadata
[
'start'
]
=
stringify_time
(
gmtime
())
new_course
.
tabs
=
[{
"type"
:
"courseware"
},
{
"type"
:
"course_info"
,
"name"
:
"Course Info"
},
{
"type"
:
"discussion"
,
"name"
:
"Discussion"
},
{
"type"
:
"wiki"
,
"name"
:
"Wiki"
},
{
"type"
:
"progress"
,
"name"
:
"Progress"
}]
# Update the data in the mongo datastore
store
.
update_metadata
(
new_course
.
location
.
url
(),
new_course
.
own_metadata
)
return
new_course
class
Course
:
pass
class
CourseFactory
(
XModuleCourseFactory
):
FACTORY_FOR
=
Course
template
=
'i4x://edx/templates/course/Empty'
org
=
'MITx'
number
=
'999'
display_name
=
'Robot Super Course'
class
XModuleItemFactory
(
Factory
):
"""
Factory for XModule items.
"""
ABSTRACT_FACTORY
=
True
_creation_function
=
(
XMODULE_ITEM_CREATION
,)
@classmethod
def
_create
(
cls
,
target_class
,
*
args
,
**
kwargs
):
"""
kwargs must include parent_location, template. Can contain display_name
target_class is ignored
"""
DETACHED_CATEGORIES
=
[
'about'
,
'static_tab'
,
'course_info'
]
parent_location
=
Location
(
kwargs
.
get
(
'parent_location'
))
template
=
Location
(
kwargs
.
get
(
'template'
))
display_name
=
kwargs
.
get
(
'display_name'
)
store
=
modulestore
(
'direct'
)
# This code was based off that in cms/djangoapps/contentstore/views.py
parent
=
store
.
get_item
(
parent_location
)
dest_location
=
parent_location
.
_replace
(
category
=
template
.
category
,
name
=
uuid4
()
.
hex
)
new_item
=
store
.
clone_item
(
template
,
dest_location
)
# TODO: This needs to be deleted when we have proper storage for static content
new_item
.
metadata
[
'data_dir'
]
=
parent
.
metadata
[
'data_dir'
]
# replace the display name with an optional parameter passed in from the caller
if
display_name
is
not
None
:
new_item
.
metadata
[
'display_name'
]
=
display_name
store
.
update_metadata
(
new_item
.
location
.
url
(),
new_item
.
own_metadata
)
if
new_item
.
location
.
category
not
in
DETACHED_CATEGORIES
:
store
.
update_children
(
parent_location
,
parent
.
definition
.
get
(
'children'
,
[])
+
[
new_item
.
location
.
url
()])
return
new_item
class
Item
:
pass
class
ItemFactory
(
XModuleItemFactory
):
FACTORY_FOR
=
Item
parent_location
=
'i4x://MITx/999/course/Robot_Super_Course'
template
=
'i4x://edx/templates/chapter/Empty'
display_name
=
'Section One'
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment