canvas_cc 0.0.10 → 0.0.11

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 00a8e65390d41cd471d721eaace37d095f02853b
4
- data.tar.gz: dfb6fe7cd316dfd180ac885a71231944cedd254b
3
+ metadata.gz: 1353f996dbae51f90ef66a15ea6710bb7fd26243
4
+ data.tar.gz: cfacb8d84b95dcd767c7bcba8a6e3a75c5d1d5b3
5
5
  SHA512:
6
- metadata.gz: b7d132358fe8e2890e9be96d7d6213fc898b086141a935e9ac4b3056e991f9bbceb4ea01f6e826d059729b8a5af01282c6bb89b4ef4b295eb8b68aba371dcc72
7
- data.tar.gz: 960548089f8c5e7593ff4b7a9bff02bf40e67d058c0279331d9b1732e6cd2d52a2e02e67843697b9ffdb7aabdf0e8ff2ba52e80c2e0564e15e3c32a53f001728
6
+ metadata.gz: c7c5d8081b0e86c1d9cc6217b955af3f72b766f9cb5bdcb9d6a566f2e46d9df29d49b560d7fa0b4d59b3eadf6276da5b430f0900b55423f5a05025a52b6c8603
7
+ data.tar.gz: da0c4c112c27771d15d961b4ccdfae4715f160bf07ca372f5103ef2cac74e1018fc4785e391924fa89118f98bf15f154df81b5a1761eff5278ba6d13f3e6b3b2
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- canvas_cc (0.0.8)
4
+ canvas_cc (0.0.11)
5
5
  builder
6
6
  happymapper
7
7
  nokogiri
@@ -0,0 +1,19 @@
1
+ module CanvasCc::CanvasCC
2
+ class FileUploadQuestionWriter < QuestionWriter
3
+
4
+ register_writer_type 'file_upload_question'
5
+
6
+ private
7
+
8
+ def self.write_question_item_xml(node, question)
9
+ node.item(:title => question.title, :ident => question.identifier) do |item_node|
10
+ write_qti_metadata(item_node, question)
11
+ item_node.presentation do |presentation_node|
12
+ presentation_node.material do |material_node|
13
+ material_node.mattext(question.material, :texttype => 'text/html')
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -3,7 +3,8 @@ module CanvasCc::CanvasCC::Models
3
3
  QTI_META_ATTRIBUTES = [:question_type, :points_possible, :assessment_question_identifierref]
4
4
  STANDARD_QUESTION_TYPES = ['essay_question', 'fill_in_multiple_blanks_question',
5
5
  'multiple_choice_question', 'multiple_answers_question',
6
- 'short_answer_question', 'text_only_question', 'true_false_question']
6
+ 'short_answer_question', 'text_only_question', 'true_false_question',
7
+ 'file_upload_question']
7
8
 
8
9
  attr_accessor :identifier, :original_identifier, :title, :material, :answers, :general_feedback,
9
10
  :general_incorrect_feedback, :general_correct_feedback, *QTI_META_ATTRIBUTES
@@ -7,7 +7,7 @@ module CanvasCc::CanvasCC
7
7
  def self.write_responses(presentation_node, question)
8
8
  resp_idents = question.answers.map{|a| a.resp_ident}.uniq
9
9
  resp_idents.each do |resp_ident|
10
- presentation_node.response_lid(:ident => resp_ident) do |response_node|
10
+ presentation_node.response_lid(:ident => resp_ident, :rcardinality => 'Single') do |response_node|
11
11
  response_node.render_choice do |choice_node|
12
12
  question.answers.select{|a| a.resp_ident == resp_ident}.each do |answer|
13
13
  choice_node.response_label(:ident => answer.id) do |label_node|
@@ -35,7 +35,7 @@ module CanvasCc::CanvasCC
35
35
 
36
36
  # Scores
37
37
  question.answers.each do |answer|
38
- processing_node.respcondition() do |condition_node|
38
+ processing_node.respcondition(:continue => 'No') do |condition_node|
39
39
  condition_node.conditionvar do |var_node|
40
40
  var_node.varequal answer.id, :respident => answer.resp_ident
41
41
  end
@@ -44,8 +44,5 @@ module CanvasCc::CanvasCC
44
44
  end
45
45
  end
46
46
 
47
- # def self.write_additional_nodes(item_node, question)
48
- # write_standard_answer_feedbacks(item_node, question)
49
- # end
50
47
  end
51
48
  end
