canvas_cc 0.0.2 → 0.0.3

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: 034bb68abda058a2fa71a6e86d924d3c7b059ca0
4
- data.tar.gz: 277db8637afa11a36f247484c623eff0bd4cd8d0
3
+ metadata.gz: 2f86794affc4033afb84e2972e08ff383331d65e
4
+ data.tar.gz: 98fd7535f07d5e624d244a820d5a2b3ba4a9f313
5
5
  SHA512:
6
- metadata.gz: 7af394a205b88d2477b100fb184a0adccaf491658e8bda7a2ae6ce3fd0af37dfaefa7c5f41b7c124cc318e100d5a63d6bda185dab34d615b9b58bffa836961b6
7
- data.tar.gz: 2b96e940598465ec89c0ebcf2ec7d4f657519f52fe6890144efc6531308637fee69aec6e96993b21fd46d98b87e2740dcb0974960ec19e87c39f23be19ce4208
6
+ metadata.gz: adce606f2fb582b1609ad19f3db16ba87f2c4331d821a3d2e7f0d683e55fecdfae5f3fb2df02e24408a5fff136d9af26a8f04ecace963a409169e01b27269035
7
+ data.tar.gz: ec55da56ea3b4dc62285655412078144553374915c19eed1418f9554b7961a8b71c8e2768d9ee10566b1d2a223b475f65a3cc78f90e9aec7799cc576e100d49e
@@ -40,7 +40,7 @@ module CanvasCc::CanvasCC
40
40
  CanvasCc::CanvasCC::AssignmentGroupWriter.new(dir, @course.assignment_groups).write
41
41
  CanvasCc::CanvasCC::ModuleMetaWriter.new(dir, *@course.canvas_modules).write
42
42
  CanvasCc::CanvasCC::ImsManifestGenerator.new(dir, @course).write
43
- CanvasCc::CanvasCC::FileMetaWriter.new(dir, *@course.files).write
43
+ CanvasCc::CanvasCC::FileMetaWriter.new(dir, @course.files, @course.folders).write
44
44
  CanvasCc::CanvasCC::PageWriter.new(dir, *@course.pages).write
45
45
  CanvasCc::CanvasCC::DiscussionWriter.new(dir, *@course.discussions).write
46
46
  CanvasCc::CanvasCC::AssignmentWriter.new(dir, *@course.assignments).write
@@ -3,20 +3,45 @@ module CanvasCc::CanvasCC
3
3
 
4
4
  FILE_META_FILE = 'files_meta.xml'
5
5
 
6
- def initialize(work_dir, *canvas_files)
6
+ def initialize(work_dir, canvas_files, canvas_folders)
7
7
  @work_dir = work_dir
8
- @canvas_files = canvas_files
8
+ @canvas_files = [canvas_files].flatten.compact
9
+ @canvas_folders = [canvas_folders].flatten.compact
9
10
  end
10
11
 
11
12
  def write
12
- copy_files
13
- write_xml
13
+ copy_files unless @canvas_files.nil?
14
+ write_xml do |xml|
15
+ write_folders(xml) unless @canvas_folders.empty?
16
+ write_files(xml) unless @canvas_files.empty?
17
+ end
14
18
  end
15
19
 
16
20
  private
17
21
 
18
- def copy_files
22
+ def write_folders(xml)
23
+ xml.folders{
24
+ @canvas_folders.each do |folder|
25
+ xml.folder('path' => folder.folder_location){
26
+ xml.hidden folder.hidden unless folder.hidden.nil?
27
+ xml.locked folder.locked unless folder.locked.nil?
28
+ }
29
+ end
30
+ }
31
+ end
19
32
 
33
+ def write_files(xml)
34
+ xml.files{
35
+ @canvas_files.each do |file|
36
+ xml.file('identifier' => file.identifier){
37
+ xml.hidden file.hidden unless file.hidden.nil?
38
+ xml.locked file.locked unless file.locked.nil?
39
+ }
40
+ end
41
+ }
42
+ end
43
+
44
+ def copy_files
20
45
  @canvas_files.each do |canvas_file|
