qti 2.2.0 → 2.5.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (29) hide show
  1. checksums.yaml +4 -4
  2. data/lib/qti.rb +1 -0
  3. data/lib/qti/models/assessment_meta.rb +16 -12
  4. data/lib/qti/models/resource.rb +26 -2
  5. data/lib/qti/v1/models/assessment_item.rb +4 -0
  6. data/lib/qti/v1/models/interactions/base_fill_blank_interaction.rb +33 -1
  7. data/lib/qti/v1/models/interactions/canvas_multiple_dropdown.rb +2 -29
  8. data/lib/qti/v1/models/object_bank.rb +14 -0
  9. data/lib/qti/version.rb +1 -1
  10. data/spec/fixtures/items_1.2/canvas_multiple_fib_extra_brackets.xml +244 -0
  11. data/spec/fixtures/{test_qti_1.2_canvas_extended → test_qti_1.2_canvas_extended_1}/gba044ae1fc7cfd3dc413e0df695e0068/assessment_meta.xml +0 -0
  12. data/spec/fixtures/{test_qti_1.2_canvas_extended → test_qti_1.2_canvas_extended_1}/gba044ae1fc7cfd3dc413e0df695e0068/gba044ae1fc7cfd3dc413e0df695e0068.xml +0 -0
  13. data/spec/fixtures/{test_qti_1.2_canvas_extended → test_qti_1.2_canvas_extended_1}/imsmanifest.xml +0 -0
  14. data/spec/fixtures/test_qti_1.2_canvas_extended_2/gba044ae1fc7cfd3dc413e0df695e0068/assessment_meta.xml +76 -0
  15. data/spec/fixtures/test_qti_1.2_canvas_extended_2/gba044ae1fc7cfd3dc413e0df695e0068/gba044ae1fc7cfd3dc413e0df695e0068.xml +17 -0
  16. data/spec/fixtures/test_qti_1.2_canvas_extended_2/imsmanifest.xml +39 -0
  17. data/spec/fixtures/with_banks/g9a20cf3af178b54e4792cbe992f65790/assessment_meta.xml +69 -0
  18. data/spec/fixtures/with_banks/g9a20cf3af178b54e4792cbe992f65790/assessment_qti.xml +99 -0
  19. data/spec/fixtures/with_banks/imsmanifest.xml +54 -0
  20. data/spec/fixtures/with_banks/non_cc_assessments/g195e078fb6e3c4054e38e5c9226287ba.xml.qti +85 -0
  21. data/spec/fixtures/with_banks/non_cc_assessments/g9a20cf3af178b54e4792cbe992f65790.xml.qti +107 -0
  22. data/spec/fixtures/with_banks/non_cc_assessments/gab22de457404cb5cf022078f1e4da75e.xml.qti +59 -0
  23. data/spec/fixtures/with_banks/non_cc_assessments/gf3edf8167be16b3a65a00ca923132b07.xml.qti +145 -0
  24. data/spec/lib/qti/models/assessment_meta_spec.rb +39 -1
  25. data/spec/lib/qti/models/resource_spec.rb +14 -0
  26. data/spec/lib/qti/v1/models/interactions/base_fill_blank_interaction_spec.rb +146 -0
  27. data/spec/lib/qti/v1/models/interactions/canvas_multiple_dropdown_spec.rb +0 -27
  28. data/spec/lib/qti/v1/models/object_bank_spec.rb +39 -0
  29. metadata +36 -9
@@ -10,12 +10,6 @@ describe Qti::V1::Models::Interactions::CanvasMultipleDropdownInteraction do
10
10
  end
11
11
  end
12
12
 
13
- shared_examples_for 'blanks' do
14
- it 'returns the blanks' do
15
- expect(loaded_class.blanks).to eq(expected_blanks)
16
- end
17
- end
18
-
19
13
  shared_examples_for 'answers' do
20
14
  it 'returns the answers' do
