canvas_cc 0.0.27 → 0.0.28

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: e278cfc9b75f8c345086fa2d354d14feb5a44501
4
- data.tar.gz: 9ad3871e6e8a73c4f44e0652dba1641730c8c8d7
3
+ metadata.gz: 3a8a64dd671c54241f7d1051eb176a106f2937f3
4
+ data.tar.gz: 74ee921f395af8bc0b813a24aa4a98c03cf5c2dc
5
5
  SHA512:
6
- metadata.gz: 4193e0b211dbafdab20a6ec6314249a4d5c325f80b745a7171aac48ced6345f45638f633ed9e7029bac86ba8651e2135b84a588776d66a446058a733a99458bf
7
- data.tar.gz: f6a0226e896598af99e45ffd61ee7f3abcc3926915a498763d5271c2d17bfe0b0099f3a7e81327d4ea0580047ec4280d2a4689956671f09b8aa797f1c04697c8
6
+ metadata.gz: 1686311c4077fb06f9311d4965bf77915bb323c0a1f761aa2c5b083083b0ba39ed13aacfcfd0c4b87839e458e5e0c4e5a4a93917aeabc82de2c8047f84d72421
7
+ data.tar.gz: c6159917b40b05111da1c66397bf315f5620c798adea0897f40853e3556846782387e7b2d028826005e9886c142f15916b5d893e28283c073c444c87f6984e13
@@ -26,5 +26,11 @@ module CanvasCc::CanvasCC::AssignmentHelper
26
26
  xml.automatic_peer_reviews assignment.automatic_peer_reviews unless assignment.automatic_peer_reviews.nil?
27
27
  xml.anonymous_peer_reviews assignment.anonymous_peer_reviews unless assignment.anonymous_peer_reviews.nil?
28
28
  xml.quiz_identifierref assignment.quiz_identifierref unless assignment.quiz_identifierref.nil?
29
+ unless assignment.rubric.nil?
30
+ xml.rubric_identifierref assignment.rubric.identifier
31
+ xml.rubric_external_identifier assignment.rubric.external_identifier
32
+ end
33
+ xml.rubric_use_for_grading assignment.rubric_use_for_grading unless assignment.rubric_use_for_grading.nil?
34
+ xml.rubric_hide_score_total assignment.rubric_hide_score_total unless assignment.rubric_hide_score_total.nil?
29
35
  end
30
36
  end
@@ -52,6 +52,7 @@ module CanvasCc::CanvasCC
52
52
  CanvasCc::CanvasCC::QuestionBankWriter.new(dir, *@course.question_banks).write
53
53
  CanvasCc::CanvasCC::AssessmentWriter.new(dir, *@course.assessments).write
54
54
  CanvasCc::CanvasCC::OutcomeWriter.new(dir, *@course.outcomes).write
55
+ CanvasCc::CanvasCC::RubricWriter.new(dir, *@course.rubrics).write
55
56
  end
56
57
 
57
58
  def zip_dir(out_file, dir)
@@ -4,7 +4,7 @@ module CanvasCc::CanvasCC::Models
4
4
  :assignment_group_identifier_ref, :workflow_state, :points_possible, :grading_type, :all_day,
5
5
  :submission_types, :position, :peer_review_count, :peer_reviews_assigned, :peer_reviews,
6
6
  :automatic_peer_reviews, :grade_group_students_individually, :muted, :turnitin_enabled,
7
- :anonymous_peer_reviews, :quiz_identifierref
7
+ :anonymous_peer_reviews, :quiz_identifierref, :rubric, :rubric_use_for_grading, :rubric_hide_score_total
8
8
 
9
9
  LAR_TYPE = 'associatedcontent/imscc_xmlv1p1/learning-application-resource'
10
10
  ASSIGNMENT_SETTINGS_FILE = 'assignment_settings.xml'
@@ -2,7 +2,7 @@ module CanvasCc::CanvasCC::Models
2
2
  class Course
3
3
 
4
4
  attr_accessor :format, :identifier, :copyright, :settings, :resources, :canvas_modules, :files, :pages, :discussions,
5
- :assignments, :assessments, :question_banks, :assignment_groups, :folders, :syllabus, :outcomes
5
+ :assignments, :assessments, :question_banks, :assignment_groups, :folders, :syllabus, :outcomes, :rubrics
6
6
 
