spec/routes_spec.rb in mholling-subdomain_routes-0.2.3 vs spec/routes_spec.rb in mholling-subdomain_routes-0.3.0
- old
+ new
@@ -1,157 +1,6 @@
require 'spec_helper'
-describe "subdomain routes" do
- it "should check the validity of each subdomain" do
- SubdomainRoutes.should_receive(:valid_subdomain?).twice.and_return(true, true)
- lambda { map_subdomain(:www, :www1) { } }.should_not raise_error
- end
-
- it "should check the validity of each subdomain and raise an error if any are invalid" do
- SubdomainRoutes.should_receive(:valid_subdomain?).twice.and_return(true, false)
- lambda { map_subdomain(:www, :www!) { } }.should raise_error(ArgumentError)
- end
-
- it "should check not the validity of a nil subdomain" do
- SubdomainRoutes.should_not_receive(:valid_subdomain?)
- map_subdomain(nil) { }
- end
-
- it "should accept a nil subdomain" do
- map_subdomain(nil) { |map| map.options[:subdomains].should == [ "" ] }
- end
-
- it "should accept a blank subdomain" do
- map_subdomain("") { |map| map.options[:subdomains].should == [ "" ] }
- end
-
- it "should accept a single specified subdomain" do
- map_subdomain(:admin) { |admin| admin.options[:subdomains].should == [ "admin" ] }
- end
-
- it "should accept strings or symbols as subdomains" do
- map_subdomain(:admin) { |admin| admin.options[:subdomains].should == [ "admin" ] }
- map_subdomain("admin") { |admin| admin.options[:subdomains].should == [ "admin" ] }
- end
-
- it "should accept multiple subdomains" do
- map_subdomain(:admin, :support) { |map| map.options[:subdomains].should == [ "admin", "support" ] }
- end
-
- it "should downcase the subdomains" do
- map_subdomain(:Admin, "SUPPORT") { |map| map.options[:subdomains].should == [ "admin", "support" ] }
- end
-
- it "should raise ArgumentError if a nil :model option is specified as the subdomain" do
- lambda { map_subdomain(:model => "") { } }.should raise_error(ArgumentError)
- end
-
- it "should raise ArgumentError if no subdomain is specified" do
- lambda { map_subdomain }.should raise_error(ArgumentError)
- end
-
- it "should not include repeated subdomains in the options" do
- map_subdomain(:admin, :support, :admin) { |map| map.options[:subdomains].should == [ "admin", "support" ] }
- end
-
- it "should be invoked by map.subdomains as well as map.subdomain" do
- ActionController::Routing::Routes.draw do |map|
- map.subdomains(:admin, :support) { |sub| sub.options[:subdomains].should == [ "admin", "support" ] }
- end
- end
-
- [ [ :admin ], [ :support, :admin ] ].each do |subdomains|
- context "mapping #{subdomains.size} subdomains" do
- it "should set the first subdomain as a namespace" do
- map_subdomain(*subdomains) { |map| map.options[:namespace].should == "#{subdomains.first}/" }
- end
-
- it "should prefix the first subdomain to named routes" do
- map_subdomain(*subdomains) { |map| map.options[:name_prefix].should == "#{subdomains.first}_" }
- end
-
- it "should instead set a namespace to the name if specified" do
- args = subdomains + [ :name => :something ]
- map_subdomain(*args) { |map| map.options[:namespace].should == "something/" }
- end
-
- it "should instead prefix the name to named routes if specified" do
- args = subdomains + [ :name => :something ]
- map_subdomain(*args) { |map| map.options[:name_prefix].should == "something_" }
- end
-
- it "should not set a namespace if name is specified as nil" do
- args = subdomains + [ :name => nil ]
- map_subdomain(*args) { |map| map.options[:namespace].should be_nil }
- end
-
- it "should not set a named route prefix if name is specified as nil" do
- args = subdomains + [ :name => nil ]
- map_subdomain(*args) { |map| map.options[:name_prefix].should be_nil }
- end
- end
- end
-
- it "should strip bad characters from the namespace and name prefix" do
- map_subdomain("just-do-it") { |map| map.options[:namespace].should == "just_do_it/" }
- map_subdomain("just-do-it") { |map| map.options[:name_prefix].should == "just_do_it_" }
- map_subdomain(nil, :name => "just-do-it") { |map| map.options[:namespace].should == "just_do_it/" }
- map_subdomain(nil, :name => "just-do-it") { |map| map.options[:name_prefix].should == "just_do_it_" }
- map_subdomain(nil, :name => "Just do it!") { |map| map.options[:namespace].should == "just_do_it/" }
- map_subdomain(nil, :name => "Just do it!") { |map| map.options[:name_prefix].should == "just_do_it_" }
- end
-
- context "mapping the nil subdomain" do
- it "should not set a namespace" do
- [ nil, "" ].each do |none|
- map_subdomain(none) { |map| map.options[:namespace].should be_nil }
- end
- end
-
- it "should not set a named route prefix" do
- [ nil, "" ].each do |none|
- map_subdomain(none) { |map| map.options[:name_prefix].should be_nil }
- end
- end
- end
-
- context "mapping nil and other subdomains" do
- it "should set the first non-nil subdomain as a namespace" do
- [ nil, "" ].each do |none|
- map_subdomain(none, :www) { |map| map.options[:namespace].should == "www/" }
- end
- end
-
- it "should prefix the first non-nil subdomain to named routes" do
- [ nil, "" ].each do |none|
- map_subdomain(none, :www) { |map| map.options[:name_prefix].should == "www_" }
- end
- end
- end
-
- context "for a :model subdomain" do
- it "should accept a :model option as the subdomain and turn it into a foreign key symbol" do
- map_subdomain(:model => :city) { |city| city.options[:subdomains].should == :city_id }
- end
-
- it "should singularize a plural model name" do
- map_subdomain(:model => :cities) { |city| city.options[:subdomains].should == :city_id }
- end
-
- it "should accept a string model name" do
- map_subdomain(:model => "city") { |city| city.options[:subdomains].should == :city_id }
- end
-
- it "should set the model name as a namespace" do
- map_subdomain(:model => :city) { |city| city.options[:namespace].should == "city/" }
- end
-
- it "should prefix the model name to named routes" do
- map_subdomain(:model => :city) { |city| city.options[:name_prefix].should == "city_" }
- end
- end
-end
-
describe "ActionController::Routing::Routes" do
before(:each) do
map_subdomain(:www, nil) { |www| www.root :controller => "homes", :action => "show" }
end