60 lines
1.5 KiB
Ruby
60 lines
1.5 KiB
Ruby
|
# frozen_string_literal: true
|
||
|
|
||
|
# License: AGPL-3.0-or-later WITH WTO-AP-3.0-or-later
|
||
|
# Full license explanation at https://github.com/houdiniproject/houdini/blob/master/LICENSE
|
||
|
require 'rails_helper'
|
||
|
|
||
|
Rails.application.load_tasks
|
||
|
|
||
|
describe 'i18n_js.rake' do # rubocop:disable RSpec/DescribeClass
|
||
|
def system!(*args)
|
||
|
system(*args) || abort("\n== Command #{args} failed ==")
|
||
|
end
|
||
|
|
||
|
let(:locales_dir) { Rails.root.join('app/javascript/i18n/locales') }
|
||
|
|
||
|
def wrap_task(rake_taskname)
|
||
|
task = Rake::Task[rake_taskname]
|
||
|
Rake.application.tasks.each(&:reenable)
|
||
|
task.invoke
|
||
|
yield
|
||
|
Rake.application.tasks.each(&:reenable)
|
||
|
end
|
||
|
|
||
|
def verify_cleaned(rake_taskname)
|
||
|
wrap_task(rake_taskname) do
|
||
|
expect(!Dir.exist?(locales_dir) || Dir[locales_dir].none?).to(
|
||
|
eq(true),
|
||
|
"#{locales_dir} wasn't cleaned by rake #{rake_taskname}"
|
||
|
)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
def verify_task_generate(rake_taskname)
|
||
|
wrap_task(rake_taskname) do
|
||
|
expect(Dir.exist?(locales_dir) && Dir[locales_dir].any?).to(
|
||
|
eq(true),
|
||
|
"#{locales_dir} wasn't generated by rake #{rake_taskname}"
|
||
|
)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
def verify_generate(command_line)
|
||
|
system!(command_line)
|
||
|
expect(Dir.exist?(locales_dir) && Dir[locales_dir].any?).to(
|
||
|
eq(true),
|
||
|
"#{locales_dir} wasn't generated by #{command_line}"
|
||
|
)
|
||
|
end
|
||
|
|
||
|
it 'export and clean' do
|
||
|
verify_task_generate('i18n:js:export')
|
||
|
verify_cleaned('webpacker:clean')
|
||
|
verify_task_generate('webpacker:compile')
|
||
|
verify_cleaned('assets:clobber')
|
||
|
verify_task_generate('i18n:js:export')
|
||
|
verify_cleaned('i18n:js:clean')
|
||
|
verify_generate('bin/webpack')
|
||
|
end
|
||
|
end
|