canvas_cc 0.0.26 → 0.0.27

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: f549d5258b5e77abe036e1c2070fcd2351345c8d
4
- data.tar.gz: 2778c373ba05e902c8c2218c85ea27d0d902c602
3
+ metadata.gz: e278cfc9b75f8c345086fa2d354d14feb5a44501
4
+ data.tar.gz: 9ad3871e6e8a73c4f44e0652dba1641730c8c8d7
5
5
  SHA512:
6
- metadata.gz: 8834a9d8cd2be57252702bba48465b14172fd654bb653e9ec06d8b05df702082be980f4799ba8c506922ef2fb32aa6dd863346e5df63d9bac0d85fa22999dc1e
7
- data.tar.gz: 2fbd1b27bda3cbe03cd0fcca130a8c091c23b415448a39c66c41e1d0f5aa1ba54d8a91df28ed5292ca26e3d6576ab6e34e80d7239275eb196190eadf9d7fde38
6
+ metadata.gz: 4193e0b211dbafdab20a6ec6314249a4d5c325f80b745a7171aac48ced6345f45638f633ed9e7029bac86ba8651e2135b84a588776d66a446058a733a99458bf
7
+ data.tar.gz: f6a0226e896598af99e45ffd61ee7f3abcc3926915a498763d5271c2d17bfe0b0099f3a7e81327d4ea0580047ec4280d2a4689956671f09b8aa797f1c04697c8
@@ -51,6 +51,7 @@ module CanvasCc::CanvasCC
51
51
  CanvasCc::CanvasCC::AssignmentWriter.new(dir, *@course.assignments).write
52
52
  CanvasCc::CanvasCC::QuestionBankWriter.new(dir, *@course.question_banks).write
53
53
  CanvasCc::CanvasCC::AssessmentWriter.new(dir, *@course.assessments).write
54
+ CanvasCc::CanvasCC::OutcomeWriter.new(dir, *@course.outcomes).write
54
55
  end
55
56
 
56
57
  def zip_dir(out_file, dir)
@@ -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
5
+ :assignments, :assessments, :question_banks, :assignment_groups, :folders, :syllabus, :outcomes
6
6
 
7
7
  def initialize
8
8
  @settings = {}
@@ -16,6 +16,7 @@ module CanvasCc::CanvasCC::Models
16
16
  @assessments = []
17
17
  @question_banks = []
18
18
  @assignment_groups = []
19
+ @outcomes = []
19
20
  end
20
21
 
21
22
  def start_at
