moodle2cc 0.1.2 → 0.1.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.
- data/lib/moodle2cc/canvas/web_link.rb +1 -2
- data/lib/moodle2cc/cc/converter.rb +14 -13
- data/lib/moodle2cc/cc/web_link.rb +25 -7
- data/lib/moodle2cc/resource_factory.rb +3 -2
- data/lib/moodle2cc/version.rb +1 -1
- data/test/unit/cc/converter_test.rb +2 -0
- data/test/unit/cc/web_link_test.rb +55 -2
- data/test/unit/resource_factory_test.rb +11 -1
- metadata +4 -4
@@ -106,24 +106,25 @@ module Moodle2CC::CC
|
|
106
106
|
end
|
107
107
|
|
108
108
|
def create_resources(resources_node)
|
109
|
+
resources = []
|
109
110
|
@moodle_backup.course.mods.each_with_index do |mod, index|
|
110
|
-
|
111
|
-
if resource
|
112
|
-
resource.create_resource_node(resources_node)
|
113
|
-
resource.create_files(@export_dir)
|
114
|
-
end
|
111
|
+
resources << @resource_factory.get_resource_from_mod(mod, index)
|
115
112
|
end
|
116
|
-
|
117
113
|
@moodle_backup.files.each do |file|
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
114
|
+
unless resources.find { |r| r.respond_to?(:url) && r.url == file }
|
115
|
+
mod = Moodle2CC::Moodle::Mod.new
|
116
|
+
mod.mod_type = 'resource'
|
117
|
+
mod.type = 'file'
|
118
|
+
mod.reference = file
|
119
|
+
mod.course = @moodle_backup.course
|
120
|
+
resources << @resource_factory.get_resource_from_mod(mod)
|
125
121
|
end
|
126
122
|
end
|
123
|
+
|
124
|
+
resources.compact.each do |resource|
|
125
|
+
resource.create_resource_node(resources_node)
|
126
|
+
resource.create_files(@export_dir)
|
127
|
+
end
|
127
128
|
end
|
128
129
|
|
129
130
|
def create_web_resources
|
@@ -3,27 +3,44 @@ module Moodle2CC::CC
|
|
3
3
|
include CCHelper
|
4
4
|
include Resource
|
5
5
|
|
6
|
-
attr_accessor :url
|
6
|
+
attr_accessor :url, :external_link, :href
|
7
7
|
|
8
8
|
def initialize(mod)
|
9
9
|
super
|
10
10
|
@url = mod.reference.to_s.strip
|
11
|
+
@external_link = self.class.external_link?(mod)
|
12
|
+
@href = @external_link ? "#{@identifier}.xml" : File.join(WEB_RESOURCES_FOLDER, @url)
|
13
|
+
@identifier = create_key(@href, 'resource_') unless @external_link
|
11
14
|
end
|
12
15
|
|
13
16
|
def self.create_resource_key(mod)
|
14
|
-
|
17
|
+
unless external_link?(mod)
|
15
18
|
create_key(File.join(WEB_RESOURCES_FOLDER, mod.reference), 'resource_')
|
16
19
|
else
|
17
20
|
super
|
18
21
|
end
|
19
22
|
end
|
20
23
|
|
24
|
+
def self.external_link?(mod)
|
25
|
+
!!URI.parse(mod.reference.strip).scheme
|
26
|
+
end
|
27
|
+
|
21
28
|
def create_resource_node(resources_node)
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
29
|
+
if @external_link
|
30
|
+
resources_node.resource(
|
31
|
+
:type => WEB_LINK,
|
32
|
+
:identifier => identifier
|
33
|
+
) do |resource_node|
|
34
|
+
resource_node.file(:href => href)
|
35
|
+
end
|
36
|
+
else
|
37
|
+
resources_node.resource(
|
38
|
+
:type => WEBCONTENT,
|
39
|
+
:href => href,
|
40
|
+
:identifier => identifier
|
41
|
+
) do |resource_node|
|
42
|
+
resource_node.file(:href => href)
|
43
|
+
end
|
27
44
|
end
|
28
45
|
end
|
29
46
|
|
@@ -32,6 +49,7 @@ module Moodle2CC::CC
|
|
32
49
|
end
|
33
50
|
|
34
51
|
def create_xml(export_dir)
|
52
|
+
return unless @external_link
|
35
53
|
path = File.join(export_dir, "#{identifier}.xml")
|
36
54
|
FileUtils.mkdir_p(File.dirname(path))
|
37
55
|
File.open(path, 'w') do |file|
|
@@ -9,9 +9,10 @@ class Moodle2CC::ResourceFactory
|
|
9
9
|
when 'assignment', 'workshop'
|
10
10
|
@namespace.const_get(:Assignment).new(mod, position)
|
11
11
|
when 'resource'
|
12
|
-
|
12
|
+
case mod.type
|
13
|
+
when 'file'
|
13
14
|
@namespace.const_get(:WebLink).new(mod)
|
14
|
-
|
15
|
+
when 'html', 'text'
|
15
16
|
@namespace.const_get(:WebContent).new(mod)
|
16
17
|
end
|
17
18
|
when 'forum'
|
data/lib/moodle2cc/version.rb
CHANGED
@@ -156,12 +156,14 @@ class TestUnitCCConverter < MiniTest::Unit::TestCase
|
|
156
156
|
assert_equal 'webcontent', resource.attributes['type'].value
|
157
157
|
assert_equal 'web_resources/folder/test.txt', resource.attributes['href'].value
|
158
158
|
assert resource.xpath('xmlns:file[@href="web_resources/folder/test.txt"]').first
|
159
|
+
assert_equal 1, xml.search('file[href="web_resources/folder/test.txt"]').count
|
159
160
|
|
160
161
|
resource = xml.xpath('//xmlns:manifest/xmlns:resources/xmlns:resource[@identifier="ib98bb8ec201a97840ae4ed4bb40207c0"]').first
|
161
162
|
assert resource, 'resources does not exist for "web_resources/test.txt" file'
|
162
163
|
assert_equal 'webcontent', resource.attributes['type'].value
|
163
164
|
assert_equal 'web_resources/test.txt', resource.attributes['href'].value
|
164
165
|
assert resource.xpath('xmlns:file[@href="web_resources/test.txt"]').first
|
166
|
+
assert_equal 1, xml.search('file[href="web_resources/test.txt"]').count
|
165
167
|
end
|
166
168
|
|
167
169
|
def test_it_deletes_all_files_except_imscc
|
@@ -43,14 +43,42 @@ class TestUnitCCWebLink < MiniTest::Unit::TestCase
|
|
43
43
|
assert_equal "http://en.wikipedia.org/wiki/Einstein", web_link.url
|
44
44
|
end
|
45
45
|
|
46
|
-
def
|
46
|
+
def test_it_converts_external_link
|
47
|
+
@mod.reference = "http://en.wikipedia.org/wiki/Einstein"
|
48
|
+
web_link = Moodle2CC::CC::WebLink.new @mod
|
49
|
+
assert_equal true, web_link.external_link
|
50
|
+
|
51
|
+
@mod.reference = "files/myfile.txt"
|
52
|
+
web_link = Moodle2CC::CC::WebLink.new @mod
|
53
|
+
assert_equal false, web_link.external_link
|
54
|
+
end
|
55
|
+
|
56
|
+
def test_if_converts_href
|
57
|
+
@mod.reference = "http://en.wikipedia.org/wiki/Einstein"
|
58
|
+
web_link = Moodle2CC::CC::WebLink.new @mod
|
59
|
+
assert_equal "#{web_link.identifier}.xml", web_link.href
|
60
|
+
|
61
|
+
@mod.reference = "files/myfile.txt"
|
62
|
+
web_link = Moodle2CC::CC::WebLink.new @mod
|
63
|
+
assert_equal 'web_resources/files/myfile.txt', web_link.href
|
64
|
+
end
|
65
|
+
|
66
|
+
def test_it_has_an_identifier_for_external_link
|
47
67
|
@mod.id = 123
|
48
68
|
|
49
69
|
web_link = Moodle2CC::CC::WebLink.new @mod
|
50
70
|
assert_equal 'iecc4b622fbc1adf8b8a2085e0974ac7d', web_link.identifier
|
51
71
|
end
|
52
72
|
|
53
|
-
def
|
73
|
+
def test_it_has_an_identifier_for_local_file
|
74
|
+
@mod.reference = "files/myfile.txt"
|
75
|
+
|
76
|
+
web_link = Moodle2CC::CC::WebLink.new @mod
|
77
|
+
assert_equal 'i5cfabae035bff8857137d83c2a067809', web_link.identifier
|
78
|
+
end
|
79
|
+
|
80
|
+
def test_it_creates_resource_in_imsmanifest_for_external_link
|
81
|
+
@mod.reference = "http://en.wikipedia.org/wiki/Einstein"
|
54
82
|
web_link = Moodle2CC::CC::WebLink.new @mod
|
55
83
|
node = Builder::XmlMarkup.new
|
56
84
|
xml = Nokogiri::XML(web_link.create_resource_node(node))
|
@@ -64,6 +92,22 @@ class TestUnitCCWebLink < MiniTest::Unit::TestCase
|
|
64
92
|
assert file
|
65
93
|
end
|
66
94
|
|
95
|
+
def test_it_creates_resource_in_imsmanifest_for_local_file
|
96
|
+
@mod.reference = "files/myfile.txt"
|
97
|
+
web_link = Moodle2CC::CC::WebLink.new @mod
|
98
|
+
node = Builder::XmlMarkup.new
|
99
|
+
xml = Nokogiri::XML(web_link.create_resource_node(node))
|
100
|
+
|
101
|
+
resource = xml.xpath('resource').first
|
102
|
+
assert resource
|
103
|
+
assert_equal 'webcontent', resource.attributes['type'].value
|
104
|
+
assert_equal 'web_resources/files/myfile.txt', resource.attributes['href'].value
|
105
|
+
assert_equal 'i5cfabae035bff8857137d83c2a067809', resource.attributes['identifier'].value
|
106
|
+
|
107
|
+
file = resource.xpath('file[@href="web_resources/files/myfile.txt"]').first
|
108
|
+
assert file
|
109
|
+
end
|
110
|
+
|
67
111
|
def test_it_creates_xml
|
68
112
|
@mod.id = 123
|
69
113
|
@mod.name = "About Your Instructor"
|
@@ -83,4 +127,13 @@ class TestUnitCCWebLink < MiniTest::Unit::TestCase
|
|
83
127
|
assert_equal "About Your Instructor", xml.xpath('xmlns:webLink/xmlns:title').text
|
84
128
|
assert xml.xpath('xmlns:webLink/xmlns:url[@href="http://en.wikipedia.org/wiki/Einstein"]').first
|
85
129
|
end
|
130
|
+
|
131
|
+
def test_it_does_not_create_xml_for_local_files
|
132
|
+
@mod.reference = "files/myfile.txt"
|
133
|
+
|
134
|
+
tmp_dir = File.expand_path('../../../tmp', __FILE__)
|
135
|
+
web_link = Moodle2CC::CC::WebLink.new @mod
|
136
|
+
web_link.create_xml(tmp_dir)
|
137
|
+
refute File.exists?(File.join(tmp_dir, "#{web_link.identifier}.xml")), 'xml file was created for local file'
|
138
|
+
end
|
86
139
|
end
|
@@ -42,7 +42,17 @@ class TestUnitCCResource < MiniTest::Unit::TestCase
|
|
42
42
|
assert_kind_of Moodle2CC::Canvas::DiscussionTopic, resource
|
43
43
|
end
|
44
44
|
|
45
|
-
def
|
45
|
+
def test_it_can_get_web_content_resource_from_text_resource
|
46
|
+
mod = @backup.course.mods.find { |m| m.mod_type == "resource" }
|
47
|
+
mod.type = 'text'
|
48
|
+
resource = @cc_factory.get_resource_from_mod(mod)
|
49
|
+
assert_kind_of Moodle2CC::CC::WebContent, resource
|
50
|
+
|
51
|
+
resource = @canvas_factory.get_resource_from_mod(mod)
|
52
|
+
assert_kind_of Moodle2CC::Canvas::WebContent, resource
|
53
|
+
end
|
54
|
+
|
55
|
+
def test_it_can_get_web_content_resource_from_html_resource
|
46
56
|
mod = @backup.course.mods.find { |m| m.mod_type == "resource" }
|
47
57
|
mod.type = 'html'
|
48
58
|
resource = @cc_factory.get_resource_from_mod(mod)
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: moodle2cc
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 29
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 0.1.
|
9
|
+
- 3
|
10
|
+
version: 0.1.3
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Christopher Durtschi
|
@@ -17,7 +17,7 @@ autorequire:
|
|
17
17
|
bindir: bin
|
18
18
|
cert_chain: []
|
19
19
|
|
20
|
-
date: 2012-08-
|
20
|
+
date: 2012-08-06 00:00:00 Z
|
21
21
|
dependencies:
|
22
22
|
- !ruby/object:Gem::Dependency
|
23
23
|
name: rubyzip
|