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
61f86369
Commit
61f86369
authored
Feb 09, 2015
by
Calen Pennington
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #6843 from cpennington/test-for-plat-417
Add tests of PLAT-417
parents
e43f1a8b
79fe947a
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
56 additions
and
12 deletions
+56
-12
cms/djangoapps/contentstore/views/tests/test_item.py
+29
-4
common/lib/xmodule/xmodule/modulestore/tests/django_utils.py
+27
-8
No files found.
cms/djangoapps/contentstore/views/tests/test_item.py
View file @
61f86369
...
...
@@ -25,7 +25,7 @@ from student.tests.factories import UserFactory
from
xmodule.capa_module
import
CapaDescriptor
from
xmodule.modulestore
import
ModuleStoreEnum
from
xmodule.modulestore.django
import
modulestore
from
xmodule.modulestore.tests.django_utils
import
ModuleStoreTestCase
from
xmodule.modulestore.tests.django_utils
import
ModuleStoreTestCase
,
TEST_DATA_SPLIT_MODULESTORE
from
xmodule.modulestore.tests.factories
import
ItemFactory
,
LibraryFactory
,
check_mongo_calls
from
xmodule.x_module
import
STUDIO_VIEW
,
STUDENT_VIEW
from
xblock.exceptions
import
NoSuchHandlerError
...
...
@@ -558,13 +558,13 @@ class TestDuplicateItem(ItemTest):
return
self
.
response_usage_key
(
resp
)
class
TestEditItem
(
ItemTest
):
class
TestEditItem
Setup
(
ItemTest
):
"""
Test xblock update
.
Setup for xblock update tests
.
"""
def
setUp
(
self
):
""" Creates the test course structure and a couple problems to 'edit'. """
super
(
TestEditItem
,
self
)
.
setUp
()
super
(
TestEditItem
Setup
,
self
)
.
setUp
()
# create a chapter
display_name
=
'chapter created'
resp
=
self
.
create_xblock
(
display_name
=
display_name
,
category
=
'chapter'
)
...
...
@@ -587,6 +587,11 @@ class TestEditItem(ItemTest):
self
.
course_update_url
=
reverse_usage_url
(
"xblock_handler"
,
self
.
usage_key
)
class
TestEditItem
(
TestEditItemSetup
):
"""
Test xblock update.
"""
def
test_delete_field
(
self
):
"""
Sending null in for a field 'deletes' it
...
...
@@ -1004,6 +1009,26 @@ class TestEditItem(ItemTest):
self
.
assertIn
(
"Incorrect RelativeTime value"
,
parsed
[
"error"
])
# See xmodule/fields.py
class
TestEditItemSplitMongo
(
TestEditItemSetup
):
"""
Tests for EditItem running on top of the SplitMongoModuleStore.
"""
MODULESTORE
=
TEST_DATA_SPLIT_MODULESTORE
def
test_editing_view_wrappers
(
self
):
"""
Verify that the editing view only generates a single wrapper, no matter how many times it's loaded
Exposes: PLAT-417
"""
view_url
=
reverse_usage_url
(
"xblock_view_handler"
,
self
.
problem_usage_key
,
{
"view_name"
:
STUDIO_VIEW
})
for
__
in
xrange
(
3
):
resp
=
self
.
client
.
get
(
view_url
,
HTTP_ACCEPT
=
'application/json'
)
self
.
assertEqual
(
resp
.
status_code
,
200
)
self
.
assertEqual
(
resp
.
content
.
count
(
'xblock-{}'
.
format
(
STUDIO_VIEW
)),
1
)
class
TestEditSplitModule
(
ItemTest
):
"""
Tests around editing instances of the split_test module.
...
...
common/lib/xmodule/xmodule/modulestore/tests/django_utils.py
View file @
61f86369
...
...
@@ -24,7 +24,12 @@ from xmodule.modulestore.tests.factories import XMODULE_FACTORY_LOCK
from
xmodule.tabs
import
CoursewareTab
,
CourseInfoTab
,
StaticTab
,
DiscussionTab
,
ProgressTab
,
WikiTab
def
mixed_store_config
(
data_dir
,
mappings
,
include_xml
=
False
,
xml_course_dirs
=
None
):
class
StoreConstructors
(
object
):
"""Enumeration of store constructor types."""
draft
,
split
,
xml
=
range
(
3
)
def
mixed_store_config
(
data_dir
,
mappings
,
include_xml
=
False
,
xml_course_dirs
=
None
,
store_order
=
None
):
"""
Return a `MixedModuleStore` configuration, which provides
access to both Mongo- and XML-backed courses.
...
...
@@ -53,20 +58,24 @@ def mixed_store_config(data_dir, mappings, include_xml=False, xml_course_dirs=No
* mappings should be configured, pointing the xml courses to the xml modulestore
"""
stores
=
[
draft_mongo_store_config
(
data_dir
)[
'default'
],
split_mongo_store_config
(
data_dir
)[
'default'
]
]
if
store_order
is
None
:
store_order
=
[
StoreConstructors
.
draft
,
StoreConstructors
.
split
]
if
include_xml
:
stores
.
append
(
xml_store_config
(
data_dir
,
course_dirs
=
xml_course_dirs
)[
'default'
])
if
include_xml
and
StoreConstructors
.
xml
not
in
store_order
:
store_order
.
append
(
StoreConstructors
.
xml
)
store_constructors
=
{
StoreConstructors
.
split
:
split_mongo_store_config
(
data_dir
)[
'default'
],
StoreConstructors
.
draft
:
draft_mongo_store_config
(
data_dir
)[
'default'
],
StoreConstructors
.
xml
:
xml_store_config
(
data_dir
,
course_dirs
=
xml_course_dirs
)[
'default'
],
}
store
=
{
'default'
:
{
'ENGINE'
:
'xmodule.modulestore.mixed.MixedModuleStore'
,
'OPTIONS'
:
{
'mappings'
:
mappings
,
'stores'
:
stores
,
'stores'
:
[
store_constructors
[
store
]
for
store
in
store_order
]
,
}
}
}
...
...
@@ -177,6 +186,16 @@ TEST_DATA_MIXED_GRADED_MODULESTORE = mixed_store_config(
# This modulestore definition below will not load any xml courses.
TEST_DATA_MONGO_MODULESTORE
=
mixed_store_config
(
mkdtemp
(),
{},
include_xml
=
False
)
# All store requests now go through mixed
# Use this modulestore if you specifically want to test split-mongo and not a mocked modulestore.
# This modulestore definition below will not load any xml courses.
TEST_DATA_SPLIT_MODULESTORE
=
mixed_store_config
(
mkdtemp
(),
{},
include_xml
=
False
,
store_order
=
[
StoreConstructors
.
split
,
StoreConstructors
.
draft
]
)
# Unit tests that are not specifically testing the modulestore implementation but just need course context can use a mocked modulestore.
# Use this modulestore if you do not care about the underlying implementation.
# TODO: acutally mock out the modulestore for this in a subsequent PR.
...
...
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