canvas_cc 0.0.7 → 0.0.8

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: df4b07c232a5a8159af168cb34204e147620d55a
4
- data.tar.gz: f4c0a1d7f7c7f63c41a5f1fdc850823b416c93ee
3
+ metadata.gz: a7080470c3965daa5b415a043fbcd609737efed7
4
+ data.tar.gz: b327a4abf7c6915f5d3c3c8b694a4d4bf8044102
5
5
  SHA512:
6
- metadata.gz: 2f959882d3e30073bbfc74a970cea56790b66d08ed18f77680400a4c2e6baef0e87024990680fd5a7860b4500df5ec0c5c27ba2cf55c4e961dec8c9d5248dc4a
7
- data.tar.gz: 41eea0cc5c0ab5c8803bb613ab9860a4d554110d4e753978311de63af73242dbfe34cfd214cff8b8b2b4051dd37e7dbcb6cd3ffb32d339f4fdaeb5b7a5e2719d
6
+ metadata.gz: 2a406d76c71573444ad107ffec8f56f3e18ff58aa54d08775f94233b207132d2448cad1881d916c5da9eeda9e446df47d43ebf933c670223cb597f3a832ea6a8
7
+ data.tar.gz: 07d4d35fd462129363d1f0e67c2c0b0771e1ae483b6c041fa070dd87d6f1289975f22e2609b870bf3f137df79d93165ed1cbe3fc50414dbc4df069d13524c0cc
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- canvas_cc (0.0.7)
4
+ canvas_cc (0.0.8)
5
5
  builder
6
6
  happymapper
7
7
  nokogiri
@@ -49,10 +49,10 @@ GEM
49
49
  rb-inotify (>= 0.9)
50
50
  lumberjack (1.0.9)
51
51
  method_source (0.8.2)
52
- mini_portile (0.6.0)
52
+ mini_portile (0.6.1)
53
53
  minitest (5.4.1)
54
- nokogiri (1.6.3.1)
55
- mini_portile (= 0.6.0)
54
+ nokogiri (1.6.4.1)
55
+ mini_portile (~> 0.6.0)
56
56
  pry (0.10.1)
57
57
  coderay (~> 1.1.0)
58
58
  method_source (~> 0.8.1)
@@ -19,6 +19,15 @@ module CanvasCc::CanvasCC
19
19
  end
20
20
  end
21
21
  end
22
+
23
+ next unless question.distractors
24
+ question.distractors.each do |distractor|
25
+ choice_node.response_label(:ident => Digest::MD5.hexdigest(distractor)) do |label_node|
26
+ label_node.material do |material_node|
27
+ material_node.mattext(distractor, :texttype => 'text/plain')
28
+ end
29
+ end
30
+ end
22
31
  end
23
32
  end
24
33
  end
@@ -34,10 +43,30 @@ module CanvasCc::CanvasCC
34
43
  end
35
44
  condition_node.setvar "%.2f" % score, :varname => 'SCORE', :action => 'Add'
36
45
  end
46
+
47
+ next unless match.has_key?(:answer_feedback) && match[:answer_feedback].length > 0
48
+ processing_node.respcondition do |condition_node|
49
+ condition_node.conditionvar do |var_node|
50
+ var_node.not do |not_node|
51
+ not_node.varequal match[:id], :respident => "response_#{match[:id]}"
52
+ end
53
+ end
54
+ condition_node.displayfeedback :linkrefid => "#{match[:id]}_fb", :feedbacktype => 'Response'
55
+ end
37
56
  end
38
57
  end
39
58
 
40
59
  def self.write_additional_nodes(item_node, question)
60
+ question.matches.each do |match|
61
+ next unless match.has_key?(:answer_feedback) && match[:answer_feedback].length > 0
62
+ item_node.itemfeedback(:ident => "#{match[:id]}_fb") do |feedback_node|
63
+ feedback_node.flow_mat do |flow_node|
64
+ flow_node.material do |material_node|
65
+ material_node.mattext match[:answer_feedback], :texttype => 'text/plain'
66
+ end
67
+ end
68
+ end
69
+ end
41
70
  end
42
71
  end
43
- end
72
+ end
@@ -2,6 +2,6 @@ module CanvasCc::CanvasCC::Models
2
2
  class MatchingQuestion < Question
3
3
  register_question_type 'matching_question'
4
4
 
5
- attr_accessor :matches
5
+ attr_accessor :matches, :distractors
6
6
  end
7
- end
7
+ end
@@ -1,3 +1,3 @@
1
1
  module CanvasCc
2
- VERSION = "0.0.7"
2
+ VERSION = "0.0.8"
3
3
  end
@@ -10,9 +10,10 @@ module CanvasCc::CanvasCC
10
10
  question.title = 'its over nine thousannnd'
11
11
  question.general_feedback = 'ur totes awesome'
12
12
  question.material = 'this is a question, or is it?'
13
+ question.distractors = %w(distractor1 distractor2)
13
14
 
