mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-01-25 20:46:48 +00:00
43 lines
1.2 KiB
Ruby
43 lines
1.2 KiB
Ruby
ENV["RAILS_ENV"] ||= 'test'
|
|
|
|
namespace :karma do
|
|
task start: :environment do |_task|
|
|
with_tmp_config :start
|
|
end
|
|
|
|
task run: :environment do |_task|
|
|
with_tmp_config :start, "--single-run"
|
|
end
|
|
|
|
private
|
|
|
|
def with_tmp_config(command, args = nil)
|
|
Tempfile.open('karma_unit.js', Rails.root.join('tmp') ) do |f|
|
|
f.write unit_js(application_spec_files << i18n_file)
|
|
f.flush
|
|
trap('SIGINT') { puts "Killing Karma"; exit }
|
|
exec "node_modules/.bin/karma #{command} #{f.path} #{args}"
|
|
end
|
|
end
|
|
|
|
def application_spec_files
|
|
sprockets = Rails.application.assets
|
|
sprockets.append_path Rails.root.join("spec/javascripts")
|
|
Rails.application.assets.find_asset("application_spec.js").to_a.map { |e| e.pathname.to_s }
|
|
end
|
|
|
|
def unit_js(files)
|
|
puts files
|
|
unit_js = File.open('config/ng-test.conf.js', 'r').read
|
|
unit_js.gsub "APPLICATION_SPEC", "\"#{files.join("\",\n\"")}\""
|
|
end
|
|
|
|
def i18n_file
|
|
raise "I18n::JS module is missing" unless defined?(I18n::JS)
|
|
|
|
I18n::JS::DEFAULT_EXPORT_DIR_PATH.replace('tmp/javascripts')
|
|
I18n::JS.export
|
|
"#{Rails.root.join(I18n::JS::DEFAULT_EXPORT_DIR_PATH)}/translations.js"
|
|
end
|
|
end
|