21
15
  expect(loaded_class.answers.count).to eq answer_count
@@ -47,26 +41,6 @@ describe Qti::V1::Models::Interactions::CanvasMultipleDropdownInteraction do
47
41
  { id: '6951', position: 2, item_body: 'blue' }
48
42
  ]
49
43
  end
50
- let(:expected_blanks) do
51
- [
52
- {
53
- id: 'response_color1',
54
- choices:
55
- [
56
- { id: '6548', position: 2, item_body: 'red' },
57
- { id: '5550', position: 3, item_body: 'plaid' }
58
- ]
59
- },
60
- {
61
- id: 'response_color2',
62
- choices:
63
- [
64
- { id: '6951', position: 2, item_body: 'blue' },
65
- { id: '4500', position: 3, item_body: 'paisely' }
66
- ]
67
- }
68
- ]
69
- end
70
44
  let(:expected_stem_items) do
71
45
  [
72
46
  { id: 'stem_0', position: 1, type: 'text', value: '<div><p>Roses are ' },
@@ -97,7 +71,6 @@ describe Qti::V1::Models::Interactions::CanvasMultipleDropdownInteraction do
97
71
 
98
72
  include_examples 'shuffled?'
99
73
  include_examples 'answers'
100
- include_examples 'blanks'
101
74
  include_examples 'stem_items'
102
75
  include_examples 'scoring_data_structs'
103
76
  end
@@ -0,0 +1,39 @@
1
+ describe Qti::V1::Models::ObjectBank do
2
+ describe 'bank loading' do
3
+ [
4
+ 'gf3edf8167be16b3a65a00ca923132b07.xml.qti',
5
+ 'g195e078fb6e3c4054e38e5c9226287ba.xml.qti',
6
+ 'gab22de457404cb5cf022078f1e4da75e.xml.qti'
7
+ ].each do |bankfile|
8
+ file = File.join('spec', 'fixtures', 'with_banks', 'non_cc_assessments', bankfile)
9
+ context "File: #{file}" do
10
+ it 'parses the objectbank without error' do
11
+ expect do
12
+ bank = described_class.from_path!(file)
13
+ expect(bank.assessment_items) # at least one
14
+ end.not_to raise_error
15
+ end
16
+ end
17
+ end
18
+ end
19
+
20
+ describe '#title' do
21
+ it 'missing bank_title defaults to filename' do
22
+ allow(File).to receive(:read).and_return(<<~XML)
23
+ <?xml version="1.0" encoding="UTF-8"?>
24
+ <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">
25
+ <objectbank ident="gooblegobble12345">
26
+ <qtimetadata>
27
+ <qtimetadatafield>
28
+ <fieldlabel>not_a_bank_title</fieldlabel>
29
+ <fieldentry>A different metadata entry</fieldentry>
30
+ </qtimetadatafield>
31
+ </qtimetadata>
32
+ </objectbank>
33
+ </questestinterop>
34
+ XML
35
+ objectbank = described_class.new path: '/etc/FakeBank007.xml'
36
+ expect(objectbank.title).to eq 'FakeBank007'
37
+ end
38
+ end
39
+ 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: 2.2.0
4
+ version: 2.5.1
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: 2020-05-13 00:00:00.000000000 Z
12
+ date: 2021-05-25 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: actionview
@@ -312,6 +312,7 @@ files:
312
312
  - lib/qti/v1/models/numerics/scoring_data.rb
313
313
  - lib/qti/v1/models/numerics/scoring_node.rb
314
314
  - lib/qti/v1/models/numerics/within_range.rb
315
+ - lib/qti/v1/models/object_bank.rb
315
316
  - lib/qti/v1/models/question_group.rb
316
317
  - lib/qti/v1/models/scoring_data.rb
317
318
  - lib/qti/v1/models/stimulus_item.rb
@@ -355,6 +356,7 @@ files:
355
356
  - spec/fixtures/items_1.2/canvas_multiple_dropdowns.xml
356
357
  - spec/fixtures/items_1.2/canvas_multiple_fib.xml
357
358
  - spec/fixtures/items_1.2/canvas_multiple_fib_as_single.xml
359
+ - spec/fixtures/items_1.2/canvas_multiple_fib_extra_brackets.xml
358
360
  - spec/fixtures/items_1.2/choice.xml
359
361
  - spec/fixtures/items_1.2/essay.xml
360
362
  - spec/fixtures/items_1.2/fib.xml
@@ -510,9 +512,12 @@ files:
510
512
  - spec/fixtures/test_qti_1.2_canvas/i00f37ac2af026e5a607e4a5d9a70b1d5/assessment_meta.xml
511
513
  - spec/fixtures/test_qti_1.2_canvas/i00f37ac2af026e5a607e4a5d9a70b1d5/i00f37ac2af026e5a607e4a5d9a70b1d5.xml
512
514
  - spec/fixtures/test_qti_1.2_canvas/imsmanifest.xml
513
- - spec/fixtures/test_qti_1.2_canvas_extended/gba044ae1fc7cfd3dc413e0df695e0068/assessment_meta.xml
514
- - spec/fixtures/test_qti_1.2_canvas_extended/gba044ae1fc7cfd3dc413e0df695e0068/gba044ae1fc7cfd3dc413e0df695e0068.xml
515
- - spec/fixtures/test_qti_1.2_canvas_extended/imsmanifest.xml
515
+ - spec/fixtures/test_qti_1.2_canvas_extended_1/gba044ae1fc7cfd3dc413e0df695e0068/assessment_meta.xml
516
+ - spec/fixtures/test_qti_1.2_canvas_extended_1/gba044ae1fc7cfd3dc413e0df695e0068/gba044ae1fc7cfd3dc413e0df695e0068.xml
517
+ - spec/fixtures/test_qti_1.2_canvas_extended_1/imsmanifest.xml
518
+ - spec/fixtures/test_qti_1.2_canvas_extended_2/gba044ae1fc7cfd3dc413e0df695e0068/assessment_meta.xml
519
+ - spec/fixtures/test_qti_1.2_canvas_extended_2/gba044ae1fc7cfd3dc413e0df695e0068/gba044ae1fc7cfd3dc413e0df695e0068.xml
520
+ - spec/fixtures/test_qti_1.2_canvas_extended_2/imsmanifest.xml
516
521
  - spec/fixtures/test_qti_1.2_multi/i913965373124f56ca136e87deb040c03/assessment_meta.xml
517
522
  - spec/fixtures/test_qti_1.2_multi/i913965373124f56ca136e87deb040c03/i913965373124f56ca136e87deb040c03.xml
518
523
  - spec/fixtures/test_qti_1.2_multi/ife643a8a04b48b22acab95de6c01f1cc/assessment_meta.xml
@@ -601,6 +606,13 @@ files:
601
606
  - spec/fixtures/tests/tests/rtest26.xml
602
607
  - spec/fixtures/tests/tests/rtest27.xml
603
608
  - spec/fixtures/unsupported_version/imsmanifest.xml
609
+ - spec/fixtures/with_banks/g9a20cf3af178b54e4792cbe992f65790/assessment_meta.xml
610
+ - spec/fixtures/with_banks/g9a20cf3af178b54e4792cbe992f65790/assessment_qti.xml
611
+ - spec/fixtures/with_banks/imsmanifest.xml
612
+ - spec/fixtures/with_banks/non_cc_assessments/g195e078fb6e3c4054e38e5c9226287ba.xml.qti
613
+ - spec/fixtures/with_banks/non_cc_assessments/g9a20cf3af178b54e4792cbe992f65790.xml.qti
614
+ - spec/fixtures/with_banks/non_cc_assessments/gab22de457404cb5cf022078f1e4da75e.xml.qti
615
+ - spec/fixtures/with_banks/non_cc_assessments/gf3edf8167be16b3a65a00ca923132b07.xml.qti
604
616
  - spec/gemfiles/rails-5.1.gemfile
605
617
  - spec/gemfiles/rails-5.2.gemfile
606
618
  - spec/gemfiles/rails-6.0.gemfile
@@ -615,6 +627,7 @@ files:
615
627
  - spec/lib/qti/v1/models/assessment_spec.rb
616
628
  - spec/lib/qti/v1/models/choices/fill_blank_choice_spec.rb
617
629
  - spec/lib/qti/v1/models/choices/logical_identifier_choice_spec.rb
630
+ - spec/lib/qti/v1/models/interactions/base_fill_blank_interaction_spec.rb
618
631
  - spec/lib/qti/v1/models/interactions/base_interaction_spec.rb
619
632
  - spec/lib/qti/v1/models/interactions/canvas_multiple_dropdown_spec.rb
620
633
  - spec/lib/qti/v1/models/interactions/choice_interaction_spec.rb
@@ -632,6 +645,7 @@ files:
632
645
  - spec/lib/qti/v1/models/numerics/scoring_base_spec.rb
633
646
  - spec/lib/qti/v1/models/numerics/scoring_node_spec.rb
634
647
  - spec/lib/qti/v1/models/numerics/within_range_spec.rb
648
+ - spec/lib/qti/v1/models/object_bank_spec.rb
635
649
  - spec/lib/qti/v1/models/question_group_spec.rb
636
650
  - spec/lib/qti/v1/models/stimulus_item_spec.rb
637
651
  - spec/lib/qti/v2/models/assessment_item_spec.rb
@@ -671,7 +685,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
671
685
  - !ruby/object:Gem::Version
672
686
  version: '0'
673
687
  requirements: []
674
- rubygems_version: 3.0.4
688
+ rubygems_version: 3.0.3
675
689
  signing_key:
676
690
  specification_version: 4
677
691
  summary: QTI 1.2 and 2.1 import and export models
@@ -694,6 +708,7 @@ test_files:
694
708
  - spec/fixtures/items_1.2/canvas_multiple_dropdowns.xml
695
709
  - spec/fixtures/items_1.2/canvas_multiple_fib.xml
696
710
  - spec/fixtures/items_1.2/canvas_multiple_fib_as_single.xml
711
+ - spec/fixtures/items_1.2/canvas_multiple_fib_extra_brackets.xml
697
712
  - spec/fixtures/items_1.2/choice.xml
698
713
  - spec/fixtures/items_1.2/essay.xml
699
714
  - spec/fixtures/items_1.2/fib.xml
@@ -849,9 +864,12 @@ test_files:
849
864
  - spec/fixtures/test_qti_1.2_canvas/i00f37ac2af026e5a607e4a5d9a70b1d5/assessment_meta.xml
850
865
  - spec/fixtures/test_qti_1.2_canvas/i00f37ac2af026e5a607e4a5d9a70b1d5/i00f37ac2af026e5a607e4a5d9a70b1d5.xml
851
866
  - spec/fixtures/test_qti_1.2_canvas/imsmanifest.xml
852
- - spec/fixtures/test_qti_1.2_canvas_extended/gba044ae1fc7cfd3dc413e0df695e0068/assessment_meta.xml
853
- - spec/fixtures/test_qti_1.2_canvas_extended/gba044ae1fc7cfd3dc413e0df695e0068/gba044ae1fc7cfd3dc413e0df695e0068.xml
854
- - spec/fixtures/test_qti_1.2_canvas_extended/imsmanifest.xml
867
+ - spec/fixtures/test_qti_1.2_canvas_extended_1/gba044ae1fc7cfd3dc413e0df695e0068/assessment_meta.xml
868
+ - spec/fixtures/test_qti_1.2_canvas_extended_1/gba044ae1fc7cfd3dc413e0df695e0068/gba044ae1fc7cfd3dc413e0df695e0068.xml
869
+ - spec/fixtures/test_qti_1.2_canvas_extended_1/imsmanifest.xml
870
+ - spec/fixtures/test_qti_1.2_canvas_extended_2/gba044ae1fc7cfd3dc413e0df695e0068/assessment_meta.xml
871
+ - spec/fixtures/test_qti_1.2_canvas_extended_2/gba044ae1fc7cfd3dc413e0df695e0068/gba044ae1fc7cfd3dc413e0df695e0068.xml
872
+ - spec/fixtures/test_qti_1.2_canvas_extended_2/imsmanifest.xml
855
873
  - spec/fixtures/test_qti_1.2_multi/i913965373124f56ca136e87deb040c03/assessment_meta.xml
856
874
  - spec/fixtures/test_qti_1.2_multi/i913965373124f56ca136e87deb040c03/i913965373124f56ca136e87deb040c03.xml
857
875
  - spec/fixtures/test_qti_1.2_multi/ife643a8a04b48b22acab95de6c01f1cc/assessment_meta.xml
@@ -940,6 +958,13 @@ test_files:
940
958
  - spec/fixtures/tests/tests/rtest26.xml
941
959
  - spec/fixtures/tests/tests/rtest27.xml
942
960
  - spec/fixtures/unsupported_version/imsmanifest.xml
961
+ - spec/fixtures/with_banks/g9a20cf3af178b54e4792cbe992f65790/assessment_meta.xml
962
+ - spec/fixtures/with_banks/g9a20cf3af178b54e4792cbe992f65790/assessment_qti.xml
963
+ - spec/fixtures/with_banks/imsmanifest.xml
964
+ - spec/fixtures/with_banks/non_cc_assessments/g195e078fb6e3c4054e38e5c9226287ba.xml.qti
965
+ - spec/fixtures/with_banks/non_cc_assessments/g9a20cf3af178b54e4792cbe992f65790.xml.qti
966
+ - spec/fixtures/with_banks/non_cc_assessments/gab22de457404cb5cf022078f1e4da75e.xml.qti
967
+ - spec/fixtures/with_banks/non_cc_assessments/gf3edf8167be16b3a65a00ca923132b07.xml.qti
943
968
  - spec/gemfiles/rails-5.1.gemfile
944
969
  - spec/gemfiles/rails-5.2.gemfile
945
970
  - spec/gemfiles/rails-6.0.gemfile
@@ -954,6 +979,7 @@ test_files:
954
979
  - spec/lib/qti/v1/models/assessment_spec.rb
955
980
  - spec/lib/qti/v1/models/choices/fill_blank_choice_spec.rb
956
981
  - spec/lib/qti/v1/models/choices/logical_identifier_choice_spec.rb
982
+ - spec/lib/qti/v1/models/interactions/base_fill_blank_interaction_spec.rb
957
983
  - spec/lib/qti/v1/models/interactions/base_interaction_spec.rb
958
984
  - spec/lib/qti/v1/models/interactions/canvas_multiple_dropdown_spec.rb
959
985
  - spec/lib/qti/v1/models/interactions/choice_interaction_spec.rb
@@ -971,6 +997,7 @@ test_files:
971
997
  - spec/lib/qti/v1/models/numerics/scoring_base_spec.rb
972
998
  - spec/lib/qti/v1/models/numerics/scoring_node_spec.rb
973
999
  - spec/lib/qti/v1/models/numerics/within_range_spec.rb
1000
+ - spec/lib/qti/v1/models/object_bank_spec.rb
974
1001
  - spec/lib/qti/v1/models/question_group_spec.rb
975
1002
  - spec/lib/qti/v1/models/stimulus_item_spec.rb
976
1003
  - spec/lib/qti/v2/models/assessment_item_spec.rb