14
- match1 = {:id => '1', :question_text => 'qtext', :question_text_format => '1', :answer_text => 'answer1'}
15
- match2 = {:id => '2', :question_text => 'qtext2', :question_text_format => '1', :answer_text => 'answer2'}
15
+ match1 = {:id => '1', :question_text => 'qtext', :question_text_format => '1', :answer_text => 'answer1', :answer_feedback => 'good'}
16
+ match2 = {:id => '2', :question_text => 'qtext2', :question_text_format => '1', :answer_text => 'answer2', :answer_feedback => 'bad'}
16
17
  question.matches = [match1, match2]
17
18
 
18
19
  xml = Nokogiri::XML::Builder.new(encoding: 'UTF-8') do |node|
@@ -27,11 +28,15 @@ module CanvasCc::CanvasCC
27
28
  expect(response.at_xpath('material/mattext[@texttype="text/plain"]').text).to eq match1[:question_text]
28
29
  expect(response.at_xpath("render_choice/response_label[@ident=\"#{match1[:id]}\"]/material/mattext").text).to eq match1[:answer_text]
29
30
  expect(response.at_xpath("render_choice/response_label[@ident=\"#{match2[:id]}\"]/material/mattext").text).to eq match2[:answer_text]
31
+ expect(response.at_xpath("render_choice/response_label[@ident=\"#{Digest::MD5.hexdigest(question.distractors[0])}\"]/material/mattext").text).to eq question.distractors[0]
32
+ expect(response.at_xpath("render_choice/response_label[@ident=\"#{Digest::MD5.hexdigest(question.distractors[1])}\"]/material/mattext").text).to eq question.distractors[1]
30
33
 
31
34
  response = xml.at_xpath("item/presentation/response_lid[@ident=\"response_#{match2[:id]}\"]")
32
35
  expect(response.at_xpath('material/mattext[@texttype="text/plain"]').text).to eq match2[:question_text]
33
36
  expect(response.at_xpath("render_choice/response_label[@ident=\"#{match1[:id]}\"]/material/mattext").text).to eq match1[:answer_text]
34
37
  expect(response.at_xpath("render_choice/response_label[@ident=\"#{match2[:id]}\"]/material/mattext").text).to eq match2[:answer_text]
38
+ expect(response.at_xpath("render_choice/response_label[@ident=\"#{Digest::MD5.hexdigest(question.distractors[0])}\"]/material/mattext").text).to eq question.distractors[0]
39
+ expect(response.at_xpath("render_choice/response_label[@ident=\"#{Digest::MD5.hexdigest(question.distractors[1])}\"]/material/mattext").text).to eq question.distractors[1]
35
40
 
36
41
  condition = xml.at_xpath("item/resprocessing/respcondition/conditionvar[varequal=\"#{match1[:id]}\"]/..")
37
42
  expect(condition.at_xpath("conditionvar/varequal[@respident=\"response_#{match1[:id]}\"]")).not_to be_nil
@@ -40,12 +45,21 @@ module CanvasCc::CanvasCC
40
45
  expect(set_var.attributes['action'].value).to eq 'Add'
41
46
  expect(set_var.text).to eq '50.00'
42
47
 
48
+ condition = xml.at_xpath("item/resprocessing/respcondition/conditionvar/not[varequal=\"#{match1[:id]}\"]/..")
49
+ expect(condition.at_xpath("not/varequal[@respident=\"response_#{match1[:id]}\"]")).not_to be_nil
50
+ expect(condition.at_xpath("not/varequal[@respident=\"response_#{match1[:id]}\"]").text).to eq("1")
51
+
43
52
  condition = xml.at_xpath("item/resprocessing/respcondition/conditionvar[varequal=\"#{match2[:id]}\"]/..")
44
53
  expect(condition.at_xpath("conditionvar/varequal[@respident=\"response_#{match2[:id]}\"]")).not_to be_nil
45
54
  set_var = condition.at_xpath('setvar')
46
55
  expect(set_var.attributes['varname'].value).to eq 'SCORE'
47
56
  expect(set_var.attributes['action'].value).to eq 'Add'
48
57
  expect(set_var.text).to eq '50.00'
58
+
59
+ feedback = xml.at_xpath("item/itemfeedback[@ident=\"#{match1[:id]}_fb\"]/flow_mat/material/mattext[@texttype=\"text/plain\"]")
60
+ expect(feedback.text).to eq match1[:answer_feedback]
61
+ feedback = xml.at_xpath("item/itemfeedback[@ident=\"#{match2[:id]}_fb\"]/flow_mat/material/mattext[@texttype=\"text/plain\"]")
62
+ expect(feedback.text).to eq match2[:answer_feedback]
49
63
  end
50
64
  end
51
- end
65
+ 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
+ debugger
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
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.7
4
+ version: 0.0.8
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-17 00:00:00.000000000 Z
11
+ date: 2014-11-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rubyzip