@@ -147,3 +147,4 @@ require_relative 'numerical_question_writer'
147
147
  require_relative 'short_answer_question_writer'
148
148
  require_relative 'text_only_question_writer'
149
149
  require_relative 'true_false_question_writer'
150
+ require_relative 'file_upload_question_writer'
@@ -1,3 +1,3 @@
1
1
  module CanvasCc
2
- VERSION = "0.0.10"
2
+ VERSION = "0.0.11"
3
3
  end
data/lib/canvas_cc.rb CHANGED
@@ -66,6 +66,7 @@ module CanvasCc
66
66
  autoload :ShortAnswerQuestionWriter, 'canvas_cc/canvas_cc/short_answer_question_writer'
67
67
  autoload :TextOnlyQuestionWriter, 'canvas_cc/canvas_cc/text_only_question_writer'
68
68
  autoload :TrueFalseQuestionWriter, 'canvas_cc/canvas_cc/true_false_question_writer'
69
+ autoload :FileUploadQuestionWriter, 'canvas_cc/canvas_cc/file_upload_question_writer'
69
70
 
70
71
  autoload :QuestionBankWriter, 'canvas_cc/canvas_cc/question_bank_writer'
71
72
  autoload :QuestionGroupWriter, 'canvas_cc/canvas_cc/question_group_writer'
@@ -0,0 +1,23 @@
1
+ require 'spec_helper'
2
+
3
+ module CanvasCc::CanvasCC
4
+ describe FileUploadQuestionWriter do
5
+
6
+ let(:question) { CanvasCc::CanvasCC::Models::Question.create('file_upload_question')}
7
+
8
+ it 'creates the question item xml for a file upload question' do
9
+ question.identifier = 4200
10
+ question.title = 'hello title'
11
+ question.general_feedback = 'feedbacks'
12
+ question.material = 'this is the material'
13
+
14
+ xml = Nokogiri::XML::Builder.new(encoding: 'UTF-8') do |node|
15
+ QuestionWriter.write_question(node, question)
16
+ end.doc
17
+
18
+ expect(xml.at_xpath('item/@ident').value).to eq question.identifier.to_s
19
+ expect(xml.at_xpath('item/@title').value).to eq question.title
20
+ expect(xml.at_xpath("item/itemmetadata/qtimetadata/qtimetadatafield[fieldlabel=\"question_type\" and fieldentry=\"#{question.question_type}\"]")).to_not be_nil
21
+ end
22
+ end
23
+ end
@@ -29,7 +29,7 @@ module CanvasCc::CanvasCC
29
29
  xml = Nokogiri::XML::Builder.new(encoding: 'UTF-8') do |node|
30
30
  QuestionWriter.write_question(node, question)
31
31
  end.doc
32
-
32
+
33
33
  expect(xml.at_xpath('item/@ident').value).to eq question.identifier.to_s
34
34
  expect(xml.at_xpath('item/@title').value).to eq question.title
35
35
  expect(xml.at_xpath("item/itemmetadata/qtimetadata/qtimetadatafield[fieldlabel=\"question_type\" and fieldentry=\"#{question.question_type}\"]")).to_not be_nil
@@ -47,7 +47,7 @@ module CanvasCc::CanvasCC
47
47
  expect(condition.at_xpath("conditionvar/and/not/varequal[@respident=\"response1\" and text()=\"#{answer2.id}\"]")).not_to be_nil
48
48
  expect(condition.at_xpath("conditionvar/and/varequal[@respident=\"response1\" and text()=\"#{answer3.id}\"]")).not_to be_nil
49
49
 
50
- feedback = xml.at_xpath("item/itemfeedback[@ident=\"#{answer1.id}_fb\"]/flow_mat/material/mattext[@texttype=\"text/html\"]")
50
+ feedback = xml.at_xpath("item/itemfeedback[@ident=\"#{answer1.id}_fb\"]/flow_mat/material/mattext[@texttype=\"text/plain\"]")
51
51
  expect(feedback.text).to eq answer1.feedback
52
52
  end
53
53
  end
@@ -46,22 +46,6 @@ module CanvasCc::CanvasCC
46
46
  expect(response.attributes['ident'].value).to eq 'response2'
47
47
  expect(response.at_xpath("render_choice/response_label[@ident=\"#{answer2.id}\"]/material/mattext[@texttype=\"text/html\" and text()=\"#{answer2.answer_text}\"]")).not_to be_nil
48
48
 