7
7
  def initialize
8
8
  @settings = {}
@@ -17,6 +17,7 @@ module CanvasCc::CanvasCC::Models
17
17
  @question_banks = []
18
18
  @assignment_groups = []
19
19
  @outcomes = []
20
+ @rubrics = []
20
21
  end
21
22
 
22
23
  def start_at
@@ -0,0 +1,11 @@
1
+ module CanvasCc::CanvasCC::Models
2
+ class Rubric
3
+ META_ATTRIBUTES = %i(external_identifier title description read_only
4
+ reusable public points_possible free_form_criterion_comments)
5
+ attr_accessor :identifier, :criteria, *META_ATTRIBUTES
6
+
7
+ def initialize
8
+ @criteria = []
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,10 @@
1
+ module CanvasCc::CanvasCC::Models
2
+ class RubricCriterion
3
+ META_ATTRIBUTES = %i(description long_description points mastery_points ignore_for_sorting)
4
+ attr_accessor :id, :learning_outcome, :ratings, *META_ATTRIBUTES
5
+
6
+ def initialize
7
+ @ratings = []
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,52 @@
1
+ module CanvasCc::CanvasCC
2
+ class RubricWriter
3
+ RUBRICS_FILE = 'rubrics.xml'
4
+
5
+ def initialize(work_dir, *rubrics)
6
+ @work_dir = work_dir
7
+ @rubrics = rubrics
8
+ end
9
+
10
+ def write
11
+ xml = Nokogiri::XML::Builder.new(:encoding => 'UTF-8') do |xml|
12
+ write_rubrics(xml) do |xml|
13
+ @rubrics.each do |rubric|
14
+ xml.rubric(identifier: rubric.identifier) do
15
+ CanvasCc::CanvasCC::Models::Rubric::META_ATTRIBUTES.each do |attr|
16
+ xml.send(attr, rubric.send(attr)) unless rubric.send(attr).nil?
17
+ end
18
+ write_criteria xml, rubric
19
+ end
20
+ end
21
+ end
22
+ end.to_xml
23
+ File.open(File.join(@work_dir, CanvasCc::CanvasCC::CartridgeCreator::COURSE_SETTINGS_DIR, RUBRICS_FILE), 'w') { |f| f.write(xml) }
24
+ end
25
+
26
+ def write_criteria(xml, rubric)
27
+ xml.criteria do
28
+ rubric.criteria.each do |criterion|
29
+ xml.criterion do
30
+ xml.criterion_id criterion.id
31
+ CanvasCc::CanvasCC::Models::RubricCriterion::META_ATTRIBUTES.each do |attr|
32
+ xml.send(attr, criterion.send(attr)) unless criterion.send(attr).nil?
33
+ end
34
+ xml.learning_outcome_identifierref criterion.learning_outcome.identifier if criterion.learning_outcome
35
+ xml << CanvasCc::CanvasCC::RatingWriter.new(*criterion.ratings).write
36
+ end
37
+ end
38
+ end
39
+ end
40
+
41
+ private
42
+ def write_rubrics(xml)
43
+ xml.rubrics(
44
+ 'xmlns' => 'http://canvas.instructure.com/xsd/cccv1p0',
45
+ 'xmlns:xsi' => 'http://www.w3.org/2001/XMLSchema-instance',
46
+ 'xsi:schemaLocation' => 'http://canvas.instructure.com/xsd/cccv1p0 http://canvas.instructure.com/xsd/cccv1p0.xsd'
47
+ ) {
48
+ yield xml
49
+ }
50
+ end
51
+ end
52
+ end
@@ -1,3 +1,3 @@
1
1
  module CanvasCc
2
- VERSION = "0.0.27"
2
+ VERSION = "0.0.28"
3
3
  end
data/lib/canvas_cc.rb CHANGED
@@ -56,6 +56,7 @@ module CanvasCc
56
56
  autoload :CourseSyllabusWriter, 'canvas_cc/canvas_cc/course_syllabus_writer'
57
57
  autoload :OutcomeWriter, 'canvas_cc/canvas_cc/outcome_writer'
58
58
  autoload :RatingWriter, 'canvas_cc/canvas_cc/rating_writer'
