Skip to content

Commit

Permalink
Use more subject/let in specs.
Browse files Browse the repository at this point in the history
  • Loading branch information
postmodern committed Dec 15, 2010
1 parent 12ef470 commit 2754405
Show file tree
Hide file tree
Showing 5 changed files with 102 additions and 113 deletions.
14 changes: 6 additions & 8 deletions spec/actions_spec.rb
Expand Up @@ -4,9 +4,7 @@
require 'spec_helper'

describe Actions do
before(:all) do
@url = URI('http://spidr.rubyforge.org/')
end
let(:url) { URI('http://spidr.rubyforge.org/') }

it "should be able to pause spidering" do
count = 0
Expand All @@ -28,10 +26,10 @@
end
end

agent.enqueue(@url)
agent.enqueue(url)
agent.continue!

agent.visited?(@url).should == true
agent.visited?(url).should == true
end

it "should allow skipping of enqueued links" do
Expand All @@ -41,7 +39,7 @@
end
end

agent.enqueue(@url)
agent.enqueue(url)

agent.queue.should be_empty
end
Expand All @@ -53,9 +51,9 @@
end
end

agent.visit_page(@url)
agent.visit_page(url)

agent.history.should == Set[@url]
agent.history.should == Set[url]
agent.queue.should be_empty
end
end
56 changes: 28 additions & 28 deletions spec/auth_store_spec.rb
Expand Up @@ -3,69 +3,69 @@
require 'spec_helper'

describe AuthStore do
let(:root_uri) { URI('http://zerosum.org/') }
let(:uri) { root_uri.merge('/course/auth') }

before(:each) do
@auth_store = AuthStore.new
@uri = URI('http://zerosum.org/course/auth')
@auth_store.add(@uri, 'admin', 'password')
@auth_store.add(uri, 'admin', 'password')
end

after(:each) do
@auth_store.clear!
end

it 'should retrieve auth credentials for the URL' do
uri = @uri.merge('/')

@auth_store[uri] = AuthCredential.new('user1', 'pass1')
@auth_store[uri].username.should == 'user1'
@auth_store[uri].password.should == 'pass1'
@auth_store[root_uri] = AuthCredential.new('user1', 'pass1')
@auth_store[root_uri].username.should == 'user1'
@auth_store[root_uri].password.should == 'pass1'
end

it 'should add auth credentials for the URL' do
uri = @uri.merge('/')

lambda {
@auth_store.add(uri, 'user1', 'pass1')
@auth_store.add(root_uri, 'user1', 'pass1')
}.should change(@auth_store, :size)

@auth_store[uri].username.should == 'user1'
@auth_store[uri].password.should == 'pass1'
@auth_store[root_uri].username.should == 'user1'
@auth_store[root_uri].password.should == 'pass1'
end

describe 'matching' do
it 'should match a longer URL to the base' do
uri = @uri.merge('/course/auth/protected.html')
let(:sub_uri) { uri.merge('/course/auth/protected.html') }

@auth_store[uri].username.should == 'admin'
@auth_store[uri].password.should == 'password'
it 'should match a longer URL to the base' do
@auth_store[sub_uri].username.should == 'admin'
@auth_store[sub_uri].password.should == 'password'
end

it 'should match the longest of all matching URLs' do
@auth_store.add(@uri.merge('/course'), 'user1', 'pass1')
@auth_store.add(@uri.merge('/course/auth/special'), 'user2', 'pass2')
@auth_store.add(@uri.merge('/course/auth/special/extra'), 'user3', 'pass3')
@auth_store.add(uri.merge('/course'), 'user1', 'pass1')
@auth_store.add(uri.merge('/course/auth/special'), 'user2', 'pass2')
@auth_store.add(uri.merge('/course/auth/special/extra'), 'user3', 'pass3')

auth = @auth_store[@uri.merge('/course/auth/special/1.html')]
auth = @auth_store[uri.merge('/course/auth/special/1.html')]
auth.username.should == 'user2'
auth.password.should == 'pass2'
end

it 'should not match a URL with a different host' do
uri = URI('http://spidr.rubyforge.org/course/auth')
@auth_store[uri].should be_nil
remote_uri = URI('http://spidr.rubyforge.org/course/auth')

@auth_store[remote_uri].should be_nil
end

it 'should not match a URL with an alternate path' do
uri = @uri.merge('/course/admin/protected.html')
@auth_store[uri].should be_nil
relative_uri = uri.merge('/course/admin/protected.html')

@auth_store[relative_uri].should be_nil
end
end

it 'should override previous auth credentials' do
@auth_store.add(@uri, 'newuser', 'newpass')
@auth_store.add(uri, 'newuser', 'newpass')

@auth_store[@uri].username.should == 'newuser'
@auth_store[@uri].password.should == 'newpass'
@auth_store[uri].username.should == 'newuser'
@auth_store[uri].password.should == 'newpass'
end