49
- # Feedback
50
- condition = xml.at_xpath("item/resprocessing/respcondition[@continue=\"Yes\"]/conditionvar/varequal[@respident=\"response1\" and text()=\"#{answer1.id}\"]/../..")
51
- expect(condition).not_to be_nil
52
- feedback = condition.at_xpath("displayfeedback[@feedbacktype=\"Response\" and @linkrefid=\"#{answer1.id}_fb\"]")
53
- expect(feedback).not_to be_nil
54
-
55
- condition = xml.at_xpath("item/resprocessing/respcondition[@continue=\"Yes\"]/conditionvar/varequal[@respident=\"response2\" and text()=\"#{answer2.id}\"]/../..")
56
- expect(condition).not_to be_nil
57
- feedback = condition.at_xpath("displayfeedback[@feedbacktype=\"Response\" and @linkrefid=\"#{answer2.id}_fb\"]")
58
- expect(feedback).not_to be_nil
59
-
60
- feedback = xml.at_xpath("item/itemfeedback[@ident=\"#{answer1.id}_fb\"]/flow_mat/material/mattext[@texttype=\"text/html\"]")
61
- expect(feedback.text).to eq answer1.feedback
62
- feedback = xml.at_xpath("item/itemfeedback[@ident=\"#{answer2.id}_fb\"]/flow_mat/material/mattext[@texttype=\"text/html\"]")
63
- expect(feedback.text).to eq answer2.feedback
64
-
65
49
  # Conditions
66
50
  condition = xml.at_xpath("item/resprocessing/respcondition[@continue=\"No\"]/conditionvar/varequal[@respident=\"response1\" and text()=\"#{answer1.id}\"]/../..")
67
51
  expect(condition).not_to be_nil
@@ -74,4 +58,4 @@ module CanvasCc::CanvasCC
74
58
  expect(setvar).not_to be_nil
75
59
  end
76
60
  end
77
- end
61
+ end
@@ -49,9 +49,9 @@ module CanvasCc::CanvasCC
49
49
  feedback = condition.at_xpath("displayfeedback[@feedbacktype=\"Response\" and @linkrefid=\"#{answer2.id}_fb\"]")
50
50
  expect(feedback).not_to be_nil
51
51
 
52
- feedback = xml.at_xpath("item/itemfeedback[@ident=\"#{answer1.id}_fb\"]/flow_mat/material/mattext[@texttype=\"text/html\"]")
52
+ feedback = xml.at_xpath("item/itemfeedback[@ident=\"#{answer1.id}_fb\"]/flow_mat/material/mattext[@texttype=\"text/plain\"]")
53
53
  expect(feedback.text).to eq answer1.feedback
54
- feedback = xml.at_xpath("item/itemfeedback[@ident=\"#{answer2.id}_fb\"]/flow_mat/material/mattext[@texttype=\"text/html\"]")
54
+ feedback = xml.at_xpath("item/itemfeedback[@ident=\"#{answer2.id}_fb\"]/flow_mat/material/mattext[@texttype=\"text/plain\"]")
55
55
  expect(feedback.text).to eq answer2.feedback
56
56
 
57
57
  # Conditions
@@ -66,4 +66,4 @@ module CanvasCc::CanvasCC
66
66
  expect(setvar).not_to be_nil
67
67
  end
68
68
  end
69
- end
69
+ end
@@ -100,7 +100,7 @@ module CanvasCc::CanvasCC
100
100
 
101
101
  general_feedback = xml.at_xpath('item/itemfeedback[@ident="general_fb"]')
102
102
  expect(general_feedback).to_not be_nil
103
- expect(general_feedback.at_xpath('flow_mat/material/mattext[@texttype="text/html"]').text).to eq question.general_feedback
103
+ expect(general_feedback.at_xpath('flow_mat/material/mattext[@texttype="text/plain"]').text).to eq question.general_feedback
104
104
  end
105
105
 
106
106
  it 'writes standard answer feedback if called' do
@@ -113,7 +113,7 @@ module CanvasCc::CanvasCC
113
113
  QuestionWriter.write_question(node, question)
114
114
  end.doc
115
115
 
116
- feedback = xml.at_xpath("item/itemfeedback[@ident=\"#{answer.id}_fb\"]/flow_mat/material/mattext[@texttype=\"text/html\"]")
116
+ feedback = xml.at_xpath("item/itemfeedback[@ident=\"#{answer.id}_fb\"]/flow_mat/material/mattext[@texttype=\"text/plain\"]")
117
117
  expect(feedback.text).to eq answer.feedback