59
+ autoload :RubricWriter, 'canvas_cc/canvas_cc/rubric_writer'
59
60
 
60
61
  autoload :QuestionWriter, 'canvas_cc/canvas_cc/question_writer'
61
62
  autoload :CalculatedQuestionWriter, 'canvas_cc/canvas_cc/calculated_question_writer'
@@ -101,6 +102,8 @@ module CanvasCc
101
102
  autoload :ModuleCompletionRequirement, 'canvas_cc/canvas_cc/models/module_completion_requirement'
102
103
  autoload :Outcome, 'canvas_cc/canvas_cc/models/outcome'
103
104
  autoload :Rating, 'canvas_cc/canvas_cc/models/rating'
105
+ autoload :Rubric, 'canvas_cc/canvas_cc/models/rubric'
106
+ autoload :RubricCriterion, 'canvas_cc/canvas_cc/models/rubric_criterion'
104
107
  end
105
108
  end
106
109
  end
@@ -22,6 +22,8 @@ module CanvasCc::CanvasCC
22
22
  DiscussionWriter.any_instance.stub(:write)
23
23
  AssignmentWriter.any_instance.stub(:write)
24
24
  QuestionBankWriter.any_instance.stub(:write)
25
+ OutcomeWriter.any_instance.stub(:write)
26
+ RubricWriter.any_instance.stub(:write)
25
27
  end
26
28
 
27
29
  after :each do
@@ -29,7 +31,7 @@ module CanvasCc::CanvasCC
29
31
  end
30
32
 
31
33
  [CanvasExportWriter, CourseSyllabusWriter, CourseSettingWriter, ModuleMetaWriter, ImsManifestGenerator,
32
- FileMetaWriter, PageWriter, DiscussionWriter, AssignmentWriter, QuestionBankWriter].each do |klass|
34
+ FileMetaWriter, PageWriter, DiscussionWriter, AssignmentWriter, QuestionBankWriter, OutcomeWriter, RubricWriter].each do |klass|
33
35
  it "writes #{klass}" do
34
36
  writer_double = double(write: nil)
35
37
  klass.stub(:new).and_return(writer_double)
@@ -48,4 +50,4 @@ module CanvasCc::CanvasCC
48
50
  end
49
51
 
50
52
  end
51
- end
53
+ end
@@ -0,0 +1,68 @@
1
+ require 'spec_helper'
2
+
3
+ describe CanvasCc::CanvasCC::RubricWriter do
4
+ let!(:rubric) do
5
+ rubric = CanvasCc::CanvasCC::Models::Rubric.new
6
+ rubric.identifier = SecureRandom.hex
7
+ rubric.title = 'some rubric'
8
+ rubric
9
+ end
10
+
11
+ let!(:criterion) do
12
+ criterion = CanvasCc::CanvasCC::Models::RubricCriterion.new
13
+ criterion.id = SecureRandom.hex
14
+ criterion.description = 'some criterion'
15
+ rubric.criteria << criterion
16
+ criterion
17
+ end
18
+
19
+ let!(:rating) do
20
+ tmp_rating = CanvasCc::CanvasCC::Models::Rating.new
21
+ tmp_rating.id = '123'
22
+ tmp_rating.description = 'a rating'
23
+ tmp_rating.points = 5
24
+ tmp_rating.criterion_id = '123'
25
+ tmp_rating.long_description = 'a longer description'
26
+ criterion.ratings << tmp_rating
27
+ tmp_rating
28
+ end
29
+
30
+ let(:tmpdir) { Dir.mktmpdir }
31
+
32
+ before :each do
33
+ Dir.mkdir(File.join(tmpdir, CanvasCc::CanvasCC::CartridgeCreator::COURSE_SETTINGS_DIR))
34
+ end
35
+
36
+ after :each do
37
+ FileUtils.rm_r tmpdir
38
+ end
39
+
40
+ it 'xml contains the correct schema' do
41
+ xml = write_xml(rubric)
42
+
43
+ valid_schema = File.read(fixture_path(File.join('common_cartridge', 'schema', 'cccv1p0.xsd')))
44
+ xsd = Nokogiri::XML::Schema(valid_schema)
45
+ expect(xsd.validate(xml)).to be_truthy
46
+ end
47
+
48
+ it 'writes a rubric' do
49
+ xml = write_xml(rubric)
50
+ node = xml.at_xpath('//xmlns:rubrics/xmlns:rubric')
51
+ expect(node.attr('identifier')).to eql rubric.identifier
52
+ expect(node.at_xpath('xmlns:title').text).to eql rubric.title
53
+ criterion_node = node.at_xpath('./xmlns:criteria/xmlns:criterion')
54
+ expect(criterion_node.at_xpath('xmlns:criterion_id').text).to eql criterion.id
55
+ expect(criterion_node.at_xpath('xmlns:description').text).to eql criterion.description
56
+ rating_node = criterion_node.at_xpath('./xmlns:ratings/xmlns:rating')
57
+ expect(rating_node.at_xpath('xmlns:id').text).to eql rating.id
58
+ expect(rating_node.at_xpath('xmlns:description').text).to eql rating.description
59
+ end
60
+
61
+ private
62
+ def write_xml(rubric)
63
+ CanvasCc::CanvasCC::RubricWriter.new(tmpdir, rubric).write
64
+ path = File.join(tmpdir, CanvasCc::CanvasCC::CartridgeCreator::COURSE_SETTINGS_DIR,
65
+ CanvasCc::CanvasCC::RubricWriter::RUBRICS_FILE)
66
+ Nokogiri::XML(File.read(path))
67
+ end
68
+ 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.27
4
+ version: 0.0.28
5
5
  platform: ruby