21
46
  FileUtils.mkdir_p(File.dirname(File.join(@work_dir, canvas_file.href)))
22
47
  FileUtils.cp(canvas_file.file_location, File.join(@work_dir, canvas_file.href))
@@ -29,10 +54,12 @@ module CanvasCc::CanvasCC
29
54
  'xmlns' => 'http://canvas.instructure.com/xsd/cccv1p0',
30
55
  'xmlns:xsi' => 'http://www.w3.org/2001/XMLSchema-instance',
31
56
  'xsi:schemaLocation' => 'http://canvas.instructure.com/xsd/cccv1p0 http://canvas.instructure.com/xsd/cccv1p0.xsd'
32
- )
57
+ ){
58
+ yield xml
59
+ }
33
60
  end.to_xml
34
61
  File.open(File.join(@work_dir, CanvasCc::CanvasCC::CartridgeCreator::COURSE_SETTINGS_DIR, FILE_META_FILE), 'w') { |f| f.write(xml) }
35
62
  end
36
63
 
37
64
  end
38
- end
65
+ end
@@ -4,7 +4,7 @@ module CanvasCc::CanvasCC::Models
4
4
  WEB_RESOURCES = 'web_resources'
5
5
 
6
6
  attr_reader :file_path
7
- attr_accessor :file_location
7
+ attr_accessor :file_location, :hidden, :locked
8
8
 
9
9
  def initialize
10
10
  super
@@ -19,4 +19,4 @@ module CanvasCc::CanvasCC::Models
19
19
 
20
20
 
21
21
  end
22
- end
22
+ end
@@ -0,0 +1,15 @@
1
+ module CanvasCc::CanvasCC::Models
2
+ class CanvasFolder < CanvasCc::CanvasCC::Models::Resource
3
+
4
+ WEB_RESOURCES = 'web_resources'
5
+
6
+ attr_accessor :folder_location, :hidden, :locked
7
+
8
+ def initialize
9
+ super
10
+ @type = WEB_CONTENT_TYPE
11
+ end
12
+
13
+
14
+ end
15
+ end
@@ -2,13 +2,14 @@ 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
5
+ :assignments, :assessments, :question_banks, :assignment_groups, :folders
6
6
 
7
7
  def initialize
8
8
  @settings = {}
9
9
  @resources = []
10
10
  @canvas_modules = []
11
11
  @files = []
12
+ @folders = []
12
13
  @pages = []
13
14
  @discussions = []
14
15
  @assignments = []
@@ -1,3 +1,3 @@
1
1
  module CanvasCc
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
data/lib/canvas_cc.rb CHANGED
@@ -86,6 +86,7 @@ module CanvasCc
86
86
  autoload :CanvasModule, 'canvas_cc/canvas_cc/models/canvas_module'
87
87
  autoload :ModuleItem, 'canvas_cc/canvas_cc/models/module_item'
88
88
  autoload :CanvasFile, 'canvas_cc/canvas_cc/models/canvas_file'
89
+ autoload :CanvasFolder, 'canvas_cc/canvas_cc/models/canvas_folder'
89
90
  autoload :Page, 'canvas_cc/canvas_cc/models/page'
90
91
  autoload :Discussion, 'canvas_cc/canvas_cc/models/discussion'
91
92
  autoload :WorkflowState, 'canvas_cc/canvas_cc/models/workflow_state'
@@ -4,6 +4,7 @@ module CanvasCc::CanvasCC
4
4
  describe FileMetaWriter do
5
5
 
6
6
  let(:file) { Models::CanvasFile.new }
7
+ let(:folder) { Models::CanvasFolder.new }
7
8
  let(:tmpdir) { Dir.mktmpdir }
8
9
 
9
10
  before :each do
@@ -15,28 +16,59 @@ module CanvasCc::CanvasCC
15
16
  end
16
17
 
17
18
  it 'xml contains the correct schema' do
18
- meta_writer = writer(file)
19
+ meta_writer = writer(file, nil)
19
20
  meta_writer.stub(:copy_files) { nil }
20
21
  xml = write_xml(meta_writer)
21
22
  assert_xml_schema(xml)
22
23
  end