@@ -0,0 +1,11 @@
1
+ module CanvasCc::CanvasCC::Models
2
+ class Outcome
3
+ attr_accessor :identifier, :title, :description, :points_possible, :mastery_points,
4
+ :ratings, :is_global_outcome, :ratings, :external_identifier
5
+
6
+ def initialize
7
+ @ratings = []
8
+ end
9
+
10
+ end
11
+ end
@@ -0,0 +1,5 @@
1
+ module CanvasCc::CanvasCC::Models
2
+ class Rating
3
+ attr_accessor :id, :description, :points, :criterion_id, :long_description
4
+ end
5
+ end
@@ -0,0 +1,40 @@
1
+ module CanvasCc::CanvasCC
2
+ class OutcomeWriter
3
+ LEARNING_OUTCOMES_FILE = 'learning_outcomes.xml'
4
+
5
+ def initialize(work_dir, *outcomes)
6
+ @work_dir = work_dir
7
+ @outcomes = outcomes
8
+ end
9
+
10
+ def write
11
+ xml = Nokogiri::XML::Builder.new(:encoding => 'UTF-8') do |xml|
12
+ write_outcomes(xml) do |xml|
13
+ @outcomes.each do |outcome|
14
+ xml.learningOutcome(identifier: outcome.identifier) do
15
+ xml.title outcome.title
16
+ xml.description outcome.description
17
+ xml.points_possible outcome.points_possible
18
+ xml.mastery_points outcome.mastery_points
19
+ xml << CanvasCc::CanvasCC::RatingWriter.new(*outcome.ratings).write
20
+ xml.is_global_outcome outcome.is_global_outcome
21
+ xml.external_identifier outcome.external_identifier if outcome.external_identifier
22
+ end
23
+ end
24
+ end
25
+ end.to_xml
26
+ File.open(File.join(@work_dir, CanvasCc::CanvasCC::CartridgeCreator::COURSE_SETTINGS_DIR, LEARNING_OUTCOMES_FILE), 'w') { |f| f.write(xml) }
27
+ end
28
+
29
+ private
30
+ def write_outcomes(xml)
31
+ xml.learningOutcomes(
32
+ 'xmlns' => 'http://canvas.instructure.com/xsd/cccv1p0',
33
+ 'xmlns:xsi' => 'http://www.w3.org/2001/XMLSchema-instance',
34
+ 'xsi:schemaLocation' => 'http://canvas.instructure.com/xsd/cccv1p0 http://canvas.instructure.com/xsd/cccv1p0.xsd'
35
+ ) {
36
+ yield xml
37
+ }
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,27 @@
1
+ module CanvasCc::CanvasCC
2
+ class RatingWriter
3
+
4
+ def initialize(*ratings)
5
+ @ratings = ratings
6
+ end
7
+
8
+ # It is assumed that ratings will be written only within the context of another object,
9
+ # such as learning outcomes or rubrics
10
+ def write
11
+ Nokogiri::XML::Builder.new(:encoding => 'UTF-8') do |xml|
12
+ xml.ratings do |xml|
13
+ @ratings.each do |rating|
14
+ xml.rating do
15
+ xml.id rating.id
16
+ xml.description rating.description
17
+ xml.points rating.points
18
+ xml.criterion_id rating.criterion_id
19
+ xml.long_description rating.long_description
20
+ end
21
+ end
22
+ end
23
+ end.to_xml
24
+ end
25
+ end
26
+
27
+ end
@@ -1,3 +1,3 @@
1
1
  module CanvasCc
2
- VERSION = "0.0.26"
2
+ VERSION = "0.0.27"
3
3
  end
data/lib/canvas_cc.rb CHANGED
@@ -54,6 +54,8 @@ module CanvasCc
54
54
  autoload :AssignmentWriter, 'canvas_cc/canvas_cc/assignment_writer'
55
55
  autoload :AssignmentGroupWriter, 'canvas_cc/canvas_cc/assignment_group_writer'
56
56
  autoload :CourseSyllabusWriter, 'canvas_cc/canvas_cc/course_syllabus_writer'
57
+ autoload :OutcomeWriter, 'canvas_cc/canvas_cc/outcome_writer'
58
+ autoload :RatingWriter, 'canvas_cc/canvas_cc/rating_writer'
57
59
 
58
60
  autoload :QuestionWriter, 'canvas_cc/canvas_cc/question_writer'
59
61
  autoload :CalculatedQuestionWriter, 'canvas_cc/canvas_cc/calculated_question_writer'
@@ -97,6 +99,8 @@ module CanvasCc
97
99
  autoload :Range, 'canvas_cc/canvas_cc/models/range'
98
100
  autoload :ModulePrerequisite, 'canvas_cc/canvas_cc/models/module_prerequisite'
99
101
  autoload :ModuleCompletionRequirement, 'canvas_cc/canvas_cc/models/module_completion_requirement'
102
+ autoload :Outcome, 'canvas_cc/canvas_cc/models/outcome'
103
+ autoload :Rating, 'canvas_cc/canvas_cc/models/rating'
100
104
  end
101
105
  end
102
106
  end
