Auto-include url_helpers for Rails-apps. Fixes #563

This commit is contained in:
Andrey Krivko 2014-09-29 17:16:33 +07:00
parent 06e3bb77f2
commit dce6e59772
3 changed files with 45 additions and 0 deletions

View File

@ -6,5 +6,13 @@ module ActiveModel
require 'active_model/serializer/generators/serializer/scaffold_controller_generator'
require 'active_model/serializer/generators/resource_override'
end
initializer 'include_routes.active_model_serializer' do |app|
ActiveSupport.on_load(:active_model_serializers) do
include app.routes.url_helpers
end
end
end
end
ActiveSupport.run_load_hooks(:active_model_serializers, ActiveModel::Serializer)

View File

@ -20,5 +20,7 @@ end
ActionController::TestCase.class_eval do
def setup
@routes = TestHelper::Routes
Rails.application.routes.default_url_options[:host] = 'http://example.com' if defined?(Rails)
end
end

View File

@ -0,0 +1,35 @@
require 'test_helper'
module ActiveModel
class Serializer
class UrlHelpersTest < Minitest::Test
include Rails.application.routes.url_helpers
def setup
Object.const_set 'UserController', Class.new(ActionController::Base) do
def show
render text: 'profile'
end
end
Rails.application.routes.draw do
get '/profile/:id', as: :profile, controller: :user, action: :show
end
end
def test_url_helpers_are_available
serializer = Class.new(ActiveModel::Serializer) do
attributes :url
def url
profile_url(id: object.object_id)
end
end
profile = Profile.new
assert_equal({ url: profile_url(id: profile.object_id) },
serializer.new(profile).as_json)
end
end
end
end