6
6
  authors:
7
7
  - Instructure
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-11-23 00:00:00.000000000 Z
11
+ date: 2015-11-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rubyzip
@@ -290,6 +290,8 @@ files:
290
290
  - lib/canvas_cc/canvas_cc/models/range.rb
291
291
  - lib/canvas_cc/canvas_cc/models/rating.rb
292
292
  - lib/canvas_cc/canvas_cc/models/resource.rb
293
+ - lib/canvas_cc/canvas_cc/models/rubric.rb
294
+ - lib/canvas_cc/canvas_cc/models/rubric_criterion.rb
293
295
  - lib/canvas_cc/canvas_cc/models/syllabus.rb
294
296
  - lib/canvas_cc/canvas_cc/models/web_content.rb
295
297
  - lib/canvas_cc/canvas_cc/models/web_link.rb
@@ -306,6 +308,7 @@ files:
306
308
  - lib/canvas_cc/canvas_cc/question_group_writer.rb
307
309
  - lib/canvas_cc/canvas_cc/question_writer.rb
308
310
  - lib/canvas_cc/canvas_cc/rating_writer.rb
311
+ - lib/canvas_cc/canvas_cc/rubric_writer.rb
309
312
  - lib/canvas_cc/canvas_cc/short_answer_question_writer.rb
310
313
  - lib/canvas_cc/canvas_cc/text_only_question_writer.rb
311
314
  - lib/canvas_cc/canvas_cc/true_false_question_writer.rb
@@ -367,6 +370,7 @@ files:
367
370
  - spec/moodle2cc/canvas_cc/question_bank_writer_spec.rb
368
371
  - spec/moodle2cc/canvas_cc/question_writer_spec.rb
369
372
  - spec/moodle2cc/canvas_cc/rating_writer_spec.rb
373
+ - spec/moodle2cc/canvas_cc/rubric_writer_spec.rb
370
374
  - spec/moodle2cc/canvas_cc/short_answer_question_writer_spec.rb
371
375
  - spec/moodle2cc/canvas_cc/text_only_question_writer_spec.rb
372
376
  - spec/moodle2cc/canvas_cc/true_false_question_writer_spec.rb
@@ -478,6 +482,7 @@ test_files:
478
482
  - spec/moodle2cc/canvas_cc/question_bank_writer_spec.rb
479
483
  - spec/moodle2cc/canvas_cc/question_writer_spec.rb
480
484
  - spec/moodle2cc/canvas_cc/rating_writer_spec.rb
485
+ - spec/moodle2cc/canvas_cc/rubric_writer_spec.rb
481
486
  - spec/moodle2cc/canvas_cc/short_answer_question_writer_spec.rb
482
487
  - spec/moodle2cc/canvas_cc/text_only_question_writer_spec.rb
483
488
  - spec/moodle2cc/canvas_cc/true_false_question_writer_spec.rb