Merge remote-tracking branch 'origin/feature/alex/poll-merged' into feature/alex/poll-merged
This commit is contained in:
@@ -70,7 +70,7 @@ class ConditionalModuleTest(unittest.TestCase):
|
||||
"""Make sure that conditional module works"""
|
||||
|
||||
print "Starting import"
|
||||
course = self.get_course('conditional')
|
||||
course = self.get_course('conditional_and_poll')
|
||||
|
||||
print "Course: ", course
|
||||
print "id: ", course.id
|
||||
@@ -82,7 +82,9 @@ class ConditionalModuleTest(unittest.TestCase):
|
||||
location = descriptor.location
|
||||
return descriptor.xmodule(test_system)
|
||||
|
||||
location = Location(["i4x", "edX", "cond_test", "conditional", "condone"])
|
||||
# edx - HarvardX
|
||||
# cond_test - ER22x
|
||||
location = Location(["i4x", "HarvardX", "ER22x", "conditional", "condone"])
|
||||
|
||||
def replace_urls(text, staticfiles_prefix=None, replace_prefix='/static/', course_namespace=None):
|
||||
return text
|
||||
@@ -91,14 +93,14 @@ class ConditionalModuleTest(unittest.TestCase):
|
||||
|
||||
module = inner_get_module(location)
|
||||
print "module: ", module
|
||||
print "module.condition: ", module.condition
|
||||
print "module.conditions_map: ", module.conditions_map
|
||||
print "module children: ", module.get_children()
|
||||
print "module display items (children): ", module.get_display_items()
|
||||
|
||||
html = module.get_html()
|
||||
print "html type: ", type(html)
|
||||
print "html: ", html
|
||||
html_expect = "{'ajax_url': 'courses/course_id/modx/a_location', 'element_id': 'i4x-edX-cond_test-conditional-condone', 'id': 'i4x://edX/cond_test/conditional/condone'}"
|
||||
html_expect = "{'ajax_url': 'courses/course_id/modx/a_location', 'element_id': 'i4x-HarvardX-ER22x-conditional-condone', 'id': 'i4x://HarvardX/ER22x/conditional/condone', 'depends': 'i4x-HarvardX-ER22x-problem-choiceprob'}"
|
||||
self.assertEqual(html, html_expect)
|
||||
|
||||
gdi = module.get_display_items()
|
||||
@@ -106,11 +108,13 @@ class ConditionalModuleTest(unittest.TestCase):
|
||||
|
||||
ajax = json.loads(module.handle_ajax('', ''))
|
||||
print "ajax: ", ajax
|
||||
self.assertTrue('ConditionalModule' in ajax['html'])
|
||||
html = ajax['html']
|
||||
self.assertFalse(any(['This is a secret' in item for item in html]))
|
||||
|
||||
# now change state of the capa problem to make it completed
|
||||
inner_get_module(Location('i4x://edX/cond_test/problem/choiceprob')).attempts = 1
|
||||
inner_get_module(Location('i4x://HarvardX/ER22x/problem/choiceprob')).attempts = 1
|
||||
|
||||
ajax = json.loads(module.handle_ajax('', ''))
|
||||
print "post-attempt ajax: ", ajax
|
||||
self.assertTrue('This is a secret' in ajax['html'])
|
||||
html = ajax['html']
|
||||
self.assertTrue(any(['This is a secret' in item for item in html]))
|
||||
|
||||
@@ -3,20 +3,23 @@
|
||||
import json
|
||||
import unittest
|
||||
|
||||
from xmodule.poll_module import PollModule
|
||||
from xmodule.conditional_module import ConditionalModule
|
||||
from xmodule.poll_module import PollDescriptor
|
||||
from xmodule.conditional_module import ConditionalDescriptor
|
||||
|
||||
|
||||
class LogicTest(unittest.TestCase):
|
||||
"""Base class for testing xmodule logic."""
|
||||
xmodule_class = None
|
||||
descriptor_class = None
|
||||
raw_model_data = {}
|
||||
|
||||
def setUp(self):
|
||||
class EmptyClass: pass
|
||||
|
||||
self.system = None
|
||||
self.location = None
|
||||
self.descriptor = None
|
||||
self.descriptor = EmptyClass()
|
||||
|
||||
self.xmodule_class = self.descriptor_class.module_class
|
||||
self.xmodule = self.xmodule_class(self.system, self.location,
|
||||
self.descriptor, self.raw_model_data)
|
||||
|
||||
@@ -25,7 +28,7 @@ class LogicTest(unittest.TestCase):
|
||||
|
||||
|
||||
class PollModuleTest(LogicTest):
|
||||
xmodule_class = PollModule
|
||||
descriptor_class = PollDescriptor
|
||||
raw_model_data = {
|
||||
'poll_answers': {'Yes': 1, 'Dont_know': 0, 'No': 0},
|
||||
'voted': False,
|
||||
@@ -50,16 +53,14 @@ class PollModuleTest(LogicTest):
|
||||
|
||||
|
||||
class ConditionalModuleTest(LogicTest):
|
||||
xmodule_class = ConditionalModule
|
||||
raw_model_data = {
|
||||
'contents': 'Some content'
|
||||
}
|
||||
descriptor_class = ConditionalDescriptor
|
||||
|
||||
def test_ajax_request(self):
|
||||
# Mock is_condition_satisfied
|
||||
self.xmodule.is_condition_satisfied = lambda: True
|
||||
setattr(self.xmodule.descriptor, 'get_children', lambda: [])
|
||||
|
||||
response = self.ajax_request('No', {})
|
||||
html = response['html']
|
||||
|
||||
self.assertEqual(html, 'Some content')
|
||||
self.assertEqual(html, [])
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
<conditional attempted="True" sources="i4x://HarvardX/ER22x/problem/choiceprob">
|
||||
<html url_name="secret_page" />
|
||||
</conditional>
|
||||
@@ -2,5 +2,11 @@
|
||||
Take note of this name exactly, you'll need to use it everywhere. -->
|
||||
<course>
|
||||
<chapter url_name="Staff"/>
|
||||
<chapter name="Problems with Condition">
|
||||
<sequential>
|
||||
<problem url_name="choiceprob" />
|
||||
<conditional url_name="condone"/>
|
||||
</sequential>
|
||||
</chapter>
|
||||
</course>
|
||||
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
<html display_name="Secret Page">
|
||||
<p>This is a secret!</p>
|
||||
</html>
|
||||
|
||||
22
common/test/data/conditional_and_poll/problem/choiceprob.xml
Normal file
22
common/test/data/conditional_and_poll/problem/choiceprob.xml
Normal file
@@ -0,0 +1,22 @@
|
||||
<problem display_name="S3E2: Lorentz Force">
|
||||
|
||||
<startouttext/>
|
||||
<p>Consider a hypothetical magnetic field pointing out of your computer screen. Now imagine an electron traveling from right to left in the plane of your screen. A diagram of this situation is show below…</p>
|
||||
<center><img width="400" src="/static/images/LSQimages/LSQ_W01_8.png"/></center>
|
||||
|
||||
<p>a. The magnitude of the force experienced by the electron is proportional the product of which of the following? (Select all that apply.)</p>
|
||||
<endouttext/>
|
||||
<choiceresponse>
|
||||
<checkboxgroup>
|
||||
<!-- include ellipses to test non-ascii characters -->
|
||||
<choice correct="true"><text>Magnetic field strength…</text></choice>
|
||||
<choice correct="false"><text>Electric field strength…</text></choice>
|
||||
<choice correct="true"><text>Electric charge of the electron…</text></choice>
|
||||
<choice correct="false"><text>Radius of the electron…</text></choice>
|
||||
<choice correct="false"><text>Mass of the electron…</text></choice>
|
||||
<choice correct="true"><text>Velocity of the electron…</text></choice>
|
||||
|
||||
</checkboxgroup>
|
||||
</choiceresponse>
|
||||
|
||||
</problem>
|
||||
Reference in New Issue
Block a user