spec/support/stub.rb in rails-timeago-2.14.0 vs spec/support/stub.rb in rails-timeago-2.15.0

- old
+ new

@@ -14,5 +14,74 @@ def javascript_tag(source) "<script>#{source}</script>" end end + +class Application + attr_accessor :render + + ASSET_BASE = Pathname.new(File.expand_path('../../..', __FILE__)) + ASSET_DIRECTORIES = %w(lib/assets vendor/assets spec/support/assets) + + def initialize + @helper = TimeagoStub.new + end + + def call(env) + @request = ::Rack::Request.new(env) + + if @request.path =~ %r{^/assets/} + call_asset + else + [200, {'Content-Type' => 'text/html'}, [call_render]] + end + end + + def call_render + body = if @render + @render.call(@helper, @request) + else + '<noscript></noscript>' + end + + <<-HTML + <html> + <head> + <title></title> + <script src="/assets/javascripts/jquery.js"></script> + <script src="/assets/javascripts/jquery.timeago.js"></script> + <script src="/assets/javascripts/locales/jquery.timeago.de.js"></script> + <script src="/assets/javascripts/rails-timeago.js"></script> + #{@helper.timeago_script_tag} + </head> + <body> + #{body} + </body> + </html> + HTML + end + + def call_asset + if (file = find_asset(@request.path[8..-1])) + [200, {'Content-Type' => 'text/javascript'}, [file.read]] + else + [404, {}, []] + end + end + + def find_asset(path) + ASSET_DIRECTORIES.lazy.map do |dir| + ASSET_BASE.join(dir).join(path) + end.find(&:exist?) + end + + class << self + def instance + @instance ||= new + end + + def render(&block) + @instance.render = block + end + end +end