aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/test/dispatch/url_generation_test.rb
blob: b55e001fa710deaf08c2c6ca9fcdecabcea39775 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
require 'abstract_unit'

module TestUrlGeneration
  class WithoutMountpoint < ActiveSupport::TestCase
    setup do
      app = lambda { |env| [200, {}, "Hello"] }
      @router = ActionDispatch::Routing::RouteSet.new
      @router.draw do
        match "/foo", :to => app, :as => :foo
      end

      singleton_class.send(:include, @router.url_helpers)
    end

    test "generating URLS normally" do
      assert_equal "/foo", foo_path
    end

    test "accepting a :script_name option" do
      assert_equal "/bar/foo", foo_path(:script_name => "/bar")
    end
  end

  class WithMountPoint < ActionDispatch::IntegrationTest
    Router = ActionDispatch::Routing::RouteSet.new(:mount_point => "/baz")
    Router.draw { match "/foo", :to => "my_route_generating#index", :as => :foo }

    class ::MyRouteGeneratingController < ActionController::Base
      include Router.url_helpers
      def index
        render :text => foo_path
      end
    end

    include Router.url_helpers

    def _router
      Router
    end

    def app
      Router
    end

    test "using the default :script_name option" do
      assert_equal "/baz/foo", foo_path
    end

    test "overriding the default :script_name option" do
      assert_equal "/bar/foo", foo_path(:script_name => "/bar")
    end

    test "the request's SCRIPT_NAME takes precedence over the router's" do
      get "/foo", {}, 'SCRIPT_NAME' => "/new"
      assert_equal "/new/foo", response.body
    end
  end
end