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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b7e8bed034f0222ed2e549a1eb87917fcb228a93
4
- data.tar.gz: 21b196ae99492b0d328d7226b966aa2835c0b1ca
3
+ metadata.gz: 235b2d085b857b27a1af24c4baa2039abecd70b2
4
+ data.tar.gz: f84f0ed70ba4e39b05d1814d956833c9feb63344
5
5
  SHA512:
6
- metadata.gz: c5b782a982cf3fc8d42230323bdb6fd66a5c8d93b5e0f3bbe08d6e13dd62b0edb3ee23fcf473f2cc345600e18a51bbd4dc9426fe475fe8f62798bb64111d92e7
7
- data.tar.gz: 9370fc9f192cd0b816cf334b825b5cd1c389eda38a909a3f14ea47e60486a878671147633544de1f53633dd756a31b72fde44d9a835b75205138d308356a87ea
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')&.value || 'Single'
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
- set_var_nodes = choice_nodes.select { |choice_node| choice_node.at_xpath('.//xmlns:setvar').content.to_f.positive? }
28
- set_var_nodes.map { |value_node| ScoringData.new(value_node.at_xpath('.//xmlns:varequal').content, rcardinality) }
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
- item_body = lid_node.at_xpath('.//xmlns:mattext').text
21
- { id: lid_node.attributes['ident'].value, itemBody: item_body }
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
 
@@ -24,7 +24,7 @@ module Qti
24
24
  end
25
25
 
26
26
  def questions
27
- questions_ids.map { |id| { id: id, itemBody: choices_by_identifier[id].content } }
27
+ questions_ids.map { |id| { id: id, question_body: choices_by_identifier[id].content } }
28
28
  end
29
29
 
30
30
  def answers
@@ -16,7 +16,7 @@ module Qti
16
16
  end
17
17
 
18
18
  def questions
19
- questions_ids.map { |id| { id: id, itemBody: choices_by_identifier[id].content } }
19
+ questions_ids.map { |id| { id: id, question_body: choices_by_identifier[id].content } }
20
20
  end
21
21
 
22
22
  def shuffled?
@@ -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">&lt;div&gt;&lt;p&gt;Multiple Answer pick A C and D&lt;/p&gt;&lt;/div&gt;</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
- <assessment title="1.2 Import Quiz" ident="A1001">
4
- <section title="Main" ident="S1002">
5
- <item title="How much time each week?" ident="QUE_1007">
6
- <presentation>
7
- <material>
8
- <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>
9
- </material>
10
- <response_lid ident="QUE_1008_RL" rcardinality="Single" rtiming="No">
11
- <render_choice>
12
- <response_label ident="QUE_1009_A1">
13
- <material>
14
- <mattext texttype="text/html"><![CDATA[However long it takes]]></mattext>
15
- </material>
16
- </response_label>
17
- <response_label ident="QUE_1010_A2">
18
- <material>
19
- <mattext texttype="text/html"><![CDATA[30 - 90 minutes]]></mattext>
20
- </material>
21
- </response_label>
22
- <response_label ident="QUE_1011_A3">
23
- <material>
24
- <mattext texttype="text/html"><![CDATA[1 - 2 hours]]></mattext>
25
- </material>
26
- </response_label>
27
- <response_label ident="QUE_1012_A4">
28
- <material>
29
- <mattext texttype="text/html"><![CDATA[At least 3 hours]]></mattext>
30
- </material>
31
- </response_label>
32
- <response_label ident="QUE_1013_A5">
33
- <material>
34
- <mattext texttype="text/html"><![CDATA[6 or more hours]]></mattext>
35
- </material>
36
- </response_label>
37
- </render_choice>
38
- </response_lid>
39
- </presentation>
40
- <resprocessing>
41
- <outcomes>
42
- <decvar vartype="Decimal" defaultval="0" varname="que_score"/>
43
- </outcomes>
44
- <respcondition>
45
- <conditionvar>
46
- <varequal respident="QUE_1008_RL">QUE_1009_A1</varequal>
47
- </conditionvar>
48
- <setvar varname="que_score" action="Add">0</setvar>
49
- </respcondition>
50
- <respcondition>
51
- <conditionvar>
52
- <varequal respident="QUE_1008_RL">QUE_1010_A2</varequal>
53
- </conditionvar>
54
- <setvar varname="que_score" action="Add">0</setvar>
55
- </respcondition>
56
- <respcondition>
57
- <conditionvar>
58
- <varequal respident="QUE_1008_RL">QUE_1011_A3</varequal>
59
- </conditionvar>
60
- <setvar varname="que_score" action="Add">0</setvar>
61
- </respcondition>
62
- <respcondition>
63
- <conditionvar>
64
- <varequal respident="QUE_1008_RL">QUE_1012_A4</varequal>
65
- </conditionvar>
66
- <setvar varname="que_score" action="Set">10.00</setvar>
67
- </respcondition>
68
- <respcondition>
69
- <conditionvar>
70
- <varequal respident="QUE_1008_RL">QUE_1013_A5</varequal>
71
- </conditionvar>
72
- <setvar varname="que_score" action="Add">0</setvar>
73
- </respcondition>
74
- </resprocessing>
75
- </item>
76
- </section>
77
- </assessment>
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 answer_count
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(:answer_count) { 5 }
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(:answer_count) { 2 }
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 'true_false.xml' do
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
- include_examples 'answers'
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', itemBody: 'Light Microscope' },
40
- { id: 'question_2', itemBody: 'Electron Microscopes' }]
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', itemBody: 'Antonio' },
34
- { id: 'C', itemBody: 'Capulet' },
35
- { id: 'D', itemBody: 'Demetrius' }]
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', itemBody: 'Weißeritz' },
72
- { id: 'Match7191791', itemBody: 'Mulde' },
73
- { id: 'Match20473010', itemBody: 'Saale' },
74
- { id: 'Match6429655', itemBody: 'Spree' }]
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.2
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.6.12
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