@@ -1918,3 +1918,57 @@ def test_manifest_structure_single_item(self):
19181918 self ._normalize_xml (expected_manifest_xml ),
19191919 self ._normalize_xml (actual_manifest_xml ),
19201920 )
1921+
1922+ def test_input_question (self ):
1923+ assessment_id = "fedcba0987654321fedcba0987654321"
1924+ item = self ._create_assessment_item (
1925+ exercises .INPUT_QUESTION ,
1926+ "What positive integers are less than 3?" ,
1927+ [
1928+ {"answer" : 1 , "correct" : True , "order" : 1 },
1929+ {"answer" : 2 , "correct" : True , "order" : 2 },
1930+ ],
1931+ assessment_id = assessment_id ,
1932+ )
1933+
1934+ exercise_data = {
1935+ "mastery_model" : exercises .M_OF_N ,
1936+ "randomize" : True ,
1937+ "n" : 1 ,
1938+ "m" : 1 ,
1939+ "all_assessment_items" : [item .assessment_id ],
1940+ "assessment_mapping" : {item .assessment_id : exercises .INPUT_QUESTION },
1941+ }
1942+
1943+ self ._create_qti_zip (exercise_data )
1944+ exercise_file = self .exercise_node .files .get (preset_id = format_presets .QTI_ZIP )
1945+ zip_file = self ._validate_qti_zip_structure (exercise_file )
1946+
1947+ # Check the QTI XML for text entry specifics
1948+ expected_item_file = "items/K_ty6CYdlQyH-3LoJh2VDIQ.xml"
1949+ actual_item_xml = zip_file .read (expected_item_file ).decode ("utf-8" )
1950+
1951+ # Expected QTI item XML content for text entry
1952+ expected_item_xml = """<?xml version="1.0" encoding="UTF-8"?>
1953+ <qti-assessment-item xmlns="http://www.imsglobal.org/xsd/imsqtiasi_v3p0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.imsglobal.org/xsd/imsqtiasi_v3p0 https://purl.imsglobal.org/spec/qti/v3p0/schema/xsd/imsqti_asiv3p0p1_v1p0.xsd" identifier="K_ty6CYdlQyH-3LoJh2VDIQ" title="Test QTI Exercise 1" adaptive="false" time-dependent="false" language="en-US" tool-name="kolibri" tool-version="0.1">
1954+ <qti-response-declaration identifier="RESPONSE" cardinality="multiple" base-type="float">
1955+ <qti-correct-response>
1956+ <qti-value>1</qti-value>
1957+ <qti-value>2</qti-value>
1958+ </qti-correct-response>
1959+ </qti-response-declaration>
1960+ <qti-outcome-declaration identifier="SCORE" cardinality="single" base-type="float" />
1961+ <qti-item-body>
1962+ <div>
1963+ <p>What positive integers are less than 3?</p>
1964+ <p><qti-text-entry-interaction response-identifier="RESPONSE" expected-length="50" placeholder-text="Enter your answer here" /></p>
1965+ </div>
1966+ </qti-item-body>
1967+ <qti-response-processing template="https://purl.imsglobal.org/spec/qti/v3p0/rptemplates/match_correct" />
1968+ </qti-assessment-item>"""
1969+
1970+ # Compare normalized XML
1971+ self .assertEqual (
1972+ self ._normalize_xml (expected_item_xml ),
1973+ self ._normalize_xml (actual_item_xml ),
1974+ )
0 commit comments