canvas_cc 0.0.2 → 0.0.3

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