@@ -215,6 +215,50 @@ export const ORDERING_ITEM_XML = `<?xml version="1.0" encoding="UTF-8"?>
215215 </qti-item-body>
216216</qti-assessment-item>` ;
217217
218+ /**
219+ * Demo item 7: associate interaction — learner connects countries to capitals.
220+ * Uses cardinality="multiple" and base-type="pair" per QTI 3.0 §3.2.13.
221+ */
222+ export const ASSOCIATE_ITEM_XML = `<?xml version="1.0" encoding="UTF-8"?>
223+ <qti-assessment-item
224+ xmlns="http://www.imsglobal.org/xsd/imsqtiasi_v3p0"
225+ identifier="item-associate"
226+ title="Match each country with its capital city"
227+ adaptive="false"
228+ time-dependent="false"
229+ xml:lang="en"
230+ >
231+ <qti-response-declaration
232+ identifier="RESPONSE"
233+ cardinality="multiple"
234+ base-type="pair"
235+ >
236+ <qti-correct-response>
237+ <qti-value>choice_kenya choice_nairobi</qti-value>
238+ <qti-value>choice_japan choice_tokyo</qti-value>
239+ <qti-value>choice_brazil choice_brasilia</qti-value>
240+ </qti-correct-response>
241+ </qti-response-declaration>
242+
243+ <qti-item-body>
244+ <qti-associate-interaction
245+ response-identifier="RESPONSE"
246+ shuffle="true"
247+ max-associations="3"
248+ >
249+ <qti-prompt><p>Match each country with its capital city:</p></qti-prompt>
250+ <qti-simple-associable-choice identifier="choice_kenya" match-max="1">Kenya</qti-simple-associable-choice>
251+ <qti-simple-associable-choice identifier="choice_nairobi" match-max="1">Nairobi</qti-simple-associable-choice>
252+ <qti-simple-associable-choice identifier="choice_japan" match-max="1">Japan</qti-simple-associable-choice>
253+ <qti-simple-associable-choice identifier="choice_tokyo" match-max="1">Tokyo</qti-simple-associable-choice>
254+ <qti-simple-associable-choice identifier="choice_brazil" match-max="1">Brazil</qti-simple-associable-choice>
255+ <qti-simple-associable-choice identifier="choice_brasilia" match-max="1">Brasília</qti-simple-associable-choice>
256+ <qti-simple-associable-choice identifier="choice_mombasa" match-max="1">Mombasa</qti-simple-associable-choice>
257+ <qti-simple-associable-choice identifier="choice_osaka" match-max="1">Osaka</qti-simple-associable-choice>
258+ </qti-associate-interaction>
259+ </qti-item-body>
260+ </qti-assessment-item>` ;
261+
218262/**
219263 * Hardcoded items covering different states:
220264 * - item-1: single-select choice interaction
@@ -223,6 +267,7 @@ export const ORDERING_ITEM_XML = `<?xml version="1.0" encoding="UTF-8"?>
223267 * - item-text-entry: string text-entry with case-sensitive answers
224268 * - item-free-response: free-response text-entry (no correct answer)
225269 * - item-ordering: ordering interaction (planets by distance from the Sun)
270+ * - item-associate: associate interaction (countries to capitals, with distractors)
226271 */
227272export const INITIAL_ASSESSMENTS = [
228273 {
@@ -255,4 +300,9 @@ export const INITIAL_ASSESSMENTS = [
255300 type : AssessmentItemTypes . QTI ,
256301 raw_data : ORDERING_ITEM_XML ,
257302 } ,
303+ {
304+ assessment_id : 'demo-item-associate' ,
305+ type : AssessmentItemTypes . QTI ,
306+ raw_data : ASSOCIATE_ITEM_XML ,
307+ } ,
258308] ;
0 commit comments