@@ -0,0 +1,12 @@
1
+ require 'spec_helper'
2
+
3
+ describe CanvasCc::CanvasCC::Models::Outcome do
4
+ it_behaves_like 'it has an attribute for', :identifier
5
+ it_behaves_like 'it has an attribute for', :title
6
+ it_behaves_like 'it has an attribute for', :description
7
+ it_behaves_like 'it has an attribute for', :points_possible
8
+ it_behaves_like 'it has an attribute for', :mastery_points
9
+ it('has an attribute for ratings') { expect(subject.ratings).to eql [] }
10
+ it_behaves_like 'it has an attribute for', :is_global_outcome
11
+ it_behaves_like 'it has an attribute for', :external_identifier
12
+ end
@@ -11,8 +11,6 @@ module CanvasCc::CanvasCC::Models
11
11
  it_behaves_like 'it has an attribute for', :body
12
12
  it_behaves_like 'it has an attribute for', :title
13
13
 
14
- its(:type) { should eq 'webcontent' }
15
-
16
14
  it "hashes the identifier" do
17
15
  page.identifier = 3
18
16
  expect(page.identifier).to eq 3
@@ -31,4 +29,4 @@ module CanvasCc::CanvasCC::Models
31
29
  end
32
30
 
33
31
  end
34
- end
32
+ end
@@ -0,0 +1,9 @@
1
+ require 'spec_helper'
2
+
3
+ describe CanvasCc::CanvasCC::Models::Rating do
4
+ it_behaves_like 'it has an attribute for', :id
5
+ it_behaves_like 'it has an attribute for', :description
6
+ it_behaves_like 'it has an attribute for', :points
7
+ it_behaves_like 'it has an attribute for', :criterion_id
8
+ it_behaves_like 'it has an attribute for', :long_description
9
+ end
@@ -0,0 +1,46 @@
1
+ require 'spec_helper'
2
+
3
+ describe CanvasCc::CanvasCC::OutcomeWriter do
4
+ let(:outcome) do
5
+ outcome = CanvasCc::CanvasCC::Models::Outcome.new
6
+ outcome.identifier = SecureRandom.hex
7
+ outcome.points_possible = 5
8
+ outcome.mastery_points = 5
9
+ outcome.is_global_outcome = false
10
+ outcome
11
+ end
12
+ let(:tmpdir) { Dir.mktmpdir }
13
+
14
+ before :each do
15
+ Dir.mkdir(File.join(tmpdir, CanvasCc::CanvasCC::CartridgeCreator::COURSE_SETTINGS_DIR))
16
+ end
17
+
18
+ after :each do
19
+ FileUtils.rm_r tmpdir
20
+ end
21
+
22
+ it 'xml contains the correct schema' do
23
+ xml = write_xml(outcome)
24
+
25
+ valid_schema = File.read(fixture_path(File.join('common_cartridge', 'schema', 'cccv1p0.xsd')))
26
+ xsd = Nokogiri::XML::Schema(valid_schema)
27
+ expect(xsd.validate(xml)).to be_truthy
28
+ end
29
+
30
+ it 'writes an outcome' do
31
+ xml = write_xml(outcome)
32
+ node = xml.at_xpath('//xmlns:learningOutcomes/xmlns:learningOutcome')
33
+ expect(node.attr(:identifier)).to eql outcome.identifier
34
+ expect(node.at_xpath('xmlns:points_possible').text).to eql '5'
35
+ expect(node.at_xpath('xmlns:mastery_points').text).to eql '5'
36
+ expect(node.at_xpath('xmlns:is_global_outcome').text).to eql 'false'
37
+ end
38
+
39
+ private
40
+ def write_xml(outcome)
41
+ CanvasCc::CanvasCC::OutcomeWriter.new(tmpdir, outcome).write
42
+ path = File.join(tmpdir, CanvasCc::CanvasCC::CartridgeCreator::COURSE_SETTINGS_DIR,
43
+ CanvasCc::CanvasCC::OutcomeWriter::LEARNING_OUTCOMES_FILE)
44
+ Nokogiri::XML(File.read(path))
45
+ end
46
+ end
@@ -0,0 +1,29 @@
1
+ require 'spec_helper'
2
+
3
+ describe CanvasCc::CanvasCC::RatingWriter do
4
+ let(:rating) do
5
+ tmp_rating = CanvasCc::CanvasCC::Models::Rating.new
6
+ tmp_rating.id = '123'
7
+ tmp_rating.description = 'a rating'
8
+ tmp_rating.points = 5
9
+ tmp_rating.criterion_id = '123'
10
+ tmp_rating.long_description = 'a longer description'
11
+ tmp_rating
12
+ end
13
+
14
+ it 'writes ratings' do
15
+ xml = write_xml rating
16
+ node = xml.at_xpath('//ratings/rating')
17
+ expect(node.at_xpath('id').text).to eql rating.id
18
+ expect(node.at_xpath('description').text).to eql rating.description
19
+ expect(node.at_xpath('points').text).to eql rating.points.to_s
20
+ expect(node.at_xpath('criterion_id').text).to eql rating.criterion_id
21
+ expect(node.at_xpath('long_description').text).to eql rating.long_description
22
+ end
23
+
24
+ private
25
+ def write_xml(rating)
26
+ writer = CanvasCc::CanvasCC::RatingWriter.new rating
27
+ Nokogiri::XML(writer.write)
28
+ end
29
+ 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.26
4
+ version: 0.0.27
5
5
  platform: ruby
