Sha256: 9d57979ea19864c9b0f75deab1a6f7a757f6f1cfc0ba3cf83652934b2af2b485

Contents?: true

Size: 1.88 KB

Versions: 1

Compression:

Stored size: 1.88 KB

Contents

require "spec_helper"

describe Rack::API::App, "#url_for" do
  subject { Rack::API::App.new(
    :version => "v1",
    :url_options => {},
    :env => Rack::MockRequest.env_for("/v1")
  )}

  it "returns url considering prefix" do
    subject.prefix = "api"
    subject.url_for.should == "http://example.org/api/v1"
  end

  it "ignores prefix when is not set" do
    subject.prefix = nil
    subject.url_for.should == "http://example.org/v1"
  end

  it "returns host" do
    subject.url_for.should == "http://example.org/v1"
  end

  it "uses a different host" do
    subject.url_options.merge!(:host => "mysite.com")
    subject.url_for.should == "http://mysite.com/v1"
  end

  it "uses a different protocol" do
    subject.url_options.merge!(:protocol => "https")
    subject.url_for.should == "https://example.org/v1"
  end

  it "uses a different port" do
    subject.url_options.merge!(:port => "2345")
    subject.url_for.should == "http://example.org:2345/v1"
  end

  it "uses #to_param when available" do
    subject.url_for("users", mock(:user, :to_param => "1-john-doe")).should == "http://example.org/v1/users/1-john-doe"
  end

  it "converts other data types" do
    subject.url_for(:users, 1).should == "http://example.org/v1/users/1"
  end

  it "adds query string" do
    actual = subject.url_for(:format => :json, :filters => [:name, :age])
    actual.should == "http://example.org/v1?filters[]=name&filters[]=age&format=json"
  end

  it "uses host from request" do
    env = Rack::MockRequest.env_for("/v1", "SERVER_NAME" => "mysite.com")
    subject = Rack::API::App.new(:version => "v1", :env => env)
    subject.url_for.should == "http://mysite.com/v1"
  end

  it "uses port from request" do
    env = Rack::MockRequest.env_for("/v1", "SERVER_PORT" => "2345")
    subject = Rack::API::App.new(:version => "v1", :env => env)
    subject.url_for.should == "http://example.org:2345/v1"
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rack-api-0.2.0 spec/rack-api/url_for_spec.rb