qti 0.6.4 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/qti/assessment_item_exporter.rb +1 -3
- data/lib/qti/content_packaging/assessment_test.rb +0 -1
- data/lib/qti/exporter.rb +25 -30
- data/lib/qti/v1/models/interactions/match_interaction.rb +2 -2
- data/lib/qti/v2/models/interactions/match_item_tag_processors/associate_interaction_tag_processor.rb +1 -1
- data/lib/qti/v2/models/interactions/match_item_tag_processors/match_interaction_tag_processor.rb +1 -1
- data/spec/lib/qti/assessment_item_exporter_spec.rb +1 -1
- data/spec/lib/qti/exporter_spec.rb +65 -69
- data/spec/lib/qti/v1/models/interactions/match_interaction_spec.rb +2 -2
- data/spec/lib/qti/v2/models/interactions/match_interaction_spec.rb +8 -8
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: a232ed3a1f3603a43d9e787e12b2489512710deb
|
|
4
|
+
data.tar.gz: fd8c8946f8da1404adbc204e9a57ccfa4b0376ce
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 692d2995082e0573277b54fef1947994229d5bf5fbde4ba01302903beb8c96eddf804ccff6a75143e5e3cbc471f835198c939a7485052f2e7f08fc547bcef3f5
|
|
7
|
+
data.tar.gz: da528527b15aa0886d22e2834ca3af8f47da0b4010e7d9f9d78b19816247fbd03edf1e12b3d4e3301474c7844d807aac07220442e700cc2106627b90f88dd182
|
|
@@ -63,9 +63,7 @@ module Qti
|
|
|
63
63
|
{ 'xmlns' => 'http://www.imsglobal.org/xsd/imsqti_v2p2', 'xmlns:xi' => 'http://www.w3.org/2001/XInclude',
|
|
64
64
|
'xmlns:m' => 'http://www.w3.org/1998/Math/MathML', 'xmlns:xsi' => 'http://www.w3.org/2001/XMLSchema-instance',
|
|
65
65
|
'xsi:schemaLocation' => 'http://www.imsglobal.org/xsd/imsqti_v2p2 ' \
|
|
66
|
-
'http://www.imsglobal.org/xsd/qti/qtiv2p2/imsqti_v2p2.xsd'
|
|
67
|
-
'timeDependent' => 'false', 'identifier' => "Item-#{assessment_item.identifier}",
|
|
68
|
-
'title' => assessment_item.title }
|
|
66
|
+
'http://www.imsglobal.org/xsd/qti/qtiv2p2/imsqti_v2p2.xsd' }
|
|
69
67
|
end
|
|
70
68
|
end
|
|
71
69
|
end
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
module Qti
|
|
2
2
|
module ContentPackaging
|
|
3
3
|
class AssessmentTest < Dry::Struct
|
|
4
|
-
attribute :identifier, Types::Strict::String
|
|
5
4
|
attribute :title, Types::Strict::String
|
|
6
5
|
attribute :items, Types::Strict::Array.member(ContentPackaging::AssessmentItem)
|
|
7
6
|
attribute :outcome_declarations, Types::Strict::Array.member(ContentPackaging::OutcomeDeclaration)
|
data/lib/qti/exporter.rb
CHANGED
|
@@ -25,7 +25,7 @@ module Qti
|
|
|
25
25
|
end
|
|
26
26
|
|
|
27
27
|
def file_timestamp
|
|
28
|
-
Time.now.utc.strftime('%Y%m%d%H%M%S
|
|
28
|
+
Time.now.utc.strftime('%Y%m%d%H%M%S')
|
|
29
29
|
end
|
|
30
30
|
|
|
31
31
|
def create_assessment_xml
|
|
@@ -36,9 +36,9 @@ module Qti
|
|
|
36
36
|
|
|
37
37
|
def assessment_xml_string
|
|
38
38
|
Nokogiri::XML::Builder.new(encoding: 'UTF-8') do |xml|
|
|
39
|
-
xml.assessmentTest(assesment_test_attributes) do
|
|
39
|
+
xml.assessmentTest(assesment_test_attributes(title: assessment_test.title)) do
|
|
40
40
|
outcome_declarations(xml, assessment_test)
|
|
41
|
-
xml.testPart
|
|
41
|
+
xml.testPart do
|
|
42
42
|
xml_assessment_section(xml)
|
|
43
43
|
end
|
|
44
44
|
end
|
|
@@ -70,7 +70,6 @@ module Qti
|
|
|
70
70
|
builder = Nokogiri::XML::Builder.new(encoding: 'UTF-8') do |xml|
|
|
71
71
|
xml.manifest(imsmanifest_attributes) do
|
|
72
72
|
manifest_metadata(xml)
|
|
73
|
-
xml.organizations
|
|
74
73
|
manifest_resources(xml)
|
|
75
74
|
end
|
|
76
75
|
end
|
|
@@ -88,29 +87,29 @@ module Qti
|
|
|
88
87
|
end
|
|
89
88
|
end
|
|
90
89
|
|
|
91
|
-
# rubocop:disable Metrics/AbcSize
|
|
92
90
|
def learning_object_metadata(xml)
|
|
93
|
-
xml['imsmd']
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
91
|
+
imsmd_ns = xml['imsmd']
|
|
92
|
+
|
|
93
|
+
imsmd_ns.lom do
|
|
94
|
+
imsmd_ns.general do
|
|
95
|
+
imsmd_ns.identifier do
|
|
96
|
+
imsmd_ns.entry 'FB-02'
|
|
97
97
|
end
|
|
98
|
-
|
|
99
|
-
|
|
98
|
+
imsmd_ns.title do
|
|
99
|
+
imsmd_ns.string(assessment_test.title, 'language' => 'en')
|
|
100
100
|
end
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
101
|
+
imsmd_ns.language 'en'
|
|
102
|
+
imsmd_ns.description do
|
|
103
|
+
imsmd_ns.string('Instructure QTI package.' \
|
|
104
104
|
'Feedback XML used as an example of unprocessable entity', 'language' => 'en')
|
|
105
105
|
end
|
|
106
|
-
keywords(xml)
|
|
107
106
|
end
|
|
107
|
+
keywords(xml)
|
|
108
108
|
end
|
|
109
109
|
end
|
|
110
|
-
# rubocop:enable Metrics/AbcSize
|
|
111
110
|
|
|
112
111
|
def keywords(xml)
|
|
113
|
-
keywords = %w
|
|
112
|
+
keywords = %w(feedback modal test inline block)
|
|
114
113
|
keywords.each do |keyword|
|
|
115
114
|
xml['imsmd'].keyword do
|
|
116
115
|
xml['imsmd'].string(keyword, 'language' => 'en')
|
|
@@ -135,25 +134,21 @@ module Qti
|
|
|
135
134
|
end
|
|
136
135
|
end
|
|
137
136
|
|
|
138
|
-
def assesment_test_attributes
|
|
139
|
-
{ 'xmlns' => 'http://www.imsglobal.org/xsd/
|
|
137
|
+
def assesment_test_attributes(args = {})
|
|
138
|
+
{ 'xmlns' => 'http://www.imsglobal.org/xsd/imsqti_v2p2', 'xmlns:xi' => 'http://www.w3.org/2001/XInclude',
|
|
140
139
|
'xmlns:m' => 'http://www.w3.org/1998/Math/MathML', 'xmlns:xsi' => 'http://www.w3.org/2001/XMLSchema-instance',
|
|
141
140
|
'xsi:schemaLocation' => 'http://www.imsglobal.org/xsd/imsqti_v2p2 ' \
|
|
142
|
-
|
|
143
|
-
'title' => assessment_test.title }
|
|
141
|
+
'http://www.imsglobal.org/xsd/qti/qtiv2p2/imsqti_v2p2.xsd' }.merge(args)
|
|
144
142
|
end
|
|
145
143
|
|
|
146
144
|
def imsmanifest_attributes
|
|
147
|
-
{ 'xmlns' => 'http://www.imsglobal.org/xsd/imscp_v1p1',
|
|
148
|
-
'xmlns:
|
|
149
|
-
'
|
|
150
|
-
|
|
151
|
-
'xsi:schemaLocation' => 'http://www.imsglobal.org/xsd/imsqti_v2p2 ' \
|
|
152
|
-
'http://www.imsglobal.org/xsd/qti/qtiv2p2/imsqti_v2p2.xsd ' \
|
|
145
|
+
{ 'xmlns' => 'http://www.imsglobal.org/xsd/imscp_v1p1', 'xmlns:imsmd' => 'http://ltsc.ieee.org/xsd/LOM',
|
|
146
|
+
'xmlns:imsqti' => 'http://www.imsglobal.org/xsd/imsqti_v2p2', 'xmlns:xsi' => 'http://www.w3.org/2001/XMLSchema-instance',
|
|
147
|
+
'xsi:schemaLocation' => 'http://www.imsglobal.org/xsd/imscp_v1p1 ' \
|
|
148
|
+
'http://www.imsglobal.org/xsd/qti/qtiv2p2/qtiv2p2_imscpv1p2_v1p0.xsd' \
|
|
153
149
|
'http://ltsc.ieee.org/xsd/LOM http://www.imsglobal.org/xsd/imsmd_loose_v1p3p2.xsd' \
|
|
154
|
-
'http://www.imsglobal.org/xsd/
|
|
155
|
-
'http://www.imsglobal.org/xsd/qti/qtiv2p2/
|
|
156
|
-
'identifier' => assessment_test.identifier }
|
|
150
|
+
'http://www.imsglobal.org/xsd/imsqti_metadata_v2p2' \
|
|
151
|
+
'http://www.imsglobal.org/xsd/qti/qtiv2p2/imsqti_metadata_v2p2.xsd' }
|
|
157
152
|
end
|
|
158
153
|
|
|
159
154
|
def compress_package
|
|
@@ -17,8 +17,8 @@ module Qti
|
|
|
17
17
|
|
|
18
18
|
def questions
|
|
19
19
|
node.xpath('.//xmlns:response_lid').map do |lid_node|
|
|
20
|
-
|
|
21
|
-
{ id: lid_node.attributes['ident'].value,
|
|
20
|
+
item_body = lid_node.at_xpath('.//xmlns:mattext').text
|
|
21
|
+
{ id: lid_node.attributes['ident'].value, itemBody: item_body }
|
|
22
22
|
end
|
|
23
23
|
end
|
|
24
24
|
|
|
@@ -27,7 +27,7 @@ describe Qti::AssessmentItemExporter do
|
|
|
27
27
|
expect(exporter.exported_file_path).to have_file_content(
|
|
28
28
|
<<-XML.strip_heredoc
|
|
29
29
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
30
|
-
<assessmentItem xmlns="http://www.imsglobal.org/xsd/imsqti_v2p2" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.imsglobal.org/xsd/imsqti_v2p2 http://www.imsglobal.org/xsd/qti/qtiv2p2/imsqti_v2p2.xsd"
|
|
30
|
+
<assessmentItem xmlns="http://www.imsglobal.org/xsd/imsqti_v2p2" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.imsglobal.org/xsd/imsqti_v2p2 http://www.imsglobal.org/xsd/qti/qtiv2p2/imsqti_v2p2.xsd">
|
|
31
31
|
<responseDeclaration identifier="RESPONSE" cardinality="single" baseType="identifier">
|
|
32
32
|
<correctResponse>
|
|
33
33
|
<value>true</value>
|
|
@@ -1,40 +1,38 @@
|
|
|
1
1
|
require 'spec_helper'
|
|
2
2
|
|
|
3
3
|
describe Qti::Exporter do
|
|
4
|
+
let(:assessment_test) do
|
|
5
|
+
Qti::ContentPackaging::AssessmentTest.new(
|
|
6
|
+
title: 'Example test',
|
|
7
|
+
items: [
|
|
8
|
+
Qti::ContentPackaging::AssessmentItem.new(
|
|
9
|
+
identifier: '0b8664be39cf69ef76402f3e41eb05', title: 'Question 1', response: 'true',
|
|
10
|
+
interaction: Qti::ContentPackaging::ChoiceInteraction.new(
|
|
11
|
+
prompt: 'Is 1+1 equals 2?', maxChoices: 1,
|
|
12
|
+
choices: [
|
|
13
|
+
Qti::ContentPackaging::SimpleChoice.new(
|
|
14
|
+
identifier: 'true', body: 'True'
|
|
15
|
+
),
|
|
16
|
+
Qti::ContentPackaging::SimpleChoice.new(
|
|
17
|
+
identifier: 'false', body: 'False'
|
|
18
|
+
)
|
|
19
|
+
]
|
|
20
|
+
)
|
|
21
|
+
)
|
|
22
|
+
],
|
|
23
|
+
outcome_declarations: [
|
|
24
|
+
Qti::ContentPackaging::OutcomeDeclaration.new(
|
|
25
|
+
identifier: 'TEST_total', baseType: 'float', cardinality: 'single', defaultValue: 0.0
|
|
26
|
+
),
|
|
27
|
+
Qti::ContentPackaging::OutcomeDeclaration.new(
|
|
28
|
+
identifier: 'S1', baseType: 'float', cardinality: 'single', defaultValue: 0.0
|
|
29
|
+
)
|
|
30
|
+
]
|
|
31
|
+
)
|
|
32
|
+
end
|
|
33
|
+
|
|
4
34
|
describe '#export' do
|
|
5
35
|
let(:dir) { Dir.mktmpdir }
|
|
6
|
-
let(:test_identifier) { SecureRandom.uuid }
|
|
7
|
-
let(:item_identifier) { SecureRandom.uuid }
|
|
8
|
-
let(:assessment_test) do
|
|
9
|
-
Qti::ContentPackaging::AssessmentTest.new(
|
|
10
|
-
identifier: test_identifier,
|
|
11
|
-
title: 'Example test',
|
|
12
|
-
items: [
|
|
13
|
-
Qti::ContentPackaging::AssessmentItem.new(
|
|
14
|
-
identifier: item_identifier, title: 'Question 1', response: 'true',
|
|
15
|
-
interaction: Qti::ContentPackaging::ChoiceInteraction.new(
|
|
16
|
-
prompt: 'Is 1+1 equals 2?', maxChoices: 1,
|
|
17
|
-
choices: [
|
|
18
|
-
Qti::ContentPackaging::SimpleChoice.new(
|
|
19
|
-
identifier: 'true', body: 'True'
|
|
20
|
-
),
|
|
21
|
-
Qti::ContentPackaging::SimpleChoice.new(
|
|
22
|
-
identifier: 'false', body: 'False'
|
|
23
|
-
)
|
|
24
|
-
]
|
|
25
|
-
)
|
|
26
|
-
)
|
|
27
|
-
],
|
|
28
|
-
outcome_declarations: [
|
|
29
|
-
Qti::ContentPackaging::OutcomeDeclaration.new(
|
|
30
|
-
identifier: 'TEST_total', baseType: 'float', cardinality: 'single', defaultValue: 0.0
|
|
31
|
-
),
|
|
32
|
-
Qti::ContentPackaging::OutcomeDeclaration.new(
|
|
33
|
-
identifier: 'S1', baseType: 'float', cardinality: 'single', defaultValue: 0.0
|
|
34
|
-
)
|
|
35
|
-
]
|
|
36
|
-
)
|
|
37
|
-
end
|
|
38
36
|
let(:exporter) { Qti::Exporter.new(assessment_test, package_root_path: dir) }
|
|
39
37
|
|
|
40
38
|
before do
|
|
@@ -44,7 +42,6 @@ describe Qti::Exporter do
|
|
|
44
42
|
context 'empty assessment' do
|
|
45
43
|
let(:assessment_test) do
|
|
46
44
|
Qti::ContentPackaging::AssessmentTest.new(
|
|
47
|
-
identifier: test_identifier,
|
|
48
45
|
title: 'Empty test',
|
|
49
46
|
items: [],
|
|
50
47
|
outcome_declarations: []
|
|
@@ -55,8 +52,8 @@ describe Qti::Exporter do
|
|
|
55
52
|
expect(exporter.exported_file_path).to have_zip_entry('assessment.xml').with_content(
|
|
56
53
|
<<-XML.strip_heredoc
|
|
57
54
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
58
|
-
<assessmentTest xmlns="http://www.imsglobal.org/xsd/
|
|
59
|
-
<testPart
|
|
55
|
+
<assessmentTest xmlns="http://www.imsglobal.org/xsd/imsqti_v2p2" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.imsglobal.org/xsd/imsqti_v2p2 http://www.imsglobal.org/xsd/qti/qtiv2p2/imsqti_v2p2.xsd" title="Empty test">
|
|
56
|
+
<testPart/>
|
|
60
57
|
</assessmentTest>
|
|
61
58
|
XML
|
|
62
59
|
)
|
|
@@ -64,11 +61,11 @@ describe Qti::Exporter do
|
|
|
64
61
|
end
|
|
65
62
|
|
|
66
63
|
it 'generates the xml for an assessment with an item' do
|
|
67
|
-
expect(exporter.exported_file_path).to contain_zip_entry(
|
|
64
|
+
expect(exporter.exported_file_path).to contain_zip_entry('0b8664be39cf69ef76402f3e41eb05.xml')
|
|
68
65
|
expect(exporter.exported_file_path).to have_zip_entry('assessment.xml').with_content(
|
|
69
66
|
<<-XML.strip_heredoc
|
|
70
67
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
71
|
-
<assessmentTest xmlns="http://www.imsglobal.org/xsd/
|
|
68
|
+
<assessmentTest xmlns="http://www.imsglobal.org/xsd/imsqti_v2p2" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.imsglobal.org/xsd/imsqti_v2p2 http://www.imsglobal.org/xsd/qti/qtiv2p2/imsqti_v2p2.xsd" title="Example test">
|
|
72
69
|
<outcomeDeclaration baseType="float" cardinality="single" identifier="TEST_total">
|
|
73
70
|
<defaultValue>
|
|
74
71
|
<value>0</value>
|
|
@@ -79,9 +76,9 @@ describe Qti::Exporter do
|
|
|
79
76
|
<value>0</value>
|
|
80
77
|
</defaultValue>
|
|
81
78
|
</outcomeDeclaration>
|
|
82
|
-
<testPart
|
|
79
|
+
<testPart>
|
|
83
80
|
<assessmentSection identifier="S1" visible="true" title="Section 1">
|
|
84
|
-
<assessmentItemRef identifier="
|
|
81
|
+
<assessmentItemRef identifier="0b8664be39cf69ef76402f3e41eb05" href="0b8664be39cf69ef76402f3e41eb05.xml"/>
|
|
85
82
|
</assessmentSection>
|
|
86
83
|
</testPart>
|
|
87
84
|
</assessmentTest>
|
|
@@ -93,45 +90,44 @@ describe Qti::Exporter do
|
|
|
93
90
|
expect(exporter.exported_file_path).to have_zip_entry('imsmanifest.xml').with_content(
|
|
94
91
|
<<-XML.strip_heredoc
|
|
95
92
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
96
|
-
<manifest xmlns="http://www.imsglobal.org/xsd/imscp_v1p1" xmlns:imsmd="http://ltsc.ieee.org/xsd/LOM" xmlns:imsqti="http://www.imsglobal.org/xsd/imsqti_v2p2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.imsglobal.org/xsd/
|
|
93
|
+
<manifest xmlns="http://www.imsglobal.org/xsd/imscp_v1p1" xmlns:imsmd="http://ltsc.ieee.org/xsd/LOM" xmlns:imsqti="http://www.imsglobal.org/xsd/imsqti_v2p2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.imsglobal.org/xsd/imscp_v1p1 http://www.imsglobal.org/xsd/qti/qtiv2p2/qtiv2p2_imscpv1p2_v1p0.xsdhttp://ltsc.ieee.org/xsd/LOM http://www.imsglobal.org/xsd/imsmd_loose_v1p3p2.xsdhttp://www.imsglobal.org/xsd/imsqti_metadata_v2p2http://www.imsglobal.org/xsd/qti/qtiv2p2/imsqti_metadata_v2p2.xsd">
|
|
97
94
|
<metadata>
|
|
98
95
|
<schema>QTIv2.2 Package</schema>
|
|
99
96
|
<schemaversion>1.0.0</schemaversion>
|
|
100
97
|
<imsmd:lom>
|
|
101
|
-
<
|
|
102
|
-
<
|
|
103
|
-
<
|
|
104
|
-
</
|
|
105
|
-
<
|
|
106
|
-
<
|
|
107
|
-
</
|
|
108
|
-
<
|
|
109
|
-
<
|
|
110
|
-
<
|
|
111
|
-
</
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
</imsmd:
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
</imsmd:
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
</imsmd:
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
</imsmd:
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
</imsmd:
|
|
127
|
-
</imsmd:
|
|
98
|
+
<general>
|
|
99
|
+
<identifier>
|
|
100
|
+
<entry>FB-02</entry>
|
|
101
|
+
</identifier>
|
|
102
|
+
<title>
|
|
103
|
+
<string language="en">Example test</string>
|
|
104
|
+
</title>
|
|
105
|
+
<language>en</language>
|
|
106
|
+
<description>
|
|
107
|
+
<string language="en">Instructure QTI package.Feedback XML used as an example of unprocessable entity</string>
|
|
108
|
+
</description>
|
|
109
|
+
</general>
|
|
110
|
+
<imsmd:keyword>
|
|
111
|
+
<imsmd:string language="en">feedback</imsmd:string>
|
|
112
|
+
</imsmd:keyword>
|
|
113
|
+
<imsmd:keyword>
|
|
114
|
+
<imsmd:string language="en">modal</imsmd:string>
|
|
115
|
+
</imsmd:keyword>
|
|
116
|
+
<imsmd:keyword>
|
|
117
|
+
<imsmd:string language="en">test</imsmd:string>
|
|
118
|
+
</imsmd:keyword>
|
|
119
|
+
<imsmd:keyword>
|
|
120
|
+
<imsmd:string language="en">inline</imsmd:string>
|
|
121
|
+
</imsmd:keyword>
|
|
122
|
+
<imsmd:keyword>
|
|
123
|
+
<imsmd:string language="en">block</imsmd:string>
|
|
124
|
+
</imsmd:keyword>
|
|
128
125
|
</imsmd:lom>
|
|
129
126
|
</metadata>
|
|
130
|
-
<organizations/>
|
|
131
127
|
<resources>
|
|
132
128
|
<resource href="assessment.xml" type="imsqti_test_xmlv2p2" identifier="TEST">
|
|
133
129
|
<file href="assessment.xml"/>
|
|
134
|
-
<file href="
|
|
130
|
+
<file href="0b8664be39cf69ef76402f3e41eb05.xml"/>
|
|
135
131
|
</resource>
|
|
136
132
|
</resources>
|
|
137
133
|
</manifest>
|
|
@@ -36,8 +36,8 @@ describe Qti::V1::Models::Interactions::MatchInteraction do
|
|
|
36
36
|
describe '#questions' do
|
|
37
37
|
it 'returns the questions' do
|
|
38
38
|
expect(subject.questions).to eq(
|
|
39
|
-
[{ id: 'question_1',
|
|
40
|
-
{ id: 'question_2',
|
|
39
|
+
[{ id: 'question_1', itemBody: 'Light Microscope' },
|
|
40
|
+
{ id: 'question_2', itemBody: 'Electron Microscopes' }]
|
|
41
41
|
)
|
|
42
42
|
end
|
|
43
43
|
end
|
|
@@ -30,9 +30,9 @@ describe Qti::V2::Models::Interactions::MatchInteraction do
|
|
|
30
30
|
describe '#questions' do
|
|
31
31
|
it 'returns the questions' do
|
|
32
32
|
expect(subject.questions).to eq(
|
|
33
|
-
[{ id: 'A',
|
|
34
|
-
{ id: 'C',
|
|
35
|
-
{ id: 'D',
|
|
33
|
+
[{ id: 'A', itemBody: 'Antonio' },
|
|
34
|
+
{ id: 'C', itemBody: 'Capulet' },
|
|
35
|
+
{ id: 'D', itemBody: 'Demetrius' }]
|
|
36
36
|
)
|
|
37
37
|
end
|
|
38
38
|
end
|
|
@@ -53,7 +53,7 @@ describe Qti::V2::Models::Interactions::MatchInteraction do
|
|
|
53
53
|
expect(subject.scoring_data_structs).to eq [
|
|
54
54
|
Qti::V2::Models::ScoringData.new('Dresden', 'Pair', id: 'Match2675678', question_id: 'Match28433682'),
|
|
55
55
|
Qti::V2::Models::ScoringData.new('Leipzig', 'Pair', id: 'Match9372581', question_id: 'Match7191791'),
|
|
56
|
-
Qti::V2::Models::ScoringData.new('Halle'
|
|
56
|
+
Qti::V2::Models::ScoringData.new('Halle', 'Pair', id: 'Match22744006', question_id: 'Match20473010'),
|
|
57
57
|
Qti::V2::Models::ScoringData.new('Bautzen', 'Pair', id: 'Match17943221', question_id: 'Match6429655')
|
|
58
58
|
]
|
|
59
59
|
end
|
|
@@ -68,10 +68,10 @@ describe Qti::V2::Models::Interactions::MatchInteraction do
|
|
|
68
68
|
describe '#questions' do
|
|
69
69
|
it 'returns the questions' do
|
|
70
70
|
expect(subject.questions).to eq(
|
|
71
|
-
[{ id: 'Match28433682',
|
|
72
|
-
{ id: 'Match7191791',
|
|
73
|
-
{ id: 'Match20473010',
|
|
74
|
-
{ id: 'Match6429655',
|
|
71
|
+
[{ id: 'Match28433682', itemBody: 'Weißeritz' },
|
|
72
|
+
{ id: 'Match7191791', itemBody: 'Mulde' },
|
|
73
|
+
{ id: 'Match20473010', itemBody: 'Saale' },
|
|
74
|
+
{ id: 'Match6429655', itemBody: 'Spree' }]
|
|
75
75
|
)
|
|
76
76
|
end
|
|
77
77
|
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: qti
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.7.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Hannah Bottalla
|
|
@@ -9,7 +9,7 @@ authors:
|
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date: 2017-06-
|
|
12
|
+
date: 2017-06-21 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: activesupport
|