spec/wordnik_spec.rb in wordnik-4.07 vs spec/wordnik_spec.rb in wordnik-4.08
- old
+ new
@@ -4,131 +4,163 @@
describe Wordnik do
before(:each) do
configure_wordnik
end
-
+
after(:each) do
end
context 'initialization' do
-
+
context 'URL stuff' do
+ before(:each) do
+ Wordnik.clear_configuration
+ end
+
context 'host' do
it 'removes http from host' do
- Wordnik.configure {|c| c.host = 'http://example.com' }
+ Wordnik.configure {|c| c.host = 'http://example.com' }
Wordnik.configuration.host.should == 'example.com'
end
it 'removes https from host' do
- Wordnik.configure {|c| c.host = 'https://wookiee.com' }
+ Wordnik.configure {|c| c.host = 'https://wookiee.com' }
Wordnik.configuration.host.should == 'wookiee.com'
end
it 'removes trailing path from host' do
- Wordnik.configure {|c| c.host = 'hobo.com/v4' }
+ Wordnik.configure {|c| c.host = 'hobo.com/v4' }
Wordnik.configuration.host.should == 'hobo.com'
end
end
-
+
+ context 'hosts' do
+ it 'removes http from hosts' do
+ Wordnik.configure {|c| c.hosts = ['http://example.com'] }
+ Wordnik.configuration.hosts.should == ['example.com']
+ end
+
+ it 'removes https from hosts' do
+ Wordnik.configure {|c| c.hosts = ['https://wookiee.com'] }
+ Wordnik.configuration.hosts.should == ['wookiee.com']
+ end
+
+ it 'removes trailing path from hosts' do
+ Wordnik.configure {|c| c.hosts = ['hobo.com/v4'] }
+ Wordnik.configuration.hosts.should == ['hobo.com']
+ end
+
+ it 'creates a load balancer from hosts' do
+ Wordnik.configure {|c| c.hosts = ['hobo.com'] }
+ Wordnik.configuration.load_balancer.class.should == Wordnik::LoadBalancer
+ end
+ end
+
context 'base_path' do
it "prepends a slash to base_path" do
- Wordnik.configure {|c| c.base_path = 'v4/dog' }
+ Wordnik.configure {|c| c.base_path = 'v4/dog' }
Wordnik.configuration.base_path.should == '/v4/dog'
end
-
+
it "doesn't prepend a slash if one is already there" do
Wordnik.configure {|c| c.base_path = '/v4/dog' }
Wordnik.configuration.base_path.should == '/v4/dog'
end
-
+
it "ends up as a blank string if nil" do
Wordnik.configure {|c| c.base_path = nil }
Wordnik.configuration.base_path.should == ''
end
-
+
end
end
context 'resources' do
it 'instantiates resources from cached JSON' do
Wordnik.resources.class.should == Hash
Wordnik.resources[:word].class.should == Wordnik::Resource
end
-
+
it 'has as many resources as there are resource names' do
Wordnik.resources.size.should == Wordnik.configuration.resource_names.size
end
it 'assigns resource keys that match the resource names' do
- Wordnik.resources[:word].name.should == :word
+ Wordnik.resources[:word].name.should == :word
end
end
-
+
context 'authentication' do
-
+
before(:each) do
end
-
+
it 'auto-authenticates at load time if username and password are present'
-
+
it 'succeeds if a username and password are present in the configuration' do
- VCR.use_cassette('wordnik_authenticate', :record => :new_episodes) do
+ Wordnik.clear_configuration
+ configure_wordnik
+ #VCR.use_cassette('wordnik_authenticate', :record => :new_episodes) do
Wordnik.authenticate
- end
+ #end
Wordnik.authenticated?.should == true
end
-
+
it 'de_authenticates' do
- VCR.use_cassette('wordnik_authenticate', :record => :new_episodes) do
+ Wordnik.clear_configuration
+ configure_wordnik
+ #VCR.use_cassette('wordnik_authenticate', :record => :new_episodes) do
Wordnik.authenticate
- end
+ #end
Wordnik.authenticated?.should == true
Wordnik.de_authenticate
Wordnik.authenticated?.should == false
end
-
+
it 'fails if credentials are invalid' do
Wordnik.de_authenticate
Wordnik.configure do |config|
- config.api_key = CREDENTIALS[:api_key]
- config.username = CREDENTIALS[:username]
- config.password = 'wrong!'
- config.host = 'beta.wordnik.com'
- config.base_path = '/v4'
+ c = Wordnik.configuration.clone
+ config.api_key = c.api_key
+ config.username = c.username
+ config.password = "wrong!"
+ config.host = c.host
+ config.base_path = c.base_path
end
- VCR.use_cassette('wordnik_authenticate_fail', :record => :new_episodes) do
+ #VCR.use_cassette('wordnik_authenticate_fail', :record => :new_episodes) do
expect { Wordnik.authenticate }.to raise_error(ClientError)
- end
-
+ #end
+
Wordnik.authenticated?.should == false
configure_wordnik
end
-
+
it 'fails if username and/or password are absent' do
Wordnik.de_authenticate
Wordnik.configure do |config|
- config.api_key = CREDENTIALS[:api_key]
- config.username = nil
+ c = Wordnik.configuration.clone
+ config.api_key = c.api_key
+ config.username = c.username
config.password = nil
- config.host = 'beta.wordnik.com'
- config.base_path = '/v4'
+ config.host = c.host
+ config.base_path = c.base_path
end
expect { Wordnik.authenticate }.to raise_error(ClientError, /username and password are required/i)
Wordnik.authenticated?.should == false
configure_wordnik
end
-
+
end
-
+
end
-
+
it 'maps shorthand Wordnik.resource calls to their resources' do
Wordnik.word.class.should == Wordnik::Resource
Wordnik.word.name.should == :word
- end
-
-end
\ No newline at end of file
+ end
+
+end