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
86bc70c3
Commit
86bc70c3
authored
Mar 28, 2013
by
Will Daly
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Reverted cms changes back
parent
f652fb5f
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
26 additions
and
94 deletions
+26
-94
cms/djangoapps/contentstore/tests/utils.py
+26
-94
No files found.
cms/djangoapps/contentstore/tests/utils.py
View file @
86bc70c3
'''
Utilities for contentstore tests
'''
#pylint: disable=W0603
import
json
import
copy
from
uuid
import
uuid4
...
...
@@ -16,17 +10,6 @@ from django.contrib.auth.models import User
import
xmodule.modulestore.django
from
xmodule.templates
import
update_templates
# Share modulestore setup between classes
# We need to use global variables, because
# each ModuleStoreTestCase subclass will have its
# own class variables, and we want to re-use the
# same modulestore for all test cases.
#pylint: disable=C0103
test_modulestore
=
None
#pylint: disable=C0103
orig_modulestore
=
None
class
ModuleStoreTestCase
(
TestCase
):
""" Subclass for any test case that uses the mongodb
...
...
@@ -34,88 +17,37 @@ class ModuleStoreTestCase(TestCase):
collection with templates before running the TestCase
and drops it they are finished. """
@staticmethod
def
flush_mongo_except_templates
():
'''
Delete everything in the module store except templates
'''
modulestore
=
xmodule
.
modulestore
.
django
.
modulestore
()
# This query means: every item in the collection
# that is not a template
query
=
{
"_id.course"
:
{
"$ne"
:
"templates"
}}
# Remove everything except templates
modulestore
.
collection
.
remove
(
query
)
@staticmethod
def
load_templates_if_necessary
():
'''
Load templates into the modulestore only if they do not already exist.
We need the templates, because they are copied to create
XModules such as sections and problems
'''
modulestore
=
xmodule
.
modulestore
.
django
.
modulestore
()
# Count the number of templates
query
=
{
"_id.course"
:
"templates"
}
num_templates
=
modulestore
.
collection
.
find
(
query
)
.
count
()
if
num_templates
<
1
:
update_templates
()
@classmethod
def
setUpClass
(
cls
):
'''
Flush the mongo store and set up templates
'''
global
test_modulestore
global
orig_modulestore
def
_pre_setup
(
self
):
super
(
ModuleStoreTestCase
,
self
)
.
_pre_setup
()
# Use a uuid to differentiate
# the mongo collections on jenkins.
if
test_modulestore
is
None
:
orig_modulestore
=
copy
.
deepcopy
(
settings
.
MODULESTORE
)
test_modulestore
=
orig_modulestore
test_modulestore
[
'default'
][
'OPTIONS'
][
'collection'
]
=
'modulestore_
%
s'
%
uuid4
()
.
hex
test_modulestore
[
'direct'
][
'OPTIONS'
][
'collection'
]
=
'modulestore_
%
s'
%
uuid4
()
.
hex
xmodule
.
modulestore
.
django
.
_MODULESTORES
=
{}
settings
.
MODULESTORE
=
test_modulestore
TestCase
.
setUpClass
()
@classmethod
def
tearDownClass
(
cls
):
'''
Revert to the old modulestore settings
'''
settings
.
MODULESTORE
=
orig_modulestore
def
_pre_setup
(
self
):
'''
Remove everything but the templates before each test
'''
# Flush anything that is not a template
ModuleStoreTestCase
.
flush_mongo_except_templates
()
# Check that we have templates loaded; if not, load them
ModuleStoreTestCase
.
load_templates_if_necessary
()
# Call superclass implementation
TestCase
.
_pre_setup
(
self
)
self
.
orig_MODULESTORE
=
copy
.
deepcopy
(
settings
.
MODULESTORE
)
self
.
test_MODULESTORE
=
self
.
orig_MODULESTORE
self
.
test_MODULESTORE
[
'default'
][
'OPTIONS'
][
'collection'
]
=
'modulestore_
%
s'
%
uuid4
()
.
hex
self
.
test_MODULESTORE
[
'direct'
][
'OPTIONS'
][
'collection'
]
=
'modulestore_
%
s'
%
uuid4
()
.
hex
settings
.
MODULESTORE
=
self
.
test_MODULESTORE
# Flush and initialize the module store
# It needs the templates because it creates new records
# by cloning from the template.
# Note that if your test module gets in some weird state
# (though it shouldn't), do this manually
# from the bash shell to drop it:
# $ mongo test_xmodule --eval "db.dropDatabase()"
xmodule
.
modulestore
.
django
.
_MODULESTORES
=
{}
update_templates
()
def
_post_teardown
(
self
):
'''
Flush everything we created except the templates
'''
#
Flush anything that is not a template
ModuleStoreTestCase
.
flush_mongo_except_templates
()
# Call superclass implementation
TestCase
.
_post_teardown
(
self
)
# Make sure you flush out the modulestore.
# Drop the collection at the end of the test,
# otherwise there will be lingering collections leftover
#
from executing the tests.
xmodule
.
modulestore
.
django
.
_MODULESTORES
=
{}
xmodule
.
modulestore
.
django
.
modulestore
()
.
collection
.
drop
()
settings
.
MODULESTORE
=
self
.
orig_MODULESTORE
super
(
ModuleStoreTestCase
,
self
)
.
_post_teardown
()
def
parse_json
(
response
):
...
...
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