68 lines
2.3 KiB
Ruby
68 lines
2.3 KiB
Ruby
require 'spec_helper'
|
|
|
|
describe GeoIpBlocks do
|
|
|
|
include UsesTempFiles
|
|
|
|
GEOIPCITY_BLOCKS = 'geo_ip_blocks.csv'
|
|
|
|
it "count" do GeoIpBlocks.count.should == 16 end
|
|
|
|
let(:first) { GeoIpBlocks.lookup(0x01020304) } # 17192
|
|
let(:second) { GeoIpBlocks.lookup(0x12030405) } # 667
|
|
let(:third) { GeoIpBlocks.lookup(0xffff0001) } # bogus
|
|
|
|
it "first" do first.should_not be_nil end
|
|
it "first.beginip" do first.beginip.should == 0x00000000 end
|
|
it "first.endip" do first.endip.should == 0x0fffffff end
|
|
it "first.locid" do first.locid.should == 17192 end
|
|
|
|
it "second" do second.should_not be_nil end
|
|
it "second.beginip" do second.beginip.should == 0x10000000 end
|
|
it "second.endip" do second.endip.should == 0x1fffffff end
|
|
it "second.locid" do second.locid.should == 667 end
|
|
|
|
it "third" do third.should be_nil end
|
|
|
|
describe "import_from_max_mind" do
|
|
|
|
in_directory_with_file(GEOIPCITY_BLOCKS)
|
|
|
|
let(:geo_ip_city_blocks_data) {tiny_maxmind_dataset[:geo_ip_city_134_blocks]}
|
|
|
|
before(:each) do
|
|
content_for_file("Copyright (c) 2011 MaxMind Inc. All Rights Reserved.\n" +
|
|
"startIpNum,endIpNum,locId\n" +
|
|
to_csv(geo_ip_city_blocks_data))
|
|
end
|
|
|
|
after(:all) do
|
|
# anything that calls after_maxmind_import seems to break transactions (DatabaseCleaner)
|
|
create_phony_database
|
|
end
|
|
|
|
|
|
it "succeeds" do
|
|
GeoIpBlocks.import_from_max_mind(file: GEOIPCITY_BLOCKS)
|
|
|
|
result = GeoIpBlocks.connection.execute("SELECT * FROM geoipblocks_copied")
|
|
result.ntuples.should == 3
|
|
row1 = geo_ip_city_blocks_data[0]
|
|
result[0]['beginip'].to_i.should == row1[GEOIPBLOCKS_BEGINIP_INDEX]
|
|
result[0]['endip'].to_i.should == row1[GEOIPBLOCKS_ENDIP_INDEX]
|
|
result[0]['locid'].to_i.should == row1[GEOIPBLOCKS_LOCID_INDEX]
|
|
result[0]['geom'].should_not be_nil
|
|
|
|
list_indexes('geoipblocks_copied').should =~ [GeoIpBlocks::COPIED_GEOIPBLOCKS_INDEX_NAME]
|
|
|
|
# verify we can swap out tables
|
|
GeoIpBlocks.after_maxmind_import
|
|
|
|
table_exists?('geoipblocks_copied').should be_false
|
|
result = GeoIpBlocks.connection.execute("SELECT * FROM geoipblocks")
|
|
result.ntuples.should == 3
|
|
list_indexes('geoipblocks').should =~ [GeoIpBlocks::GEOIPBLOCKS_INDEX_NAME]
|
|
end
|
|
end
|
|
end
|