it 'should clear all cookies' do
Expand All @@ -79,7 +79,7 @@
end

it 'should create an encoded authorization string' do
@auth_store.for_url(@uri).should == "YWRtaW46cGFzc3dvcmQ=\n"
@auth_store.for_url(uri).should == "YWRtaW46cGFzc3dvcmQ=\n"
end
end
end
109 changes: 49 additions & 60 deletions spec/cookie_jar_spec.rb
Expand Up @@ -3,149 +3,138 @@
require 'spec_helper'

describe CookieJar do
before(:each) do
@cookie_jar = CookieJar.new
end

it "should retrieve cookies for the named host" do
@cookie_jar['zerosum.org'] = {'admin' => 'ofcourseiam'}
subject['zerosum.org'] = {'admin' => 'ofcourseiam'}

@cookie_jar['zerosum.org'].should == {'admin' => 'ofcourseiam'}
subject['zerosum.org'].should == {'admin' => 'ofcourseiam'}
end

it "should add a cookie to the jar" do
@cookie_jar['zerosum.org'] = {'admin' => 'ofcourseiam'}
subject['zerosum.org'] = {'admin' => 'ofcourseiam'}

@cookie_jar['zerosum.org'].should == {'admin' => 'ofcourseiam'}
subject['zerosum.org'].should == {'admin' => 'ofcourseiam'}
end

it "should merge new cookies into the jar" do
@cookie_jar['zerosum.org'] = {'admin' => 'ofcourseiam'}
@cookie_jar['zerosum.org'] = {'other' => '1'}
subject['zerosum.org'] = {'admin' => 'ofcourseiam'}
subject['zerosum.org'] = {'other' => '1'}

