$:.unshift(File.dirname(__FILE__) + '/../lib') ENV['RAILS_ENV'] = "production" require File.dirname(__FILE__) + '/../../../../config/environment' require 'test/unit' require 'rubygems' require 'action_controller/test_process' ActionController::Base.logger = nil ActionController::Base.ignore_missing_templates = false ActionController::Routing::Routes.reload rescue nil $asset_packages_yml = YAML.load_file("#{RAILS_ROOT}/vendor/plugins/asset_packager/test/asset_packages.yml") $asset_base_path = "#{RAILS_ROOT}/vendor/plugins/asset_packager/test/assets" class AssetPackageHelperProductionTest < Test::Unit::TestCase include ActionView::Helpers::TagHelper include ActionView::Helpers::AssetTagHelper include Synthesis::AssetPackageHelper cattr_accessor :packages_built def setup @controller = Class.new do attr_reader :request def initialize @request = Class.new do def relative_url_root "" end end.new end end.new build_packages_once end def build_packages_once unless @@packages_built Synthesis::AssetPackage.build_all @@packages_built = true end end def build_js_expected_string(*sources) sources.map {|s| %() }.join("\n") end def build_css_expected_string(*sources) sources.map {|s| %() }.join("\n") end def test_js_basic current_file = Synthesis::AssetPackage.find_by_source("javascripts", "prototype").current_file assert_dom_equal build_js_expected_string(current_file), javascript_include_merged("prototype") end def test_js_multiple_packages current_file1 = Synthesis::AssetPackage.find_by_source("javascripts", "prototype").current_file current_file2 = Synthesis::AssetPackage.find_by_source("javascripts", "foo").current_file assert_dom_equal build_js_expected_string(current_file1, current_file2), javascript_include_merged("prototype", "foo") end def test_js_unpackaged_file current_file1 = Synthesis::AssetPackage.find_by_source("javascripts", "prototype").current_file current_file2 = Synthesis::AssetPackage.find_by_source("javascripts", "foo").current_file assert_dom_equal build_js_expected_string(current_file1, current_file2, "not_part_of_a_package"), javascript_include_merged("prototype", "foo", "not_part_of_a_package") end def test_js_multiple_from_same_package current_file1 = Synthesis::AssetPackage.find_by_source("javascripts", "prototype").current_file current_file2 = Synthesis::AssetPackage.find_by_source("javascripts", "foo").current_file assert_dom_equal build_js_expected_string(current_file1, "not_part_of_a_package", current_file2), javascript_include_merged("prototype", "effects", "controls", "not_part_of_a_package", "foo") end def test_js_by_package_name package_name = Synthesis::AssetPackage.find_by_target("javascripts", "base").current_file assert_dom_equal build_js_expected_string(package_name), javascript_include_merged(:base) end def test_js_multiple_package_names package_name1 = Synthesis::AssetPackage.find_by_target("javascripts", "base").current_file package_name2 = Synthesis::AssetPackage.find_by_target("javascripts", "secondary").current_file assert_dom_equal build_js_expected_string(package_name1, package_name2), javascript_include_merged(:base, :secondary) end def test_css_basic current_file = Synthesis::AssetPackage.find_by_source("stylesheets", "screen").current_file assert_dom_equal build_css_expected_string(current_file), stylesheet_link_merged("screen") end def test_css_multiple_packages current_file1 = Synthesis::AssetPackage.find_by_source("stylesheets", "screen").current_file current_file2 = Synthesis::AssetPackage.find_by_source("stylesheets", "foo").current_file assert_dom_equal build_css_expected_string(current_file1, current_file2), stylesheet_link_merged("screen", "foo") end def test_css_unpackaged_file current_file1 = Synthesis::AssetPackage.find_by_source("stylesheets", "screen").current_file current_file2 = Synthesis::AssetPackage.find_by_source("stylesheets", "foo").current_file assert_dom_equal build_css_expected_string(current_file1, current_file2, "not_part_of_a_package"), stylesheet_link_merged("screen", "foo", "not_part_of_a_package") end def test_css_multiple_from_same_package current_file1 = Synthesis::AssetPackage.find_by_source("stylesheets", "screen").current_file current_file2 = Synthesis::AssetPackage.find_by_source("stylesheets", "foo").current_file assert_dom_equal build_css_expected_string(current_file1, "not_part_of_a_package", current_file2), stylesheet_link_merged("screen", "header", "not_part_of_a_package", "foo", "bar") end def test_css_by_package_name package_name = Synthesis::AssetPackage.find_by_target("stylesheets", "base").current_file assert_dom_equal build_css_expected_string(package_name), stylesheet_link_merged(:base) end def test_css_multiple_package_names package_name1 = Synthesis::AssetPackage.find_by_target("stylesheets", "base").current_file package_name2 = Synthesis::AssetPackage.find_by_target("stylesheets", "secondary").current_file assert_dom_equal build_css_expected_string(package_name1, package_name2), stylesheet_link_merged(:base, :secondary) end def test_image_tag timestamp = rails_asset_id("images/rails.png") assert_dom_equal %(Rails), image_tag("rails") end end