Add channel test generator

上级 3631d7ee
......@@ -7,6 +7,7 @@ Example:
========
rails generate channel Chat speak
creates a Chat channel class and JavaScript asset:
creates a Chat channel class, test and JavaScript asset:
Channel: app/channels/chat_channel.rb
Test: test/channels/chat_channel_test.rb
Assets: app/javascript/channels/chat_channel.js
......@@ -11,6 +11,8 @@ class ChannelGenerator < NamedBase
check_class_collision suffix: "Channel"
hook_for :test_framework
def create_channel_file
template "channel.rb", File.join("app/channels", class_path, "#{file_name}_channel.rb")
......
# frozen_string_literal: true
module TestUnit
module Generators
class ChannelGenerator < ::Rails::Generators::NamedBase
source_root File.expand_path("templates", __dir__)
check_class_collision suffix: "ChannelTest"
def create_test_files
template "channel_test.rb", File.join("test/channels", class_path, "#{file_name}_channel_test.rb")
end
private
def file_name # :doc:
@_file_name ||= super.sub(/_channel\z/i, "")
end
end
end
end
# frozen_string_literal: true
require "test_helper"
class <%= class_name %>ChannelTest < ActionCable::Channel::TestCase
# test "subscribes" do
# subscribe
# assert subscription.confirmed?
# end
end
......@@ -67,12 +67,23 @@ def test_consumer_js_is_created_if_not_present_already
assert_file "app/javascript/channels/consumer.js"
end
def test_invokes_default_test_framework
run_generator %w(chat -t=test_unit)
assert_file "test/channels/chat_channel_test.rb" do |test|
assert_match(/class ChatChannelTest < ActionCable::Channel::TestCase/, test)
assert_match(/# test "subscribes" do/, test)
assert_match(/# assert subscription.confirmed\?/, test)
end
end
def test_channel_on_revoke
run_generator ["chat"]
run_generator ["chat"], behavior: :revoke
assert_no_file "app/channels/chat_channel.rb"
assert_no_file "app/javascript/channels/chat_channel.js"
assert_no_file "test/channels/chat_channel_test.rb"
assert_file "app/channels/application_cable/channel.rb"
assert_file "app/channels/application_cable/connection.rb"
......@@ -88,5 +99,8 @@ def test_channel_suffix_is_not_duplicated
assert_no_file "app/javascript/channels/chat_channel_channel.js"
assert_file "app/javascript/channels/chat_channel.js"
assert_no_file "test/channels/chat_channel_channel_test.rb"
assert_file "test/channels/chat_channel_test.rb"
end
end
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册