6
6
  authors:
7
7
  - Instructure
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-10-19 00:00:00.000000000 Z
11
+ date: 2015-11-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rubyzip
@@ -282,11 +282,13 @@ files:
282
282
  - lib/canvas_cc/canvas_cc/models/module_prerequisite.rb
283
283
  - lib/canvas_cc/canvas_cc/models/multiple_dropdowns_question.rb
284
284
  - lib/canvas_cc/canvas_cc/models/numerical_question.rb
285
+ - lib/canvas_cc/canvas_cc/models/outcome.rb
285
286
  - lib/canvas_cc/canvas_cc/models/page.rb
286
287
  - lib/canvas_cc/canvas_cc/models/question.rb
287
288
  - lib/canvas_cc/canvas_cc/models/question_bank.rb
288
289
  - lib/canvas_cc/canvas_cc/models/question_group.rb
289
290
  - lib/canvas_cc/canvas_cc/models/range.rb
291
+ - lib/canvas_cc/canvas_cc/models/rating.rb
290
292
  - lib/canvas_cc/canvas_cc/models/resource.rb
291
293
  - lib/canvas_cc/canvas_cc/models/syllabus.rb
292
294
  - lib/canvas_cc/canvas_cc/models/web_content.rb
@@ -298,10 +300,12 @@ files:
298
300
  - lib/canvas_cc/canvas_cc/multiple_choice_question_writer.rb
299
301
  - lib/canvas_cc/canvas_cc/multiple_dropdowns_question_writer.rb
300
302
  - lib/canvas_cc/canvas_cc/numerical_question_writer.rb
303
+ - lib/canvas_cc/canvas_cc/outcome_writer.rb
301
304
  - lib/canvas_cc/canvas_cc/page_writer.rb
302
305
  - lib/canvas_cc/canvas_cc/question_bank_writer.rb
303
306
  - lib/canvas_cc/canvas_cc/question_group_writer.rb
304
307
  - lib/canvas_cc/canvas_cc/question_writer.rb
308
+ - lib/canvas_cc/canvas_cc/rating_writer.rb
305
309
  - lib/canvas_cc/canvas_cc/short_answer_question_writer.rb
306
310
  - lib/canvas_cc/canvas_cc/text_only_question_writer.rb
307
311
  - lib/canvas_cc/canvas_cc/true_false_question_writer.rb
@@ -345,8 +349,10 @@ files:
345
349
  - spec/moodle2cc/canvas_cc/models/discussion_spec.rb