23
24
 
24
25
  it '#write' do
25
- Dir.mktmpdir do |dir|
26
- source_file = File.join(dir, 'sample.txt')
27
- FileUtils.touch(source_file)
26
+ create_file('sample.txt') do |source_file|
28
27
  file.file_location = source_file
29
28
  file.file_path = 'sample.txt'
30
- write_xml(writer(file))
29
+ write_xml(writer(file, nil))
31
30
  path = File.join(tmpdir, Models::CanvasFile::WEB_RESOURCES, 'sample.txt')
32
31
  expect(File.exist?(path)).to be_true
33
32
  end
34
33
  end
35
34
 
35
+ it 'writes files' do
36
+ file.hidden = true
37
+ file.locked = true
38
+ file.identifier = 'abc123'
39
+ create_file('sample.txt') do |source_file|
40
+ file.file_location = source_file
41
+ file.file_path = 'sample.txt'
42
+ xml = write_xml(writer(file, nil))
43
+ expect(xml.at_xpath('xmlns:fileMeta/xmlns:files/xmlns:file/@identifier').text).to eq 'abc123'
44
+ expect(xml.at_xpath('xmlns:fileMeta/xmlns:files/xmlns:file/xmlns:locked').text).to eq 'true'
45
+ expect(xml.at_xpath('xmlns:fileMeta/xmlns:files/xmlns:file/xmlns:hidden').text).to eq 'true'
46
+ end
47
+ end
48
+
49
+ it 'writes folders' do
50
+ folder.hidden = true
51
+ folder.locked = true
52
+ folder.folder_location = '/folder1'
53
+ xml = write_xml(writer(nil, folder))
54
+ expect(xml.at_xpath('xmlns:fileMeta/xmlns:folders/xmlns:folder/@path').text).to eq '/folder1'
55
+ expect(xml.at_xpath('xmlns:fileMeta/xmlns:folders/xmlns:folder/xmlns:locked').text).to eq 'true'
56
+ expect(xml.at_xpath('xmlns:fileMeta/xmlns:folders/xmlns:folder/xmlns:hidden').text).to eq 'true'
57
+
58
+ end
59
+
36
60
  private
37
61
 
38
- def writer(file)
39
- FileMetaWriter.new(tmpdir, file)
62
+ def create_file(name)
63
+ Dir.mktmpdir do |dir|
64
+ source_file = File.join(dir, name)
65
+ FileUtils.touch(source_file)
66
+ yield source_file
67
+ end
68
+ end
69
+
70
+ def writer(file, folder)
71
+ FileMetaWriter.new(tmpdir, file, folder)
40
72
  end
41
73
 
42
74
  def write_xml(writer)
@@ -54,4 +86,4 @@ module CanvasCc::CanvasCC
54
86
  end
55
87
 
56
88
  end
57
- end
89
+ end
@@ -5,6 +5,8 @@ module CanvasCc::CanvasCC::Models
5
5
 
6
6
  it_behaves_like 'a CanvasCc::CanvasCC::Models::Resource'
7
7
  it_behaves_like 'it has an attribute for', :file_location
8
+ it_behaves_like 'it has an attribute for', :hidden
9
+ it_behaves_like 'it has an attribute for', :locked
8
10
 
9
11
  it 'has a type to webcontent' do
10
12
  expect(subject.type).to eq(Resource::WEB_CONTENT_TYPE)
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.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Instructure
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-09-10 00:00:00.000000000 Z
11
+ date: 2014-09-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rubyzip
@@ -268,6 +268,7 @@ files:
268
268
  - lib/canvas_cc/canvas_cc/models/assignment_group.rb
269
269
  - lib/canvas_cc/canvas_cc/models/calculated_question.rb
270
270
  - lib/canvas_cc/canvas_cc/models/canvas_file.rb
271
+ - lib/canvas_cc/canvas_cc/models/canvas_folder.rb
271
272
  - lib/canvas_cc/canvas_cc/models/canvas_module.rb
272
273
  - lib/canvas_cc/canvas_cc/models/course.rb
273
274
  - lib/canvas_cc/canvas_cc/models/discussion.rb