aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/test/dispatch/routing_assertions_test.rb
diff options
context:
space:
mode:
authorRafael Mendonça França <rafaelmfranca@gmail.com>2017-11-06 17:24:44 -0500
committerRafael Mendonça França <rafaelmfranca@gmail.com>2017-11-06 17:24:44 -0500
commit256a44c4398a5cd268dbcd8ea4171210b6fe7230 (patch)
treeb69b85d6787b63d79d8719b5dd8300725f1ff9ff /actionpack/test/dispatch/routing_assertions_test.rb
parent05eccb116ded8fd1250524cc4314907ff77511cd (diff)
parentb50e88ebdf375cf81ad63586ce4599979262f975 (diff)
downloadrails-256a44c4398a5cd268dbcd8ea4171210b6fe7230.tar.gz
rails-256a44c4398a5cd268dbcd8ea4171210b6fe7230.tar.bz2
rails-256a44c4398a5cd268dbcd8ea4171210b6fe7230.zip
Merge pull request #22435 from yui-knk/fix_engine_route_test
Make `assert_recognizes` to traverse mounted engines
Diffstat (limited to 'actionpack/test/dispatch/routing_assertions_test.rb')
-rw-r--r--actionpack/test/dispatch/routing_assertions_test.rb72
1 files changed, 72 insertions, 0 deletions
diff --git a/actionpack/test/dispatch/routing_assertions_test.rb b/actionpack/test/dispatch/routing_assertions_test.rb
index e492a56653..a8f00af6de 100644
--- a/actionpack/test/dispatch/routing_assertions_test.rb
+++ b/actionpack/test/dispatch/routing_assertions_test.rb
@@ -1,14 +1,41 @@
+<<<<<<< HEAD
# frozen_string_literal: true
require "abstract_unit"
+require "rails/engine"
require "controller/fake_controllers"
class SecureArticlesController < ArticlesController; end
class BlockArticlesController < ArticlesController; end
class QueryArticlesController < ArticlesController; end
+class SecureBooksController < BooksController; end
+class BlockBooksController < BooksController; end
+class QueryBooksController < BooksController; end
+
class RoutingAssertionsTest < ActionController::TestCase
def setup
+ engine = Class.new(Rails::Engine) do
+ def self.name
+ "blog_engine"
+ end
+ end
+ engine.routes.draw do
+ resources :books
+
+ scope 'secure', :constraints => { :protocol => 'https://' } do
+ resources :books, :controller => 'secure_books'
+ end
+
+ scope 'block', :constraints => lambda { |r| r.ssl? } do
+ resources :books, :controller => 'block_books'
+ end
+
+ scope 'query', :constraints => lambda { |r| r.params[:use_query] == 'true' } do
+ resources :books, :controller => 'query_books'
+ end
+ end
+
@routes = ActionDispatch::Routing::RouteSet.new
@routes.draw do
resources :articles
@@ -24,6 +51,8 @@ class RoutingAssertionsTest < ActionController::TestCase
scope "query", constraints: lambda { |r| r.params[:use_query] == "true" } do
resources :articles, controller: "query_articles"
end
+
+ mount engine => "/shelf"
end
end
@@ -83,6 +112,49 @@ class RoutingAssertionsTest < ActionController::TestCase
assert_match err.message, "This is a really bad msg"
end
+ def test_assert_recognizes_with_engine
+ assert_recognizes({ :controller => 'books', :action => 'index' }, '/shelf/books')
+ assert_recognizes({ :controller => 'books', :action => 'show', :id => '1' }, '/shelf/books/1')
+ end
+
+ def test_assert_recognizes_with_engine_and_extras
+ assert_recognizes({ :controller => 'books', :action => 'index', :page => '1' }, '/shelf/books', { :page => '1' })
+ end
+
+ def test_assert_recognizes_with_engine_and_method
+ assert_recognizes({ :controller => 'books', :action => 'create' }, { :path => '/shelf/books', :method => :post })
+ assert_recognizes({ :controller => 'books', :action => 'update', :id => '1' }, { :path => '/shelf/books/1', :method => :put })
+ end
+
+ def test_assert_recognizes_with_engine_and_hash_constraint
+ assert_raise(Assertion) do
+ assert_recognizes({ :controller => 'secure_books', :action => 'index' }, 'http://test.host/shelf/secure/books')
+ end
+ assert_recognizes({ :controller => 'secure_books', :action => 'index', :protocol => 'https://' }, 'https://test.host/shelf/secure/books')
+ end
+
+ def test_assert_recognizes_with_engine_and_block_constraint
+ assert_raise(Assertion) do
+ assert_recognizes({ :controller => 'block_books', :action => 'index' }, 'http://test.host/shelf/block/books')
+ end
+ assert_recognizes({ :controller => 'block_books', :action => 'index' }, 'https://test.host/shelf/block/books')
+ end
+
+ def test_assert_recognizes_with_engine_and_query_constraint
+ assert_raise(Assertion) do
+ assert_recognizes({ :controller => 'query_books', :action => 'index', :use_query => 'false' }, '/shelf/query/books', { :use_query => 'false' })
+ end
+ assert_recognizes({ :controller => 'query_books', :action => 'index', :use_query => 'true' }, '/shelf/query/books', { :use_query => 'true' })
+ end
+
+ def test_assert_recognizes_raises_message_with_engine
+ err = assert_raise(Assertion) do
+ assert_recognizes({ :controller => 'secure_books', :action => 'index' }, 'http://test.host/shelf/secure/books', {}, "This is a really bad msg")
+ end
+
+ assert_match err.message, "This is a really bad msg"
+ end
+
def test_assert_routing
assert_routing("/articles", controller: "articles", action: "index")
end