Remove assert_template from Test::SerializerTest

Rails 5 removed this assertion after considering it not
a good testing practice. https://github.com/rails/rails/issues/18950

Rather that add a gem to our Rails 5 matrix to support it,
the assertion is made that the template is rendering using
active support notifications.

Also, to clarify that the action 'render_template' is unrelated to the
event name '!render_template.action_view', I renamed the actions
so that would not look like event names.
This commit is contained in:
Benjamin Fleischer 2015-12-22 22:59:04 -06:00
parent f59431439d
commit a43cff4ae3
2 changed files with 21 additions and 9 deletions

View File

@ -12,7 +12,6 @@ version = ENV['RAILS_VERSION'] || '4.2'
if version == 'master'
gem 'rack', github: 'rack/rack'
gem 'arel', github: 'rails/arel'
gem 'rails-controller-testing', github: 'rails/rails-controller-testing'
git 'https://github.com/rails/rails.git' do
gem 'railties'
gem 'activesupport'

View File

@ -1,5 +1,4 @@
require 'test_helper'
require 'rails-controller-testing' if Rails::VERSION::MAJOR >= 5
module ActiveModelSerializers
module Test
@ -7,17 +6,19 @@ module ActiveModelSerializers
include ActiveModelSerializers::Test::Serializer
class MyController < ActionController::Base
TEMPLATE_NAME = 'template'
def render_using_serializer
render json: Profile.new(name: 'Name 1', description: 'Description 1', comments: 'Comments 1')
end
def render_text
render text: 'ok'
# For Rails4.0
def render_some_text
Rails.version > '4.1' ? render(plain: 'ok') : render(text: 'ok')
end
def render_template
def render_a_template
prepend_view_path './test/fixtures'
render template: 'template'
render template: TEMPLATE_NAME
end
end
@ -44,7 +45,7 @@ module ActiveModelSerializers
end
def test_supports_specifying_serializers_with_a_nil
get :render_text
get :render_some_text
assert_serializer nil
end
@ -65,8 +66,20 @@ module ActiveModelSerializers
end
def test_does_not_overwrite_notification_subscriptions
get :render_template
assert_template 'template'
payloads = []
event_name = '!render_template.action_view'
ActiveSupport::Notifications.subscribe(event_name) do |_name, _start, _finish, _id, payload|
payloads << payload
end
get :render_a_template
assert_equal 1, payloads.size, 'Only expected one template rendering to be registered'
payload = payloads.first
assert_equal MyController::TEMPLATE_NAME, payload[:virtual_path]
assert_match %r{test/fixtures/#{MyController::TEMPLATE_NAME}.html.erb}, payload[:identifier]
ensure
ActiveSupport::Notifications.unsubscribe(event_name)
end
end
end