qti 0.7.2 → 0.7.3
Sign up to get free protection for your applications and to get access to all the features.
- 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
|