canvas_cc 0.0.27 → 0.0.28

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: 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