Sha256: 9bd56077525de8eab4f68fb92fb102f618ce88efdf31a4bb518473dd74cb9f61

Contents?: true

Size: 1.79 KB

Versions: 2

Compression:

Stored size: 1.79 KB

Contents

require 'spec_helper'

describe Spidey::Strategies::Mongo do
  class TestSpider < Spidey::AbstractSpider
    include Spidey::Strategies::Mongo
    handle "http://www.cnn.com", :process_home
    
    def result_key(data)
      data[:detail_url]
    end
  end
  
  before(:each) do
    @db = Mongo::Connection.new['spidey-mongo-test']
    @spider = TestSpider.new(
      url_collection: @db['urls'],
      result_collection: @db['results'],
      error_collection: @db['errors'])
  end
  
  after(:each) do
    %w{ urls results errors }.each{ |col| @db[col].drop }
  end
  
  it "should add initial URLs to collection" do
    doc = @db['urls'].find_one(url: "http://www.cnn.com")
    doc['handler'].should == :process_home
    doc['spider'].should == 'TestSpider'
  end
  
  it "should not add duplicate URLs" do
    @spider.send :handle, "http://www.cnn.com", :process_home
    @db['urls'].find(url: "http://www.cnn.com").count.should == 1
  end
  
  it "should add results" do
    @spider.record detail_url: 'http://www.cnn.com', foo: 'bar'
    @db['results'].count.should == 1
    doc = @db['results'].find_one
    doc['detail_url'].should == 'http://www.cnn.com'
    doc['foo'].should == 'bar'
    doc['spider'].should == 'TestSpider'
  end
  
  it "should update existing result" do
    @db['results'].insert key: 'http://foo.bar', detail_url: 'http://foo.bar'
    @spider.record detail_url: 'http://foo.bar', foo: 'bar'
    @db['results'].count.should == 1
  end
  
  it "should add error" do
    @spider.add_error error: Exception.new("WTF"), url: "http://www.cnn.com", handler: :blah
    doc = @db['errors'].find_one
    doc['error'].should == 'Exception'
    doc['url'].should == 'http://www.cnn.com'
    doc['handler'].should == :blah
    doc['message'].should == 'WTF'
    doc['spider'].should == 'TestSpider'
  end
  
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
spidey-mongo-0.1.0 spec/spidey/strategies/mongo_spec.rb
spidey-mongo-0.0.5 spec/spidey/strategies/mongo_spec.rb