qti 2.23.0 → 2.23.1
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/v1/models/interactions/choice_interaction.rb +1 -1
- data/lib/qti/version.rb +1 -1
- data/spec/fixtures/items_1.2/choice_vary_points_by_answer_zero_points.xml +69 -0
- data/spec/lib/qti/v1/models/assessment_item_spec.rb +23 -1
- data/spec/lib/qti_spec.rb +1 -1
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bd8303859118b11ead1859869efcadb1345b74da5c0d03099d961ed8ed33439d
|
4
|
+
data.tar.gz: 5f7e10b30898792b696d61cb14bc9a117c027462df0da9b5c35a347f98df62b6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: faf84243d53822d2bb64712f5ea2215377199e956bec31e11d55a6d361b8f4c5509a2c7516c04b33141509877b2ad7f2c17b116b8bfbb9377f896212190ff298
|
7
|
+
data.tar.gz: 854b534ca6c5b4d30f6bca3287144fdfc884e7a977ea2d875d226da0ddeb41d0da5b5294c0371444da630f049209259ff222cf986b998b45cebec5279938edf3
|
@@ -83,7 +83,7 @@ module Qti
|
|
83
83
|
# rubocop:enable Metrics/AbcSize
|
84
84
|
def setvar_nodes(choice_nodes)
|
85
85
|
choice_nodes.select do |choice_node|
|
86
|
-
choice_node.at_xpath('.//xmlns:setvar')&.content&.
|
86
|
+
choice_node.at_xpath('.//xmlns:setvar')&.content&.present?
|
87
87
|
end
|
88
88
|
end
|
89
89
|
end
|
data/lib/qti/version.rb
CHANGED
@@ -0,0 +1,69 @@
|
|
1
|
+
<?xml version="1.0"encoding="UTF-8"?>
|
2
|
+
<questestinterop xmlns="http://www.imsglobal.org/xsd/ims_qtiasiv1p2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.imsglobal.org/xsd/ims_qtiasiv1p2 http://www.imsglobal.org/xsd/ims_qtiasiv1p2p1.xsd">
|
3
|
+
<assessment title="1.2 Import Quiz" ident="A1001">
|
4
|
+
<section title="Main" ident="S1002">
|
5
|
+
<item ident="d74b47a4abeeed159e030bfecbcecea2" title="My question title">
|
6
|
+
<itemmetadata>
|
7
|
+
<qtimetadata>
|
8
|
+
<qtimetadatafield>
|
9
|
+
<fieldlabel>question_type</fieldlabel>
|
10
|
+
<fieldentry>multiple_choice_question</fieldentry>
|
11
|
+
</qtimetadatafield>
|
12
|
+
<qtimetadatafield>
|
13
|
+
<fieldlabel>points_possible</fieldlabel>
|
14
|
+
<fieldentry>10.0</fieldentry>
|
15
|
+
</qtimetadatafield>
|
16
|
+
<qtimetadatafield>
|
17
|
+
<fieldlabel>original_answer_ids</fieldlabel>
|
18
|
+
<fieldentry>93bbcb84-3281-4d99-b243-79ba4051e654,3cd6d311-07cd-4ec0-b2db-3048e6cf1128</fieldentry>
|
19
|
+
</qtimetadatafield>
|
20
|
+
<qtimetadatafield>
|
21
|
+
<fieldlabel>assessment_question_identifierref</fieldlabel>
|
22
|
+
<fieldentry>9f47365e112840d80a79a960b1b0b6a7</fieldentry>
|
23
|
+
</qtimetadatafield>
|
24
|
+
<qtimetadatafield>
|
25
|
+
<fieldlabel>calculator_type</fieldlabel>
|
26
|
+
<fieldentry>none</fieldentry>
|
27
|
+
</qtimetadatafield>
|
28
|
+
</qtimetadata>
|
29
|
+
</itemmetadata>
|
30
|
+
<presentation>
|
31
|
+
<material>
|
32
|
+
<mattext texttype="text/html"><p>the correct answer is letter A</p></mattext>
|
33
|
+
</material>
|
34
|
+
<response_lid ident="response1" rcardinality="Single">
|
35
|
+
<render_choice>
|
36
|
+
<response_label ident="93bbcb84-3281-4d99-b243-79ba4051e654">
|
37
|
+
<material>
|
38
|
+
<mattext texttype="text/html">A</mattext>
|
39
|
+
</material>
|
40
|
+
</response_label>
|
41
|
+
<response_label ident="3cd6d311-07cd-4ec0-b2db-3048e6cf1128">
|
42
|
+
<material>
|
43
|
+
<mattext texttype="text/html">B</mattext>
|
44
|
+
</material>
|
45
|
+
</response_label>
|
46
|
+
</render_choice>
|
47
|
+
</response_lid>
|
48
|
+
</presentation>
|
49
|
+
<resprocessing>
|
50
|
+
<outcomes>
|
51
|
+
<decvar maxvalue="100" minvalue="0" varname="SCORE" vartype="Decimal"/>
|
52
|
+
</outcomes>
|
53
|
+
<respcondition>
|
54
|
+
<conditionvar>
|
55
|
+
<varequal respident="response1">93bbcb84-3281-4d99-b243-79ba4051e654</varequal>
|
56
|
+
</conditionvar>
|
57
|
+
<setvar action="Set" varname="SCORE">0.0</setvar>
|
58
|
+
</respcondition>
|
59
|
+
<respcondition correctanswer="Yes">
|
60
|
+
<conditionvar>
|
61
|
+
<varequal respident="response1">3cd6d311-07cd-4ec0-b2db-3048e6cf1128</varequal>
|
62
|
+
</conditionvar>
|
63
|
+
<setvar action="Set" varname="SCORE">0.0</setvar>
|
64
|
+
</respcondition>
|
65
|
+
</resprocessing>
|
66
|
+
</item>
|
67
|
+
</section>
|
68
|
+
</assessment>
|
69
|
+
</questestinterop>
|
@@ -138,7 +138,7 @@ describe Qti::V1::Models::AssessmentItem do
|
|
138
138
|
describe '#scoring_data_structs' do
|
139
139
|
it 'grabs the rcardinality and scoring data value' do
|
140
140
|
struct = loaded_class.send(:scoring_data_structs)
|
141
|
-
expect(struct.first.values).to eq '
|
141
|
+
expect(struct.first.values).to eq 'QUE_1005_A1'
|
142
142
|
expect(struct.first.rcardinality).to eq 'Single'
|
143
143
|
end
|
144
144
|
end
|
@@ -266,4 +266,26 @@ describe Qti::V1::Models::AssessmentItem do
|
|
266
266
|
end
|
267
267
|
end
|
268
268
|
end
|
269
|
+
|
270
|
+
context 'multiple choice with "vary points by answer" and answers with zero points' do
|
271
|
+
let(:file_path) { File.join('spec', 'fixtures', 'items_1.2', 'choice_vary_points_by_answer_zero_points.xml') }
|
272
|
+
let(:test_object) { Qti::V1::Models::Assessment.from_path!(file_path) }
|
273
|
+
let(:assessment_item_refs) { test_object.assessment_items }
|
274
|
+
let(:loaded_class) { described_class.new(assessment_item_refs.first) }
|
275
|
+
|
276
|
+
describe '#scoring_data_structs' do
|
277
|
+
it 'collects all the correct answers' do
|
278
|
+
struct = loaded_class.scoring_data_structs
|
279
|
+
expect(struct.size).to eq 2
|
280
|
+
expect(struct.map(&:values)).to eq %w[93bbcb84-3281-4d99-b243-79ba4051e654 3cd6d311-07cd-4ec0-b2db-3048e6cf1128]
|
281
|
+
end
|
282
|
+
|
283
|
+
it 'collect all the points answer points' do
|
284
|
+
struct = loaded_class.scoring_data_structs
|
285
|
+
expect(struct.size).to eq 2
|
286
|
+
expect(struct.map(&:scoring_options)).to eq([{ 'points' => 0.0 },
|
287
|
+
{ 'points' => 0.0, 'correct_answer' => true }])
|
288
|
+
end
|
289
|
+
end
|
290
|
+
end
|
269
291
|
end
|
data/spec/lib/qti_spec.rb
CHANGED
@@ -35,7 +35,7 @@ describe Qti::Importer do
|
|
35
35
|
assessment_items = importer.assessment_item_refs.map { |item| importer.create_assessment_item(item) }
|
36
36
|
expect(assessment_items.count).to eq 5
|
37
37
|
answer_arity = assessment_items.map { |item| item.scoring_data_structs.count }
|
38
|
-
expect(answer_arity).to eq [
|
38
|
+
expect(answer_arity).to eq [2, 5, 7, 1, 1]
|
39
39
|
end
|
40
40
|
|
41
41
|
it 'sets the path and package root properly' do
|
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: 2.23.
|
4
|
+
version: 2.23.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Adrian Diaz
|
@@ -12,7 +12,7 @@ authors:
|
|
12
12
|
autorequire:
|
13
13
|
bindir: bin
|
14
14
|
cert_chain: []
|
15
|
-
date: 2024-
|
15
|
+
date: 2024-06-25 00:00:00.000000000 Z
|
16
16
|
dependencies:
|
17
17
|
- !ruby/object:Gem::Dependency
|
18
18
|
name: actionview
|
@@ -403,6 +403,7 @@ files:
|
|
403
403
|
- spec/fixtures/items_1.2/categorization.xml
|
404
404
|
- spec/fixtures/items_1.2/choice.xml
|
405
405
|
- spec/fixtures/items_1.2/choice_vary_points_by_answer.xml
|
406
|
+
- spec/fixtures/items_1.2/choice_vary_points_by_answer_zero_points.xml
|
406
407
|
- spec/fixtures/items_1.2/essay.xml
|
407
408
|
- spec/fixtures/items_1.2/essay_custom_settings.xml
|
408
409
|
- spec/fixtures/items_1.2/fib.xml
|
@@ -783,6 +784,7 @@ test_files:
|
|
783
784
|
- spec/fixtures/items_1.2/categorization.xml
|
784
785
|
- spec/fixtures/items_1.2/choice.xml
|
785
786
|
- spec/fixtures/items_1.2/choice_vary_points_by_answer.xml
|
787
|
+
- spec/fixtures/items_1.2/choice_vary_points_by_answer_zero_points.xml
|
786
788
|
- spec/fixtures/items_1.2/essay.xml
|
787
789
|
- spec/fixtures/items_1.2/essay_custom_settings.xml
|
788
790
|
- spec/fixtures/items_1.2/fib.xml
|