qti 0.7.2 → 0.7.3
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/base_interaction.rb +3 -1
- data/lib/qti/v1/models/interactions/choice_interaction.rb +8 -2
- 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/fixtures/items_1.2/multiple_answer_canvas.xml +78 -0
- data/spec/fixtures/items_1.2/multiple_choice.xml +80 -75
- data/spec/lib/qti/v1/models/assessment_item_spec.rb +15 -0
- data/spec/lib/qti/v1/models/interactions/choice_interaction_spec.rb +12 -6
- 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 +4 -4
- data/spec/lib/qti/v1/models/interactions/base_interaction_spec.rb +0 -20
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 235b2d085b857b27a1af24c4baa2039abecd70b2
|
4
|
+
data.tar.gz: f84f0ed70ba4e39b05d1814d956833c9feb63344
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3891f873495ff08c9930edc282ade6e80e0206f3f993e26acea3f9821da3048a01d0f0a2f39bf3544e138230bf10f7928172b4b027758bc9b2fe9eb54a36d4c6
|
7
|
+
data.tar.gz: 8842a46871705a74ffc0efef9823629aa285dd47a4bc13ebaeab60b66796877d31f1fc5660ee15d638a67064b88de9df86e33fbeeae987e427ed4f9182364e0d
|
@@ -21,8 +21,10 @@ module Qti
|
|
21
21
|
raise NotImplementedError
|
22
22
|
end
|
23
23
|
|
24
|
+
private
|
25
|
+
|
24
26
|
def rcardinality
|
25
|
-
@rcardinality ||= @node.at_xpath('.//xmlns:response_lid/@rcardinality')
|
27
|
+
@rcardinality ||= @node.at_xpath('.//xmlns:response_lid/@rcardinality').value
|
26
28
|
end
|
27
29
|
end
|
28
30
|
end
|
@@ -24,8 +24,14 @@ module Qti
|
|
24
24
|
|
25
25
|
def scoring_data_structs
|
26
26
|
choice_nodes = node.xpath('.//xmlns:respcondition')
|
27
|
-
|
28
|
-
|
27
|
+
if choice_nodes.at_xpath('.//xmlns:and').present?
|
28
|
+
answer_choices = choice_nodes.at_xpath('.//xmlns:and')
|
29
|
+
answer_choices.children.filter('not').each(&:remove)
|
30
|
+
answer_choices.children.map { |value_node| ScoringData.new(value_node.content, rcardinality) }
|
31
|
+
else
|
32
|
+
set_var_nodes = choice_nodes.select { |choice_node| choice_node.at_xpath('.//xmlns:setvar').content.to_f.positive? }
|
33
|
+
set_var_nodes.map { |value_node| ScoringData.new(value_node.at_xpath('.//xmlns:varequal').content, rcardinality) }
|
34
|
+
end
|
29
35
|
end
|
30
36
|
|
31
37
|
private
|
@@ -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
|
+
question_body = lid_node.at_xpath('.//xmlns:mattext').text
|
21
|
+
{ id: lid_node.attributes['ident'].value, question_body: question_body }
|
22
22
|
end
|
23
23
|
end
|
24
24
|
|
@@ -0,0 +1,78 @@
|
|
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 ident="ide4d4fe237ffa50180563f81df123832" title="Multiple Answer Quiz">
|
4
|
+
<qtimetadata>
|
5
|
+
<qtimetadatafield>
|
6
|
+
<fieldlabel>cc_maxattempts</fieldlabel>
|
7
|
+
<fieldentry>1</fieldentry>
|
8
|
+
</qtimetadatafield>
|
9
|
+
</qtimetadata>
|
10
|
+
<section ident="root_section">
|
11
|
+
<item ident="i201ce3687ccbb50d441c6b53eaafd9f4" title="Question">
|
12
|
+
<itemmetadata>
|
13
|
+
<qtimetadata>
|
14
|
+
<qtimetadatafield>
|
15
|
+
<fieldlabel>question_type</fieldlabel>
|
16
|
+
<fieldentry>multiple_answers_question</fieldentry>
|
17
|
+
</qtimetadatafield>
|
18
|
+
<qtimetadatafield>
|
19
|
+
<fieldlabel>points_possible</fieldlabel>
|
20
|
+
<fieldentry>1.0</fieldentry>
|
21
|
+
</qtimetadatafield>
|
22
|
+
<qtimetadatafield>
|
23
|
+
<fieldlabel>assessment_question_identifierref</fieldlabel>
|
24
|
+
<fieldentry>ia686e268a4c0356ec490324708ce275a</fieldentry>
|
25
|
+
</qtimetadatafield>
|
26
|
+
</qtimetadata>
|
27
|
+
</itemmetadata>
|
28
|
+
<presentation>
|
29
|
+
<material>
|
30
|
+
<mattext texttype="text/html"><div><p>Multiple Answer pick A C and D</p></div></mattext>
|
31
|
+
</material>
|
32
|
+
<response_lid ident="response1" rcardinality="Multiple">
|
33
|
+
<render_choice>
|
34
|
+
<response_label ident="4155">
|
35
|
+
<material>
|
36
|
+
<mattext texttype="text/plain">A</mattext>
|
37
|
+
</material>
|
38
|
+
</response_label>
|
39
|
+
<response_label ident="4245">
|
40
|
+
<material>
|
41
|
+
<mattext texttype="text/plain">B</mattext>
|
42
|
+
</material>
|
43
|
+
</response_label>
|
44
|
+
<response_label ident="6991">
|
45
|
+
<material>
|
46
|
+
<mattext texttype="text/plain">C</mattext>
|
47
|
+
</material>
|
48
|
+
</response_label>
|
49
|
+
<response_label ident="1939">
|
50
|
+
<material>
|
51
|
+
<mattext texttype="text/plain">D</mattext>
|
52
|
+
</material>
|
53
|
+
</response_label>
|
54
|
+
</render_choice>
|
55
|
+
</response_lid>
|
56
|
+
</presentation>
|
57
|
+
<resprocessing>
|
58
|
+
<outcomes>
|
59
|
+
<decvar maxvalue="100" minvalue="0" varname="SCORE" vartype="Decimal"/>
|
60
|
+
</outcomes>
|
61
|
+
<respcondition continue="No">
|
62
|
+
<conditionvar>
|
63
|
+
<and>
|
64
|
+
<varequal respident="response1">4155</varequal>
|
65
|
+
<not>
|
66
|
+
<varequal respident="response1">4245</varequal>
|
67
|
+
</not>
|
68
|
+
<varequal respident="response1">6991</varequal>
|
69
|
+
<varequal respident="response1">1939</varequal>
|
70
|
+
</and>
|
71
|
+
</conditionvar>
|
72
|
+
<setvar action="Set" varname="SCORE">100</setvar>
|
73
|
+
</respcondition>
|
74
|
+
</resprocessing>
|
75
|
+
</item>
|
76
|
+
</section>
|
77
|
+
</assessment>
|
78
|
+
</questestinterop>
|
@@ -1,78 +1,83 @@
|
|
1
1
|
<?xml version="1.0" encoding="ISO-8859-1"?>
|
2
|
+
|
2
3
|
<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
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
4
|
+
|
5
|
+
<assessment title="1.2 Import Quiz" ident="A1001">
|
6
|
+
<section title="Main" ident="S1002">
|
7
|
+
|
8
|
+
<item title="How much time each week?" ident="QUE_1007">
|
9
|
+
<presentation>
|
10
|
+
<material>
|
11
|
+
<mattext texttype="text/html"><![CDATA[How much time should you spend working on your online course each week in order to earn credit? <img align="bottom" alt="image.png" src="$IMS_CC_FILE_BASE$org1/images/image.png" border="0"/>]]></mattext>
|
12
|
+
</material>
|
13
|
+
<response_lid ident="QUE_1008_RL" rcardinality="Single" rtiming="No">
|
14
|
+
<render_choice>
|
15
|
+
<response_label ident="QUE_1009_A1">
|
16
|
+
<material>
|
17
|
+
<mattext texttype="text/html"><![CDATA[However long it takes]]></mattext>
|
18
|
+
</material>
|
19
|
+
</response_label>
|
20
|
+
<response_label ident="QUE_1010_A2">
|
21
|
+
<material>
|
22
|
+
<mattext texttype="text/html"><![CDATA[30 - 90 minutes]]></mattext>
|
23
|
+
</material>
|
24
|
+
</response_label>
|
25
|
+
<response_label ident="QUE_1011_A3">
|
26
|
+
<material>
|
27
|
+
<mattext texttype="text/html"><![CDATA[1 - 2 hours]]></mattext>
|
28
|
+
</material>
|
29
|
+
</response_label>
|
30
|
+
<response_label ident="QUE_1012_A4">
|
31
|
+
<material>
|
32
|
+
<mattext texttype="text/html"><![CDATA[At least 3 hours]]></mattext>
|
33
|
+
</material>
|
34
|
+
</response_label>
|
35
|
+
<response_label ident="QUE_1013_A5">
|
36
|
+
<material>
|
37
|
+
<mattext texttype="text/html"><![CDATA[6 or more hours]]></mattext>
|
38
|
+
</material>
|
39
|
+
</response_label>
|
40
|
+
</render_choice>
|
41
|
+
</response_lid>
|
42
|
+
</presentation>
|
43
|
+
<resprocessing>
|
44
|
+
<outcomes>
|
45
|
+
<decvar vartype="Decimal" defaultval="0" varname="que_score"/>
|
46
|
+
</outcomes>
|
47
|
+
<respcondition>
|
48
|
+
<conditionvar>
|
49
|
+
<varequal respident="QUE_1008_RL">QUE_1009_A1</varequal>
|
50
|
+
</conditionvar>
|
51
|
+
<setvar varname="que_score" action="Add">0</setvar>
|
52
|
+
</respcondition>
|
53
|
+
<respcondition>
|
54
|
+
<conditionvar>
|
55
|
+
<varequal respident="QUE_1008_RL">QUE_1010_A2</varequal>
|
56
|
+
</conditionvar>
|
57
|
+
<setvar varname="que_score" action="Add">0</setvar>
|
58
|
+
</respcondition>
|
59
|
+
<respcondition>
|
60
|
+
<conditionvar>
|
61
|
+
<varequal respident="QUE_1008_RL">QUE_1011_A3</varequal>
|
62
|
+
</conditionvar>
|
63
|
+
<setvar varname="que_score" action="Add">0</setvar>
|
64
|
+
</respcondition>
|
65
|
+
<respcondition>
|
66
|
+
<conditionvar>
|
67
|
+
<varequal respident="QUE_1008_RL">QUE_1012_A4</varequal>
|
68
|
+
</conditionvar>
|
69
|
+
<setvar varname="que_score" action="Set">10.00</setvar>
|
70
|
+
</respcondition>
|
71
|
+
<respcondition>
|
72
|
+
<conditionvar>
|
73
|
+
<varequal respident="QUE_1008_RL">QUE_1013_A5</varequal>
|
74
|
+
</conditionvar>
|
75
|
+
<setvar varname="que_score" action="Add">0</setvar>
|
76
|
+
</respcondition>
|
77
|
+
</resprocessing>
|
78
|
+
</item>
|
79
|
+
|
80
|
+
</section>
|
81
|
+
</assessment>
|
82
|
+
|
78
83
|
</questestinterop>
|
@@ -48,4 +48,19 @@ describe Qti::V1::Models::AssessmentItem do
|
|
48
48
|
)
|
49
49
|
end
|
50
50
|
end
|
51
|
+
|
52
|
+
context 'multiple_answer_canvas.xml' do
|
53
|
+
let(:file_path) { File.join('spec', 'fixtures', 'items_1.2', 'multiple_answer_canvas.xml') }
|
54
|
+
let(:test_object) { Qti::V1::Models::Assessment.from_path!(file_path) }
|
55
|
+
let(:assessment_item_refs) { test_object.assessment_items }
|
56
|
+
let(:loaded_class) { described_class.new(assessment_item_refs) }
|
57
|
+
|
58
|
+
describe '#scoring_data_structs' do
|
59
|
+
it 'collects all the correct answers' do
|
60
|
+
struct = loaded_class.scoring_data_structs
|
61
|
+
expect(struct.size).to eq 3
|
62
|
+
expect(struct.map(&:values)).to eq ["4155", "6991", "1939"]
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
51
66
|
end
|
@@ -14,7 +14,7 @@ describe Qti::V1::Models::Interactions::ChoiceInteraction do
|
|
14
14
|
|
15
15
|
shared_examples_for 'answers' do
|
16
16
|
it 'returns the answers' do
|
17
|
-
expect(loaded_class.answers.count).to eq
|
17
|
+
expect(loaded_class.answers.count).to eq answer_choices_count
|
18
18
|
expect(loaded_class.answers.first).to be_an_instance_of(Qti::V1::Models::Choices::LogicalIdentifierChoice)
|
19
19
|
end
|
20
20
|
end
|
@@ -22,7 +22,7 @@ describe Qti::V1::Models::Interactions::ChoiceInteraction do
|
|
22
22
|
context 'multiple_choice.xml' do
|
23
23
|
let(:file_path) { File.join(fixtures_path, 'multiple_choice.xml') }
|
24
24
|
let(:shuffle_value) { false }
|
25
|
-
let(:
|
25
|
+
let(:answer_choices_count) { 5 }
|
26
26
|
|
27
27
|
include_examples 'shuffled?'
|
28
28
|
include_examples 'answers'
|
@@ -31,18 +31,24 @@ describe Qti::V1::Models::Interactions::ChoiceInteraction do
|
|
31
31
|
context 'true_false.xml' do
|
32
32
|
let(:file_path) { File.join(fixtures_path, 'true_false.xml') }
|
33
33
|
let(:shuffle_value) { true }
|
34
|
-
let(:
|
34
|
+
let(:answer_choices_count) { 2 }
|
35
35
|
|
36
36
|
include_examples 'shuffled?'
|
37
37
|
include_examples 'answers'
|
38
38
|
end
|
39
39
|
|
40
|
-
context '
|
40
|
+
context 'multiple_answer.xml' do
|
41
41
|
let(:file_path) { File.join(fixtures_path, 'multiple_answer.xml') }
|
42
42
|
let(:shuffle_value) { false }
|
43
|
-
let(:answer_count) { 7 }
|
44
43
|
|
45
44
|
include_examples 'shuffled?'
|
46
|
-
|
45
|
+
end
|
46
|
+
|
47
|
+
context 'multiple_answer_canvas.xml' do
|
48
|
+
let(:file_path) { File.join(fixtures_path, 'multiple_answer_canvas.xml') }
|
49
|
+
let(:shuffle_value) { false }
|
50
|
+
let(:answer_choices_count) { 4 }
|
51
|
+
|
52
|
+
include_examples 'shuffled?'
|
47
53
|
end
|
48
54
|
end
|
@@ -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', question_body: 'Light Microscope' },
|
40
|
+
{ id: 'question_2', question_body: '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', question_body: 'Antonio' },
|
34
|
+
{ id: 'C', question_body: 'Capulet' },
|
35
|
+
{ id: 'D', question_body: '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', 'Pair', id: 'Match22744006', question_id: 'Match20473010'),
|
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', question_body: 'Weißeritz' },
|
72
|
+
{ id: 'Match7191791', question_body: 'Mulde' },
|
73
|
+
{ id: 'Match20473010', question_body: 'Saale' },
|
74
|
+
{ id: 'Match6429655', question_body: '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.7.
|
4
|
+
version: 0.7.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Hannah Bottalla
|
@@ -252,6 +252,7 @@ files:
|
|
252
252
|
- spec/fixtures/items_1.2/fib_str.xml
|
253
253
|
- spec/fixtures/items_1.2/matching.xml
|
254
254
|
- spec/fixtures/items_1.2/multiple_answer.xml
|
255
|
+
- spec/fixtures/items_1.2/multiple_answer_canvas.xml
|
255
256
|
- spec/fixtures/items_1.2/multiple_choice.xml
|
256
257
|
- spec/fixtures/items_1.2/ordering.xml
|
257
258
|
- spec/fixtures/items_1.2/true_false.xml
|
@@ -443,7 +444,6 @@ files:
|
|
443
444
|
- spec/lib/qti/v1/models/assessment_spec.rb
|
444
445
|
- spec/lib/qti/v1/models/choices/fill_blank_choice_spec.rb
|
445
446
|
- spec/lib/qti/v1/models/choices/logical_identifier_choice_spec.rb
|
446
|
-
- spec/lib/qti/v1/models/interactions/base_interaction_spec.rb
|
447
447
|
- spec/lib/qti/v1/models/interactions/choice_interaction_spec.rb
|
448
448
|
- spec/lib/qti/v1/models/interactions/fill_blank_interaction_spec.rb
|
449
449
|
- spec/lib/qti/v1/models/interactions/match_interaction_spec.rb
|
@@ -482,7 +482,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
482
482
|
version: '0'
|
483
483
|
requirements: []
|
484
484
|
rubyforge_project:
|
485
|
-
rubygems_version: 2.
|
485
|
+
rubygems_version: 2.5.1
|
486
486
|
signing_key:
|
487
487
|
specification_version: 4
|
488
488
|
summary: QTI 1.2 and 2.1 import and export models
|
@@ -493,6 +493,7 @@ test_files:
|
|
493
493
|
- spec/fixtures/items_1.2/fib_str.xml
|
494
494
|
- spec/fixtures/items_1.2/matching.xml
|
495
495
|
- spec/fixtures/items_1.2/multiple_answer.xml
|
496
|
+
- spec/fixtures/items_1.2/multiple_answer_canvas.xml
|
496
497
|
- spec/fixtures/items_1.2/multiple_choice.xml
|
497
498
|
- spec/fixtures/items_1.2/ordering.xml
|
498
499
|
- spec/fixtures/items_1.2/true_false.xml
|
@@ -684,7 +685,6 @@ test_files:
|
|
684
685
|
- spec/lib/qti/v1/models/assessment_spec.rb
|
685
686
|
- spec/lib/qti/v1/models/choices/fill_blank_choice_spec.rb
|
686
687
|
- spec/lib/qti/v1/models/choices/logical_identifier_choice_spec.rb
|
687
|
-
- spec/lib/qti/v1/models/interactions/base_interaction_spec.rb
|
688
688
|
- spec/lib/qti/v1/models/interactions/choice_interaction_spec.rb
|
689
689
|
- spec/lib/qti/v1/models/interactions/fill_blank_interaction_spec.rb
|
690
690
|
- spec/lib/qti/v1/models/interactions/match_interaction_spec.rb
|
@@ -1,20 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Qti::V1::Models::Interactions::BaseInteraction do
|
4
|
-
let(:doc) do
|
5
|
-
<<-XML.strip_heredoc
|
6
|
-
<?xml version="1.0" encoding="ISO-8859-1"?>
|
7
|
-
<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">
|
8
|
-
<response_lid ident="QUE_1008_RL" rtiming="No">
|
9
|
-
</response_lid>
|
10
|
-
</questestinterop>
|
11
|
-
XML
|
12
|
-
end
|
13
|
-
|
14
|
-
let(:node) { Nokogiri.XML(doc, &:noblanks) }
|
15
|
-
|
16
|
-
it 'returns "Single" rcardinality by default' do
|
17
|
-
interaction = described_class.new(node)
|
18
|
-
expect(interaction.rcardinality).to eq 'Single'
|
19
|
-
end
|
20
|
-
end
|