Commit 6c1be448 by Usman Khalid

Added tests for prompts field.

TNL-708
parent 2b396453
"""An XBlock where students can read a question and compose their response""" """An XBlock where students can read a question and compose their response"""
import datetime as dt import datetime as dt
import json
import logging import logging
import pkg_resources import pkg_resources
import copy import copy
...@@ -470,7 +471,7 @@ class OpenAssessmentBlock( ...@@ -470,7 +471,7 @@ class OpenAssessmentBlock(
""" """
if value is None: if value is None:
self.prompt = '' self.prompt = None
elif len(value) == 1: elif len(value) == 1:
# For backwards compatibility. To be removed after all code # For backwards compatibility. To be removed after all code
# is migrated to use prompts property instead of prompt field. # is migrated to use prompts property instead of prompt field.
......
# -*- coding: utf-8 -*-
"""
Test OpenAssessment XBlock data_conversion.
"""
import ddt
import mock
from django.test import TestCase
from openassessment.xblock.data_conversion import (
create_prompts_list,
)
@ddt.ddt
class DataConversionTest(TestCase):
@ddt.data(
(None, [{'description': ''}]),
('Test prompt.', [{'description': 'Test prompt.'}]),
('[{"description": "Test prompt."}]', [{'description': 'Test prompt.'}]),
)
@ddt.unpack
def test_create_prompts_list(self, input, output):
self.assertEqual(create_prompts_list(input), output)
...@@ -170,6 +170,30 @@ class TestOpenAssessment(XBlockHandlerTestCase): ...@@ -170,6 +170,30 @@ class TestOpenAssessment(XBlockHandlerTestCase):
# Check that we can render the student view without error # Check that we can render the student view without error
self.runtime.render(xblock, 'student_view') self.runtime.render(xblock, 'student_view')
@scenario('data/basic_scenario.xml', user_id='Bob')
def test_prompts_fields(self, xblock):
self.assertEqual(xblock.prompts, [{'description':'Read for conciseness, clarity of thought, and form.'}])
xblock.prompt = None
self.assertEqual(xblock.prompts, [{'description': ''}])
xblock.prompt = 'Prompt.'
self.assertEqual(xblock.prompts, [{'description': 'Prompt.'}])
xblock.prompt = '[{"description": "Prompt 1."}, {"description": "Prompt 2."}, {"description": "Prompt 3."}]'
self.assertEqual(xblock.prompts, [
{'description': 'Prompt 1.'}, {'description': 'Prompt 2.'}, {'description': 'Prompt 3.'}
])
xblock.prompts = None
self.assertEqual(xblock.prompt, None)
xblock.prompts = [{'description': 'Prompt.'}]
self.assertEqual(xblock.prompt, 'Prompt.')
xblock.prompts = [{'description': 'Prompt 4.'}, {'description': 'Prompt 5.'}]
self.assertEqual(xblock.prompt, '[{"description": "Prompt 4."}, {"description": "Prompt 5."}]')
class TestDates(XBlockHandlerTestCase): class TestDates(XBlockHandlerTestCase):
......
...@@ -11,7 +11,7 @@ import dateutil.parser ...@@ -11,7 +11,7 @@ import dateutil.parser
from django.test import TestCase from django.test import TestCase
import ddt import ddt
from openassessment.xblock.data_conversion import create_prompts_dict from openassessment.xblock.data_conversion import create_prompts_list
from openassessment.xblock.openassessmentblock import OpenAssessmentBlock from openassessment.xblock.openassessmentblock import OpenAssessmentBlock
from openassessment.xblock.xml import ( from openassessment.xblock.xml import (
serialize_content, parse_from_xml_str, parse_rubric_xml, serialize_content, parse_from_xml_str, parse_rubric_xml,
...@@ -101,7 +101,7 @@ class TestSerializeContent(TestCase): ...@@ -101,7 +101,7 @@ class TestSerializeContent(TestCase):
def _configure_xblock(self, data): def _configure_xblock(self, data):
self.oa_block.title = data.get('title', '') self.oa_block.title = data.get('title', '')
self.oa_block.prompt = data.get('prompt') self.oa_block.prompt = data.get('prompt')
self.oa_block.prompts = create_prompts_dict(data.get('prompt')) self.oa_block.prompts = create_prompts_list(data.get('prompt'))
self.oa_block.rubric_feedback_prompt = data.get('rubric_feedback_prompt') self.oa_block.rubric_feedback_prompt = data.get('rubric_feedback_prompt')
self.oa_block.rubric_feedback_default_text = data.get('rubric_feedback_default_text') self.oa_block.rubric_feedback_default_text = data.get('rubric_feedback_default_text')
self.oa_block.start = _parse_date(data.get('start')) self.oa_block.start = _parse_date(data.get('start'))
......
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