346
350
  - spec/moodle2cc/canvas_cc/models/discussion_topic_spec.rb
347
351
  - spec/moodle2cc/canvas_cc/models/module_item_spec.rb
352
+ - spec/moodle2cc/canvas_cc/models/outcome_spec.rb
348
353
  - spec/moodle2cc/canvas_cc/models/page_spec.rb
349
354
  - spec/moodle2cc/canvas_cc/models/question_spec.rb
355
+ - spec/moodle2cc/canvas_cc/models/rating_spec.rb
350
356
  - spec/moodle2cc/canvas_cc/models/resource_spec.rb
351
357
  - spec/moodle2cc/canvas_cc/models/web_content_spec.rb
352
358
  - spec/moodle2cc/canvas_cc/models/web_link_spec.rb
@@ -356,9 +362,11 @@ files:
356
362
  - spec/moodle2cc/canvas_cc/multiple_choice_question_writer_spec.rb
357
363
  - spec/moodle2cc/canvas_cc/multiple_dropdowns_question_writer_spec.rb
358
364
  - spec/moodle2cc/canvas_cc/numerical_question_writer_spec.rb
365
+ - spec/moodle2cc/canvas_cc/outcome_writer_spec.rb
359
366
  - spec/moodle2cc/canvas_cc/page_writer_spec.rb
360
367
  - spec/moodle2cc/canvas_cc/question_bank_writer_spec.rb
361
368
  - spec/moodle2cc/canvas_cc/question_writer_spec.rb
369
+ - spec/moodle2cc/canvas_cc/rating_writer_spec.rb
362
370
  - spec/moodle2cc/canvas_cc/short_answer_question_writer_spec.rb
363
371
  - spec/moodle2cc/canvas_cc/text_only_question_writer_spec.rb
364
372
  - spec/moodle2cc/canvas_cc/true_false_question_writer_spec.rb
@@ -452,8 +460,10 @@ test_files:
452
460
  - spec/moodle2cc/canvas_cc/models/discussion_spec.rb
453
461
  - spec/moodle2cc/canvas_cc/models/discussion_topic_spec.rb
454
462
  - spec/moodle2cc/canvas_cc/models/module_item_spec.rb
463
+ - spec/moodle2cc/canvas_cc/models/outcome_spec.rb
455
464
  - spec/moodle2cc/canvas_cc/models/page_spec.rb
456
465
  - spec/moodle2cc/canvas_cc/models/question_spec.rb
466
+ - spec/moodle2cc/canvas_cc/models/rating_spec.rb
457
467
  - spec/moodle2cc/canvas_cc/models/resource_spec.rb
458
468
  - spec/moodle2cc/canvas_cc/models/web_content_spec.rb
459
469
  - spec/moodle2cc/canvas_cc/models/web_link_spec.rb
@@ -463,9 +473,11 @@ test_files:
463
473
  - spec/moodle2cc/canvas_cc/multiple_choice_question_writer_spec.rb
464
474
  - spec/moodle2cc/canvas_cc/multiple_dropdowns_question_writer_spec.rb
465
475
  - spec/moodle2cc/canvas_cc/numerical_question_writer_spec.rb
476
+ - spec/moodle2cc/canvas_cc/outcome_writer_spec.rb
466
477
  - spec/moodle2cc/canvas_cc/page_writer_spec.rb
467
478
  - spec/moodle2cc/canvas_cc/question_bank_writer_spec.rb
468
479
  - spec/moodle2cc/canvas_cc/question_writer_spec.rb
480
+ - spec/moodle2cc/canvas_cc/rating_writer_spec.rb
469
481
  - spec/moodle2cc/canvas_cc/short_answer_question_writer_spec.rb
470
482
  - spec/moodle2cc/canvas_cc/text_only_question_writer_spec.rb
471
483
  - spec/moodle2cc/canvas_cc/true_false_question_writer_spec.rb