spec/support/macros/resource_helpers.rb in belajar-0.1.1 vs spec/support/macros/resource_helpers.rb in belajar-1.0.0
- old
+ new
@@ -1,14 +1,14 @@
-module ResourceHelpers
- require 'fileutils'
- require 'zip'
+require 'fileutils'
+require 'zip'
+module ResourceHelpers
def prepare_courses
- FileUtils.mkdir_p(courses_basepath) unless Dir.exist?(courses_basepath)
+ create_directory(courses_basepath)
course_dir_names.each do |course|
- chapter_dir_names.each do |chapter|
+ chapter_dir_names.each do |_|
unit_dirs(course).each do |units|
units.each do |unit|
create_directory(unit)
create_file(unit, task_name, task_file_content)
create_file(unit, reference_solution_name, solution_content)
@@ -27,80 +27,79 @@
end
def prepare_solutions
all_solution_file_paths.each do |path|
base_dir = File.dirname(path)
- name = File.basename(path)
+ name = File.basename(path)
create_file(base_dir, name, solution_content)
end
end
- def prepare_download(zip_file_name, options = {})
+ def prepare_download(zip_file_name, multiple_courses: false)
zip_file_path = File.join(courses_basepath, zip_file_name)
+ create_directory(File.dirname(zip_file_path))
- unless Dir.exist?(File.dirname(zip_file_path))
- FileUtils.makedirs(File.dirname(zip_file_path))
- end
-
Zip::File.open(zip_file_path, Zip::File::CREATE) do |zip_file|
Dir[File.join(courses_basepath, '**', '**')].each do |file|
- if course_match?(file, options[:multiple_courses])
- zip_file.add(file.sub(courses_basepath, '')[1..-1], file) { true }
- end
+ next unless course_match?(file, multiple_courses)
+ zip_file.add(file.sub(courses_basepath, '')[1..-1], file) { true }
end
end
File.read(zip_file_path)
end
def prepare_github_download(zip_file_name)
zip_file_path = File.join(courses_basepath, zip_file_name)
+ create_directory(File.dirname(zip_file_path))
- unless Dir.exist?(File.dirname(zip_file_path))
- FileUtils.makedirs(File.dirname(zip_file_path))
- end
-
Zip::File.open(zip_file_path, Zip::File::CREATE) do |zip_file|
Dir[File.join(courses_basepath, '**', '**')].each do |file|
- if file.match(/.*\-master/)
- zip_file.add(file.sub(courses_basepath, '')[1..-1], file) { true }
- end
+ next unless file =~ /.*\-master/
+ zip_file.add(file.sub(courses_basepath, '')[1..-1], file) { true }
end
end
File.read(zip_file_path)
end
def course_match?(name, multiple_courses)
+ first_course_matches = name.match(course_dirs.first)
+
if multiple_courses
- name.match(course_dirs.first) || name.match(course_dirs.second)
+ first_course_matches || name.match(course_dirs[1])
else
- name.match(course_dirs.first)
+ first_course_matches
end
end
def cleanup_download(zip_file_name)
directory = course_dirs.first
- zip_file = File.join(File.dirname(directory), zip_file_name)
- FileUtils.rm(zip_file) if File.exist?(zip_file)
+ zip_file = File.join(File.dirname(directory), zip_file_name)
+ remove_file(zip_file)
end
def cleanup_temp_data
- FileUtils.remove_dir(temp_basepath) if Dir.exist?(temp_basepath)
+ remove_directory(temp_basepath)
end
+ def remove_directory(dir_path)
+ FileUtils.remove_dir(dir_path) if Dir.exist?(dir_path)
+ end
+
def create_directory(dir_path)
- FileUtils.mkdir_p(dir_path) unless Dir.exist?(dir_path)
+ FileUtils.makedirs(dir_path) unless Dir.exist?(dir_path)
end
def create_file(base_dir, name, content)
- create_directory(base_dir) unless Dir.exist?(base_dir)
+ create_directory(base_dir)
file_path = File.join(base_dir, name)
+ File.open(file_path, 'w') { |f| f.puts content }
+ end
- if Dir.exist?(base_dir)
- File.open(file_path, 'w') { |f| f.puts content }
- end
+ def remove_file(file)
+ FileUtils.rm(file) if File.exist?(file)
end
def available_courses
course_dirs.map do |path|
Belajar::Course.new(path)
@@ -112,12 +111,12 @@
Belajar::Chapter.new(path)
end
end
def available_units(course_name, chapter_name)
- units = unit_dirs(course_name).map do |units|
- units.map do |path|
+ units = unit_dirs(course_name).map do |unit_dir|
+ unit_dir.map do |path|
next unless path.split('/')[-2] == chapter_name
Belajar::Unit.new(path)
end
end
@@ -126,11 +125,11 @@
def available_task(course_name, chapter_name, unit_name)
task = unit_dirs(course_name).map do |units|
units.map do |path|
split = path.split('/')
- next if (split[-2] != chapter_name || split[-1] != unit_name)
+ next if split[-2] != chapter_name || split[-1] != unit_name
Belajar::Task.new(path)
end
end
@@ -139,10 +138,10 @@
def available_reference_solution(course_name, chapter_name, unit_name)
solution = unit_dirs(course_name).map do |units|
units.map do |path|
split = path.split('/')
- next if (split[-2] != chapter_name || split[-1] != unit_name)
+ next if split[-2] != chapter_name || split[-1] != unit_name
Belajar::ReferenceSolution.new(path)
end
end