118
118
  end
119
119
 
@@ -126,4 +126,4 @@ module CanvasCc::CanvasCC
126
126
  end
127
127
 
128
128
  end
129
- end
129
+ end
@@ -43,8 +43,8 @@ module CanvasCc::CanvasCC
43
43
  feedback = condition.at_xpath("displayfeedback[@feedbacktype=\"Response\" and @linkrefid=\"#{answer.id}_fb\"]")
44
44
  expect(feedback).to_not be_nil
45
45
 
46
- feedback = xml.at_xpath("item/itemfeedback[@ident=\"#{answer.id}_fb\"]/flow_mat/material/mattext[@texttype=\"text/html\"]")
46
+ feedback = xml.at_xpath("item/itemfeedback[@ident=\"#{answer.id}_fb\"]/flow_mat/material/mattext[@texttype=\"text/plain\"]")
47
47
  expect(feedback.text).to eq answer.feedback
48
48
  end
49
49
  end
50
- end
50
+ end
@@ -52,11 +52,11 @@ module CanvasCc::CanvasCC
52
52
  setvar = condition.at_xpath('setvar[@varname="SCORE" and @action="Set" and text()="0"]')
53
53
  expect(setvar).not_to be_nil
54
54
 
55
- feedback = xml.at_xpath("item/itemfeedback[@ident=\"#{true_answer.id}_fb\"]/flow_mat/material/mattext[@texttype=\"text/html\"]")
55
+ feedback = xml.at_xpath("item/itemfeedback[@ident=\"#{true_answer.id}_fb\"]/flow_mat/material/mattext[@texttype=\"text/plain\"]")
56
56
  expect(feedback.text).to eq true_answer.feedback
57
57
 
58
- feedback = xml.at_xpath("item/itemfeedback[@ident=\"#{false_answer.id}_fb\"]/flow_mat/material/mattext[@texttype=\"text/html\"]")
58
+ feedback = xml.at_xpath("item/itemfeedback[@ident=\"#{false_answer.id}_fb\"]/flow_mat/material/mattext[@texttype=\"text/plain\"]")
59
59
  expect(feedback.text).to eq false_answer.feedback
60
60
  end
61
61
  end
62
- end
62
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: canvas_cc
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.10
4
+ version: 0.0.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - Instructure
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-11-22 00:00:00.000000000 Z
11
+ date: 2014-11-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rubyzip
@@ -261,6 +261,7 @@ files:
261
261
  - lib/canvas_cc/canvas_cc/discussion_writer.rb
262
262
  - lib/canvas_cc/canvas_cc/essay_question_writer.rb
263
263
  - lib/canvas_cc/canvas_cc/file_meta_writer.rb
264
+ - lib/canvas_cc/canvas_cc/file_upload_question_writer.rb
264
265
  - lib/canvas_cc/canvas_cc/ims_manifest_generator.rb
265
266
  - lib/canvas_cc/canvas_cc/matching_question_writer.rb
266
267
  - lib/canvas_cc/canvas_cc/models/answer.rb
@@ -325,6 +326,7 @@ files:
325
326
  - spec/moodle2cc/canvas_cc/discussion_writer_spec.rb
326
327
  - spec/moodle2cc/canvas_cc/essay_question_writer_spec.rb
327
328
  - spec/moodle2cc/canvas_cc/file_meta_writer_spec.rb
329
+ - spec/moodle2cc/canvas_cc/file_upload_question_writer_spec.rb
328
330
  - spec/moodle2cc/canvas_cc/ims_manifest_generator_spec.rb
329
331
  - spec/moodle2cc/canvas_cc/matching_question_writer_spec.rb
330
332
  - spec/moodle2cc/canvas_cc/models/assessment_spec.rb
@@ -430,6 +432,7 @@ test_files:
430
432
  - spec/moodle2cc/canvas_cc/discussion_writer_spec.rb
431
433
  - spec/moodle2cc/canvas_cc/essay_question_writer_spec.rb
432
434
  - spec/moodle2cc/canvas_cc/file_meta_writer_spec.rb
435
+ - spec/moodle2cc/canvas_cc/file_upload_question_writer_spec.rb
433
436
  - spec/moodle2cc/canvas_cc/ims_manifest_generator_spec.rb
434
437
  - spec/moodle2cc/canvas_cc/matching_question_writer_spec.rb
435
438
  - spec/moodle2cc/canvas_cc/models/assessment_spec.rb