@cookie_jar['zerosum.org'].should == {
subject['zerosum.org'].should == {
'admin' => 'ofcourseiam',
'other' => '1'
}
end

it "should override previous cookies in the jar" do
@cookie_jar['zerosum.org'] = {'admin' => 'ofcourseiam'}
@cookie_jar['zerosum.org'] = {'admin' => 'somethingcompletelydifferent'}
subject['zerosum.org'] = {'admin' => 'ofcourseiam'}
subject['zerosum.org'] = {'admin' => 'somethingcompletelydifferent'}

@cookie_jar['zerosum.org'].should == {
subject['zerosum.org'].should == {
'admin' => 'somethingcompletelydifferent'
}
end

it "should clear all cookies" do
@cookie_jar['zerosum.org'] = {'cookie' => 'foobar'}
@cookie_jar.clear!
subject['zerosum.org'] = {'cookie' => 'foobar'}
subject.clear!

@cookie_jar.size.should == 0
subject.size.should == 0
end

describe "dirty" do
before(:each) do
@cookie_jar = CookieJar.new
@dirty = @cookie_jar.instance_variable_get('@dirty')
end
let(:dirty) { subject.instance_variable_get('@dirty') }

it "should mark a cookie dirty after adding new params" do
@cookie_jar['zerosum.org'] = {'admin' => 'ofcourseiam'}
@cookie_jar['zerosum.org'] = {'other' => '1'}
subject['zerosum.org'] = {'admin' => 'ofcourseiam'}
subject['zerosum.org'] = {'other' => '1'}

@dirty.include?('zerosum.org').should == true
dirty.include?('zerosum.org').should == true
end

it "should mark a cookie dirty after overriding params" do
@cookie_jar['zerosum.org'] = {'admin' => 'ofcourseiam'}
@cookie_jar['zerosum.org'] = {'admin' => 'nope'}
subject['zerosum.org'] = {'admin' => 'ofcourseiam'}
subject['zerosum.org'] = {'admin' => 'nope'}

@dirty.include?('zerosum.org').should == true
dirty.include?('zerosum.org').should == true
end

it "should un-mark a cookie as dirty after re-encoding it" do
@cookie_jar['zerosum.org'] = {'admin' => 'ofcourseiam'}
@cookie_jar['zerosum.org'] = {'admin' => 'nope'}
subject['zerosum.org'] = {'admin' => 'ofcourseiam'}
subject['zerosum.org'] = {'admin' => 'nope'}

@dirty.include?('zerosum.org').should == true
dirty.include?('zerosum.org').should == true

@cookie_jar.for_host('zerosum.org')
subject.for_host('zerosum.org')

@dirty.include?('zerosum.org').should == false
dirty.include?('zerosum.org').should == false
end
end

describe "cookies_for_host" do
before(:each) do
@cookie_jar = CookieJar.new
end

it "should return an empty Hash for unknown hosts" do
@cookie_jar.cookies_for_host('lol.com').should be_empty
subject.cookies_for_host('lol.com').should be_empty
end

it "should return an empty Hash for hosts with no cookie params" do
@cookie_jar['lol.com'] = {}
subject['lol.com'] = {}

@cookie_jar.cookies_for_host('lol.com').should be_empty
subject.cookies_for_host('lol.com').should be_empty
end

it "should return cookie parameters for the host" do
@cookie_jar['zerosum.org'] = {'admin' => 'ofcourseiam'}
@cookie_jar['zerosum.org'] = {'other' => '1'}
cookie = @cookie_jar.cookies_for_host('zerosum.org')
subject['zerosum.org'] = {'admin' => 'ofcourseiam'}
subject['zerosum.org'] = {'other' => '1'}

cookie = subject.cookies_for_host('zerosum.org')

cookie['admin'].should == 'ofcourseiam'
cookie['other'].should == '1'
end

it "should include cookies for the parent domain" do
@cookie_jar['zerosum.org'] = {'admin' => 'ofcourseiam'}
@cookie_jar['sub.zerosum.org'] = {'other' => '1'}
cookie = @cookie_jar.cookies_for_host('sub.zerosum.org')
subject['zerosum.org'] = {'admin' => 'ofcourseiam'}
subject['sub.zerosum.org'] = {'other' => '1'}

cookie = subject.cookies_for_host('sub.zerosum.org')

cookie['admin'].should == 'ofcourseiam'
cookie['other'].should == '1'
end
end

describe "for_host" do
before(:each) do
@cookie_jar = CookieJar.new
end

it "should return nil for unknown hosts" do
@cookie_jar.for_host('lol.com').should be_nil
subject.for_host('lol.com').should be_nil
end

it "should return nil for hosts with no cookie params" do
@cookie_jar['lol.com'] = {}
subject['lol.com'] = {}

@cookie_jar.for_host('lol.com').should be_nil
subject.for_host('lol.com').should be_nil
end

it "should encode single cookie params" do
@cookie_jar['zerosum.org'] = {'admin' => 'ofcourseiam'}
subject['zerosum.org'] = {'admin' => 'ofcourseiam'}

@cookie_jar.for_host('zerosum.org').should == 'admin=ofcourseiam'
subject.for_host('zerosum.org').should == 'admin=ofcourseiam'
end

it "should encode multiple cookie params" do
@cookie_jar['zerosum.org'] = {'admin' => 'ofcourseiam'}
@cookie_jar['zerosum.org'] = {'other' => '1'}
cookie = @cookie_jar.for_host('zerosum.org')
subject['zerosum.org'] = {'admin' => 'ofcourseiam'}
subject['zerosum.org'] = {'other' => '1'}

cookie = subject.for_host('zerosum.org')

cookie.should include('admin=ofcourseiam')
cookie.should include('; ')
cookie.should include('other=1')
end

it "should include cookies for the parent domain" do
@cookie_jar['zerosum.org'] = {'admin' => 'ofcourseiam'}
@cookie_jar['sub.zerosum.org'] = {'other' => '1'}
cookie = @cookie_jar.for_host('sub.zerosum.org')
subject['zerosum.org'] = {'admin' => 'ofcourseiam'}
subject['sub.zerosum.org'] = {'other' => '1'}

cookie = subject.for_host('sub.zerosum.org')

cookie.should include('admin=ofcourseiam')
cookie.should include('; ')
Expand Down
14 changes: 8 additions & 6 deletions spec/rules_spec.rb
Expand Up @@ -3,39 +3,41 @@
require 'spec_helper'

describe Rules do
subject { Rules }

it "should accept data based on acceptance data" do
rules = Rules.new(:accept => [1])
rules = subject.new(:accept => [1])

rules.accept?(1).should == true
end

it "should accept data based on acceptance regexps" do
rules = Rules.new(:accept => [/1/])
rules = subject.new(:accept => [/1/])

rules.accept?('1').should == true
end

it "should match non-Strings using acceptance regexps" do
rules = Rules.new(:accept => [/1/])
rules = subject.new(:accept => [/1/])

rules.accept?(1).should == true
end

it "should accept data using acceptance lambdas" do
rules = Rules.new(:accept => [lambda { |data| data > 2 }])
rules = subject.new(:accept => [lambda { |data| data > 2 }])

rules.accept?(3).should == true
end

it "should reject data that does not match any acceptance patterns" do
rules = Rules.new(:accept => [1, 2, 3])
rules = subject.new(:accept => [1, 2, 3])

rules.accept?(2).should == true
rules.accept?(4).should == false
end

it "should accept data that does not match any rejection patterns" do
rules = Rules.new(:reject => [1, 2, 3])
rules = subject.new(:reject => [1, 2, 3])

rules.accept?(2).should == false
rules.accept?(4).should == true
Expand Down

0 comments on commit 2754405

Please sign in to comment.