Spiegel von
https://github.com/paviliondev/discourse-custom-wizard.git
synchronisiert 2024-11-29 20:20:29 +01:00
53 Zeilen
1,7 KiB
Ruby
53 Zeilen
1,7 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
describe "Sprockets: require_tree_discourse directive" do
|
|
let(:discourse_asset_path) {
|
|
"#{Rails.root}/app/assets/javascripts/"
|
|
}
|
|
let(:fixture_asset_path) {
|
|
"#{Rails.root}/plugins/discourse-custom-wizard/spec/fixtures/sprockets/"
|
|
}
|
|
let(:test_file_contents) {
|
|
"console.log('hello')"
|
|
}
|
|
let(:resolved_file_contents) {
|
|
File.read(
|
|
"#{Rails.root}/plugins/discourse-custom-wizard/spec/fixtures/sprockets/resolved_js_file_contents.txt"
|
|
)
|
|
}
|
|
|
|
before do
|
|
@env ||= Sprockets::Environment.new
|
|
discourse_asset_path = "#{Rails.root}/app/assets/javascripts/"
|
|
fixture_asset_path = "#{Rails.root}/plugins/discourse-custom-wizard/spec/fixtures/sprockets/"
|
|
@env.append_path(discourse_asset_path)
|
|
@env.append_path(fixture_asset_path)
|
|
@env.cache = {}
|
|
end
|
|
|
|
def create_tmp_folder_and_run(path, file_contents, &block)
|
|
dir = File.dirname(path)
|
|
unless File.directory?(dir)
|
|
FileUtils.mkdir_p(dir)
|
|
end
|
|
|
|
File.new(path, 'w')
|
|
File.write(path, file_contents)
|
|
yield block if block_given?
|
|
FileUtils.rm_r(dir)
|
|
end
|
|
|
|
it "includes assets from the discourse core" do
|
|
create_tmp_folder_and_run("#{discourse_asset_path}/sptest/test.js", test_file_contents) do
|
|
expect(@env.find_asset("require_tree_discourse_test.js").to_s).to eq(resolved_file_contents)
|
|
end
|
|
end
|
|
|
|
it "throws ArgumentError if path is empty" do
|
|
expect { @env.find_asset("require_tree_discourse_empty.js") }.to raise_error(CustomWizard::SprocketsEmptyPath).with_message("path cannot be empty")
|
|
end
|
|
|
|
it "throws ArgumentError if path is non non-existent" do
|
|
expect { @env.find_asset("require_tree_discourse_non_existant.js") }.to raise_error(CustomWizard::SprocketsFileNotFound)
|
|
end
|
|
end
|