moodleQuizDownloader 0.0.1
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 +7 -0
- data/.gitignore +18 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +42 -0
- data/Rakefile +1 -0
- data/bin/moodleQuizDownloader.rb +4 -0
- data/lib/moodleQuizDownloader.rb +16 -0
- data/lib/moodleQuizDownloader/file_name_creator.rb +12 -0
- data/lib/moodleQuizDownloader/moodle_parser.rb +61 -0
- data/lib/moodleQuizDownloader/option_handler.rb +104 -0
- data/lib/moodleQuizDownloader/quiz_downloader.rb +78 -0
- data/lib/moodleQuizDownloader/version.rb +3 -0
- data/moodleQuizDownloader.gemspec +31 -0
- data/spec/api/asciify_spec.rb +8 -0
- data/spec/api/pdfkit_spec.rb +21 -0
- data/spec/fileNameCreator_spec.rb +19 -0
- data/spec/moodleparsing/exam-overview-moodle-ss2013.html +358 -0
- data/spec/moodleparsing/exam-overview.html +233 -0
- data/spec/moodleparsing/moodleparsing_spec.rb +53 -0
- data/spec/moodleparsing/review-page-nutzerbild.html +278 -0
- data/spec/moodleparsing/review-page.html +239 -0
- data/spec/option_handler_spec.rb +127 -0
- metadata +175 -0
@@ -0,0 +1,127 @@
|
|
1
|
+
require_relative '../lib/moodleQuizDownloader/option_handler.rb'
|
2
|
+
describe OptionHandler do
|
3
|
+
before do
|
4
|
+
@option_handler = OptionHandler.new
|
5
|
+
end
|
6
|
+
it "prints a usage message if no arguments given" do
|
7
|
+
option_handler = OptionHandler.new
|
8
|
+
expect(option_handler.usage).to include("Usage")
|
9
|
+
end
|
10
|
+
it "has a verbose option" do
|
11
|
+
option_handler = OptionHandler.new(["--verbose"])
|
12
|
+
options = option_handler.options
|
13
|
+
expect(options.verbose).to be_true
|
14
|
+
end
|
15
|
+
it "has a smoketest option" do
|
16
|
+
args = "--user drblinken -p geheim download connect"
|
17
|
+
options = OptionHandler.new(args.split(" ")).options
|
18
|
+
expect(options.command).to eq(:connect)
|
19
|
+
end
|
20
|
+
it "accepts only valid commands" do
|
21
|
+
args = "--user drblinken -p geheim dosomethingelse"
|
22
|
+
options = OptionHandler.new(args.split(" ")).options
|
23
|
+
expect(options.command).to eq(:list)
|
24
|
+
expect(options.usage).not_to be_nil
|
25
|
+
end
|
26
|
+
describe "reads username" do
|
27
|
+
it "from option -u" do
|
28
|
+
args = "download -u drblinken -p geheim download"
|
29
|
+
options = OptionHandler.new(args.split(" ")).options
|
30
|
+
expect(options.moodle_username).to eq('drblinken')
|
31
|
+
end
|
32
|
+
it "from option --user" do
|
33
|
+
args = "--user drblinken -p geheim download"
|
34
|
+
options = OptionHandler.new(args.split(" ")).options
|
35
|
+
expect(options.moodle_username).to eq('drblinken')
|
36
|
+
end
|
37
|
+
it "from ENV variable as default" do
|
38
|
+
ENV['MOODLE_USERNAME'] = 'userfromshell'
|
39
|
+
args = "-p geheim download"
|
40
|
+
options = OptionHandler.new(args.split(" ")).options
|
41
|
+
expect(options.moodle_username).to eq('userfromshell')
|
42
|
+
|
43
|
+
end
|
44
|
+
it "ENV default is overwritten by setting" do
|
45
|
+
ENV['MOODLE_USERNAME'] = 'userfromshell'
|
46
|
+
args = "-u drblinken -p geheim download"
|
47
|
+
options = OptionHandler.new(args.split(" ")).options
|
48
|
+
expect(options.moodle_username).to eq('drblinken')
|
49
|
+
end
|
50
|
+
end
|
51
|
+
it "takes the password" do
|
52
|
+
args = "-u drblinken -p geheim download"
|
53
|
+
options = OptionHandler.new(args.split(" ")).options
|
54
|
+
expect(options.moodle_password).to eq('geheim')
|
55
|
+
end
|
56
|
+
it "finds the command list among the options" do
|
57
|
+
args= "-u drblinken list -p password"
|
58
|
+
option_handler = OptionHandler.new(args.split(" "))
|
59
|
+
options = option_handler.options
|
60
|
+
expect(options.command).to be(:list)
|
61
|
+
end
|
62
|
+
it "finds the command 'download' among the options" do
|
63
|
+
args = "-u drblinken -p geheim download -b"
|
64
|
+
options = OptionHandler.new(args.split(" ")).options
|
65
|
+
expect(options.command).to be(:download)
|
66
|
+
end
|
67
|
+
it "command can also be at the beginning" do
|
68
|
+
args = "download -u drblinken -p geheim -b"
|
69
|
+
options = OptionHandler.new(args.split(" ")).options
|
70
|
+
expect(options.command).to be(:download)
|
71
|
+
end
|
72
|
+
it "--version overrides command" do
|
73
|
+
args = "download -v"
|
74
|
+
options = OptionHandler.new(args.split(" ")).options
|
75
|
+
expect(options.command).to be(:version)
|
76
|
+
end
|
77
|
+
it "takes the exam_id" do
|
78
|
+
args = "-e 4711 download -u drblinken -p geheim -b"
|
79
|
+
options = OptionHandler.new(args.split(" ")).options
|
80
|
+
expect(options.exam_id).to eq('4711')
|
81
|
+
end
|
82
|
+
describe "outputdir" do
|
83
|
+
it "read from -o" do
|
84
|
+
args = "-e 4711 download -o /tmp/bla -u drblinken -p geheim -b"
|
85
|
+
options = OptionHandler.new(args.split(" ")).options
|
86
|
+
expect(options.outputdir).to eq('/tmp/bla')
|
87
|
+
end
|
88
|
+
it "defaults to out" do
|
89
|
+
args = "-e 4711 download -u drblinken -p geheim -b"
|
90
|
+
options = OptionHandler.new(args.split(" ")).options
|
91
|
+
expect(options.outputdir).to eq('out')
|
92
|
+
end
|
93
|
+
end
|
94
|
+
describe "server" do
|
95
|
+
it "from option -s" do
|
96
|
+
args = "-s http://moodle2.htw-berlin.de download -u drblinken -p geheim download"
|
97
|
+
options = OptionHandler.new(args.split(" ")).options
|
98
|
+
expect(options.moodle_server).to eq('http://moodle2.htw-berlin.de')
|
99
|
+
end
|
100
|
+
it "from option --server" do
|
101
|
+
args = "--server http://moodle2.htw-berlin.de --user drblinken -p geheim download"
|
102
|
+
options = OptionHandler.new(args.split(" ")).options
|
103
|
+
expect(options.moodle_server).to eq('http://moodle2.htw-berlin.de')
|
104
|
+
end
|
105
|
+
it "from ENV variable as default" do
|
106
|
+
ENV['MOODLE_SERVER'] = 'http://moodle2.htw-berlin.de'
|
107
|
+
args = "-p geheim download"
|
108
|
+
options = OptionHandler.new(args.split(" ")).options
|
109
|
+
expect(options.moodle_server).to eq('http://moodle2.htw-berlin.de')
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
113
|
+
describe "validates" do
|
114
|
+
it "all settings" do
|
115
|
+
args = ""
|
116
|
+
options = OptionHandler.new(args.split(" ")).parse
|
117
|
+
expect(options.usage).not_to be_nil
|
118
|
+
expect(options.usage).to include("server")
|
119
|
+
end
|
120
|
+
it "all settings given" do
|
121
|
+
args = "-u drblinken -p geheim -s http://x.y -e 311"
|
122
|
+
options = OptionHandler.new(args.split(" ")).parse
|
123
|
+
expect(options.usage).to be_nil
|
124
|
+
end
|
125
|
+
|
126
|
+
end
|
127
|
+
end
|
metadata
ADDED
@@ -0,0 +1,175 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: moodleQuizDownloader
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Dr Blinken
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2013-06-26 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: asciify
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - '>='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '>='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: iconv
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: mechanize
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - '>='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: pdfkit
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - '>='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: bundler
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ~>
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '1.3'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ~>
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '1.3'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: rake
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - '>='
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - '>='
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: rspec
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - '>='
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - '>='
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
description: Downloads Quizzes from Moodle as PDF
|
112
|
+
email:
|
113
|
+
- drblinken@gmail.com
|
114
|
+
executables:
|
115
|
+
- moodleQuizDownloader.rb
|
116
|
+
extensions: []
|
117
|
+
extra_rdoc_files: []
|
118
|
+
files:
|
119
|
+
- .gitignore
|
120
|
+
- Gemfile
|
121
|
+
- LICENSE.txt
|
122
|
+
- README.md
|
123
|
+
- Rakefile
|
124
|
+
- bin/moodleQuizDownloader.rb
|
125
|
+
- lib/moodleQuizDownloader.rb
|
126
|
+
- lib/moodleQuizDownloader/file_name_creator.rb
|
127
|
+
- lib/moodleQuizDownloader/moodle_parser.rb
|
128
|
+
- lib/moodleQuizDownloader/option_handler.rb
|
129
|
+
- lib/moodleQuizDownloader/quiz_downloader.rb
|
130
|
+
- lib/moodleQuizDownloader/version.rb
|
131
|
+
- moodleQuizDownloader.gemspec
|
132
|
+
- spec/api/asciify_spec.rb
|
133
|
+
- spec/api/pdfkit_spec.rb
|
134
|
+
- spec/fileNameCreator_spec.rb
|
135
|
+
- spec/moodleparsing/exam-overview-moodle-ss2013.html
|
136
|
+
- spec/moodleparsing/exam-overview.html
|
137
|
+
- spec/moodleparsing/moodleparsing_spec.rb
|
138
|
+
- spec/moodleparsing/review-page-nutzerbild.html
|
139
|
+
- spec/moodleparsing/review-page.html
|
140
|
+
- spec/option_handler_spec.rb
|
141
|
+
homepage: https://github.com/drblinken/moodleQuizDownloader
|
142
|
+
licenses:
|
143
|
+
- MIT
|
144
|
+
metadata: {}
|
145
|
+
post_install_message:
|
146
|
+
rdoc_options: []
|
147
|
+
require_paths:
|
148
|
+
- lib
|
149
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
150
|
+
requirements:
|
151
|
+
- - '>='
|
152
|
+
- !ruby/object:Gem::Version
|
153
|
+
version: '0'
|
154
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
155
|
+
requirements:
|
156
|
+
- - '>='
|
157
|
+
- !ruby/object:Gem::Version
|
158
|
+
version: '0'
|
159
|
+
requirements: []
|
160
|
+
rubyforge_project:
|
161
|
+
rubygems_version: 2.0.3
|
162
|
+
signing_key:
|
163
|
+
specification_version: 4
|
164
|
+
summary: This is a little ruby command line tool that hooks to a moodle server and
|
165
|
+
downloads all attempts for an exam as pdfs.
|
166
|
+
test_files:
|
167
|
+
- spec/api/asciify_spec.rb
|
168
|
+
- spec/api/pdfkit_spec.rb
|
169
|
+
- spec/fileNameCreator_spec.rb
|
170
|
+
- spec/moodleparsing/exam-overview-moodle-ss2013.html
|
171
|
+
- spec/moodleparsing/exam-overview.html
|
172
|
+
- spec/moodleparsing/moodleparsing_spec.rb
|
173
|
+
- spec/moodleparsing/review-page-nutzerbild.html
|
174
|
+
- spec/moodleparsing/review-page.html
|
175
|
+
- spec/option_handler_spec.rb
|