# encoding: utf-8 $:.unshift(File.join(File.dirname(__FILE__), '..', 'lib')) $:.unshift(File.dirname(__FILE__)) require 'rspec' require 'rails/all' require 'js-routes' require 'active_support/core_ext/hash/slice' require 'coffee-script' if defined?(JRUBY_VERSION) require 'rhino' JS_LIB_CLASS = Rhino else require 'v8' JS_LIB_CLASS = V8 end def jscontext(force = false) if force @jscontext = JS_LIB_CLASS::Context.new else @jscontext ||= JS_LIB_CLASS::Context.new end end def js_error_class JS_LIB_CLASS::JSError end def evaljs(string, force = false) jscontext(force).eval(string) end def test_routes ::App.routes.url_helpers end def blog_routes BlogEngine::Engine.routes.url_helpers end ActiveSupport::Inflector.inflections do |inflect| inflect.irregular "budgie", "budgies" end module BlogEngine class Engine < Rails::Engine isolate_namespace BlogEngine end end class ::App < Rails::Application # Enable the asset pipeline config.assets.enabled = true # initialize_on_precompile config.assets.initialize_on_precompile = true config.paths['config/routes.rb'] << 'spec/config/routes.rb' config.root = File.expand_path('../dummy', __FILE__) end # prevent warning Rails.configuration.active_support.deprecation = :log # Requires supporting files with custom matchers and macros, etc, # in ./support/ and its subdirectories. Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f} RSpec.configure do |config| config.expect_with :rspec do |c| c.syntax = :expect end config.before(:all) do # compile all js files begin Dir["#{File.expand_path(File.join(File.dirname(__FILE__), "..", "lib"))}/**/*.coffee"].each do |coffee| File.open(coffee.gsub(/\.coffee$/, ""), 'w') do |f| f.write(CoffeeScript.compile(File.read(coffee)).lstrip) end end # compile all js files end draw_routes end config.before :each do evaljs("var window = this;", true) def inspectify(value) case value when V8::Array value.map do |v| inspectify(v) end when V8::Object value.to_h.map do |k,v| [k, inspectify(v)] end.to_h when String, nil, Integer, FalseClass, TrueClass value else raise "wtf #{value.class}?" end end jscontext[:log] = lambda do |context, value| puts inspectify(value).to_json end end end