geonames_local 0.3.1 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,73 @@
1
+ # -*- coding: utf-8 -*-
2
+ require File.expand_path(File.dirname(__FILE__) + '/../../spec_ar_helper')
3
+ module Geonames
4
+ module Models
5
+ module AR
6
+ class User < ActiveRecord::Base
7
+ belongs_to :city
8
+ end
9
+ end
10
+ end
11
+ end
12
+
13
+ def brasil
14
+ Models::AR::Country.find_or_create_by_name(:name => "Brazil", :abbr => "BR")
15
+ end
16
+
17
+ describe "Country" do
18
+
19
+ it "should create countries" do
20
+ Models::AR::Country.create(:name => "Chad", :abbr => "TD").should be_valid
21
+ end
22
+
23
+ it "should write to db" do
24
+ lambda do
25
+ Models::AR::Country.create(:name => "Itália", :abbr => "IT")
26
+ end.should change(Models::AR::Country, :count).by(1)
27
+ end
28
+
29
+ end
30
+
31
+ describe "Province" do
32
+
33
+ it "should be a class instance of ar" do
34
+ Models::AR::Province.new.should be_instance_of Models::AR::Province
35
+ end
36
+
37
+ it "should create" do
38
+ Models::AR::Province.create(:name => "Chadland", :country => brasil).should be_valid
39
+ end
40
+ end
41
+
42
+ describe "City" do
43
+
44
+ it "should be a class instance of ar" do
45
+ Models::AR::City.new.should be_instance_of Models::AR::City
46
+ end
47
+
48
+ it "should create" do
49
+ Models::AR::City.create(:name => "Chadland", :country => brasil).should be_valid
50
+ end
51
+ end
52
+ # DatabaseCleaner.clean
53
+
54
+ describe "Active Record Stuff" do
55
+
56
+ before do
57
+ # DatabaseCleaner.clean
58
+ @br ||= brasil
59
+ Models::AR::City.create!("name" => "São Tomé", "geom" => [15,15], :country => @br)
60
+ Models::AR::City.create!("name" => "Rock CIty", "geom" => [18,16], :country => @br)
61
+ end
62
+
63
+ it "should record" do
64
+ Models::AR::City.count.should eql(2)
65
+ end
66
+
67
+ it "should create" do
68
+ user = Models::AR::User.new(:name => "Defendor")
69
+ user.city = Models::AR::City.first
70
+ user.save
71
+ Models::AR::User.first.city.name.should eql("São Tomé")
72
+ end
73
+ end
@@ -1,9 +1,8 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  require File.expand_path(File.dirname(__FILE__) + '/../../spec_mongo_helper')
3
3
  require "geo_ruby"
4
- include Geonames::Mongo
5
4
 
6
- describe City do
5
+ describe "City" do
7
6
 
8
7
  before(:all) do
9
8
  Adapter.insert("cities", {"id" => 9, "name" => "Sao Paulo", "geom" => [15,15]})
@@ -15,26 +14,26 @@ describe City do
15
14
  end
16
15
 
17
16
  it "should set a collection name" do
18
- City.collection.should eql("cities")
17
+ Models::Mongo::City.collection.should eql("cities")
19
18
  end
20
19
 
21
20
  it "should find all cities" do
22
- City.all.should_not be_empty
21
+ Models::Mongo::City.all.should_not be_empty
23
22
  end
24
23
 
25
24
  it "should be a city instance" do
26
- City.nearest(1,1).should be_instance_of(City)
25
+ Models::Mongo::City.nearest(1,1).should be_instance_of(Models::Mongo::City)
27
26
  end
28
27
 
29
28
  it "should find city nearest point" do
30
- City.nearest(1,1).name.should eql("Rock City")
29
+ Models::Mongo::City.nearest(1,1).name.should eql("Rock City")
31
30
  end
32
31
 
33
32
  it "should find by name" do
34
- City.find_by_name("Rock")[0].name.should eql("Rock City")
33
+ Models::Mongo::City.find_by_name("Rock")[0].name.should eql("Rock City")
35
34
  end
36
35
 
37
36
  it "should find by name" do
38
- City.find_by_name("rock")[0].name.should eql("Rock City")
37
+ Models::Mongo::City.find_by_name("rock")[0].name.should eql("Rock City")
39
38
  end
40
39
  end
@@ -1,19 +1,38 @@
1
1
  $LOAD_PATH.unshift(File.dirname(__FILE__))
2
2
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
3
- require 'spec'
4
- require 'spec/autorun'
3
+ require 'rspec'
4
+ require 'rspec/autorun'
5
5
  require 'active_record'
6
6
  require 'postgis_adapter'
7
+ require 'database_cleaner'
8
+ Opt[:db] = { :adapter => "postgresql",
9
+ :database => "geonames_ar",
10
+ :username => "postgres",
11
+ :password => "" }
7
12
  require 'geonames_ar'
13
+ include Geonames::Models
14
+
15
+ # DatabaseCleaner.strategy = :truncation
8
16
 
9
17
  ActiveRecord::Base.logger = $logger
10
- ActiveRecord::Base.establish_connection({ :adapter => "postgresql",
11
- :database => "geonames_ar",
12
- :username => "postgres",
13
- :password => "" })
14
18
 
15
- ActiveRecord::Schema.define() do
19
+ begin
20
+ ActiveRecord::Base.establish_connection(Opt[:db])
21
+ ActiveRecord::Migration.verbose = false
22
+ PG_VERSION = ActiveRecord::Base.connection.select_value("SELECT version()").scan(/PostgreSQL ([\d\.]*)/)[0][0]
16
23
 
24
+ puts "Running against PostgreSQL #{PG_VERSION}"
25
+
26
+ rescue PGError
27
+ puts "Test DB not found, creating one for you..."
28
+ `createdb -U postgres geonames_ar -T template_postgis`
29
+ puts "Done. Please run spec again."
30
+ exit
31
+ end
32
+
33
+
34
+
35
+ ActiveRecord::Schema.define() do
17
36
 
18
37
  create_table :users, :force => true do |t|
19
38
  t.string :name, :nick, :limit => 100
@@ -21,35 +40,57 @@ ActiveRecord::Schema.define() do
21
40
  t.integer :code
22
41
  t.references :city
23
42
  end
24
- create_table :cities, :force => true do |t|
25
- t.references :country, :null => false
26
- t.references :province
27
- t.string :name, :null => false
28
- t.point :geom, :srid => 4326
29
- t.integer :gid, :zip
30
- end
31
-
32
- create_table :provinces, :force => true do |t|
33
- t.references :country, :null => false
34
- t.string :name, :null => false
35
- t.string :abbr, :limit => 2, :null => false
36
- t.integer :gid
37
- end
38
-
39
- create_table :countries, :force => true do |t|
40
- t.string :name, :limit => 30, :null => false
41
- t.string :abbr, :limit => 2, :null => false
42
- end
43
-
44
- add_index :cities, :name
45
- add_index :cities, :gid
46
- add_index :cities, :zip
47
- add_index :cities, :country_id
48
- add_index :cities, :province_id
49
- add_index :cities, :geom, :spatial => true
50
- add_index :provinces, :name
51
- add_index :provinces, :abbr
52
- add_index :provinces, :gid
53
- add_index :provinces, :country_id
43
+
44
+ create_table :cities, :force => true do |t|
45
+ t.references :country, :null => false
46
+ t.references :province
47
+ t.string :name, :null => false
48
+ t.point :geom, :srid => 4326
49
+ t.integer :gid, :zip
50
+ end
51
+
52
+ create_table :provinces, :force => true do |t|
53
+ t.references :country, :null => false
54
+ t.string :name, :null => false
55
+ t.string :abbr, :limit => 3
56
+ t.integer :gid
57
+ end
58
+
59
+ create_table :countries, :force => true do |t|
60
+ t.string :name, :limit => 30, :null => false
61
+ t.string :abbr, :limit => 2, :null => false
62
+ end
63
+
64
+ add_index :cities, :name
65
+ add_index :cities, :gid
66
+ add_index :cities, :zip
67
+ add_index :cities, :country_id
68
+ add_index :cities, :province_id
69
+ add_index :cities, :geom, :spatial => true
70
+ add_index :provinces, :name
71
+ add_index :provinces, :abbr
72
+ add_index :provinces, :gid
73
+ add_index :provinces, :country_id
74
+ add_index :countries, :abbr, :unique => true
75
+ add_index :countries, :name, :unique => true
76
+
77
+ end
78
+
79
+ RSpec.configure do |c|
80
+
81
+ c.before(:suite) do
82
+ DatabaseCleaner.strategy = :transaction
83
+ DatabaseCleaner.clean_with(:truncation,
84
+ {:except => %w[geography_columns schema_migrations spatial_ref_sys geometry_columns]})
85
+ end
86
+
87
+ c.before(:each) do
88
+ DatabaseCleaner.start
89
+ end
90
+
91
+ c.after(:each) do
92
+ DatabaseCleaner.clean
93
+ end
94
+
54
95
 
55
96
  end
data/spec/spec_helper.rb CHANGED
@@ -1,10 +1,11 @@
1
1
  $LOAD_PATH.unshift(File.dirname(__FILE__))
2
2
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
3
3
  require 'geonames_cli'
4
- require 'spec'
5
- require 'spec/autorun'
4
+ require 'geonames_local'
5
+ require 'rspec'
6
+ require 'rspec/autorun'
6
7
  include Geonames
7
8
 
8
- Spec::Runner.configure do |config|
9
+ RSpec.configure do |config|
9
10
 
10
11
  end
@@ -1,5 +1,6 @@
1
1
  $LOAD_PATH.unshift(File.dirname(__FILE__))
2
2
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
3
3
  require 'geonames_local'
4
- require 'spec'
5
- require 'spec/autorun'
4
+ require 'rspec'
5
+ require 'rspec/autorun'
6
+ include Geonames::Models
metadata CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
4
4
  prerelease: false
5
5
  segments:
6
6
  - 0
7
- - 3
8
- - 1
9
- version: 0.3.1
7
+ - 5
8
+ - 0
9
+ version: 0.5.0
10
10
  platform: ruby
11
11
  authors:
12
12
  - Marcos Piccinini
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-09-14 00:00:00 -03:00
17
+ date: 2011-04-24 00:00:00 -03:00
18
18
  default_executable: geonames
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
@@ -58,7 +58,6 @@ extra_rdoc_files:
58
58
  - README.rdoc
59
59
  files:
60
60
  - .document
61
- - .gitignore
62
61
  - LICENSE
63
62
  - README.rdoc
64
63
  - Rakefile
@@ -79,29 +78,27 @@ files:
79
78
  - lib/geonames_local/data/dump.rb
80
79
  - lib/geonames_local/data/export.rb
81
80
  - lib/geonames_local/data/shp.rb
81
+ - lib/geonames_local/data/sync.rb
82
82
  - lib/geonames_local/features/road.rb
83
83
  - lib/geonames_local/features/spot.rb
84
84
  - lib/geonames_local/features/zone.rb
85
85
  - lib/geonames_local/geonames.rb
86
- - lib/geonames_local/model/city.rb
87
- - lib/geonames_local/model/country.rb
88
- - lib/geonames_local/model/province.rb
89
- - lib/geonames_local/mongo/city.rb
90
- - lib/geonames_local/mongo/country.rb
91
- - lib/geonames_local/mongo/province.rb
86
+ - lib/geonames_local/models/ar.rb
87
+ - lib/geonames_local/models/mongo.rb
88
+ - lib/geonames_local/models/tokyo.rb
92
89
  - spec/geonames_local/adapters/mongodb_spec.rb
93
90
  - spec/geonames_local/adapters/postgres_spec.rb
94
91
  - spec/geonames_local/adapters/tokyo_spec.rb
95
92
  - spec/geonames_local/cli_spec.rb
96
93
  - spec/geonames_local/data/cache_spec.rb
94
+ - spec/geonames_local/data/dump_spec.rb
97
95
  - spec/geonames_local/data/shp_spec.rb
98
96
  - spec/geonames_local/features/road_spec.rb
99
97
  - spec/geonames_local/features/spot_spec.rb
100
98
  - spec/geonames_local/features/zone_spec.rb
101
- - spec/geonames_local/model/ar_spec.rb
102
- - spec/geonames_local/mongo/city_spec.rb
99
+ - spec/geonames_local/models/ar_spec.rb
100
+ - spec/geonames_local/models/mongo_spec.rb
103
101
  - spec/geonames_local_spec.rb
104
- - spec/spec.opts
105
102
  - spec/spec_ar_helper.rb
106
103
  - spec/spec_helper.rb
107
104
  - spec/spec_mongo_helper.rb
@@ -123,8 +120,8 @@ post_install_message: "\n\
123
120
  MongoDB 2D support is new, only mongo >= 1.3.3 mongodb gem >= 0.19.2\n\
124
121
  http://github.com/mongodb/mongo-ruby-driver\n\n\
125
122
  Have fun because:\n"
126
- rdoc_options:
127
- - --charset=UTF-8
123
+ rdoc_options: []
124
+
128
125
  require_paths:
129
126
  - lib
130
127
  required_ruby_version: !ruby/object:Gem::Requirement
@@ -151,18 +148,19 @@ signing_key:
151
148
  specification_version: 3
152
149
  summary: Dump and feed a tokyo local geonames db
153
150
  test_files:
154
- - spec/spec_ar_helper.rb
155
- - spec/spec_helper.rb
156
- - spec/geonames_local/data/shp_spec.rb
157
- - spec/geonames_local/data/cache_spec.rb
158
- - spec/geonames_local/model/ar_spec.rb
159
- - spec/geonames_local/mongo/city_spec.rb
160
- - spec/geonames_local/cli_spec.rb
151
+ - spec/geonames_local/adapters/mongodb_spec.rb
161
152
  - spec/geonames_local/adapters/postgres_spec.rb
162
153
  - spec/geonames_local/adapters/tokyo_spec.rb
163
- - spec/geonames_local/adapters/mongodb_spec.rb
154
+ - spec/geonames_local/cli_spec.rb
155
+ - spec/geonames_local/data/cache_spec.rb
156
+ - spec/geonames_local/data/dump_spec.rb
157
+ - spec/geonames_local/data/shp_spec.rb
158
+ - spec/geonames_local/features/road_spec.rb
164
159
  - spec/geonames_local/features/spot_spec.rb
165
160
  - spec/geonames_local/features/zone_spec.rb
166
- - spec/geonames_local/features/road_spec.rb
167
- - spec/spec_mongo_helper.rb
161
+ - spec/geonames_local/models/ar_spec.rb
162
+ - spec/geonames_local/models/mongo_spec.rb
168
163
  - spec/geonames_local_spec.rb
164
+ - spec/spec_ar_helper.rb
165
+ - spec/spec_helper.rb
166
+ - spec/spec_mongo_helper.rb
data/.gitignore DELETED
@@ -1,28 +0,0 @@
1
- ## MAC OS
2
- .DS_Store
3
-
4
- ## TEXTMATE
5
- *.tmproj
6
- tmtags
7
-
8
- ## EMACS
9
- *~
10
- \#*
11
- .\#*
12
- *flymake.rb
13
-
14
- ## VIM
15
- *.swp
16
-
17
- ## PROJECT::GENERAL
18
- coverage
19
- rdoc
20
- pkg
21
-
22
- ## PROJECT::SPECIFIC
23
- *.tct
24
- *.pid
25
- *.log
26
- *.qgr
27
- *.lex
28
- shps
@@ -1,26 +0,0 @@
1
- module Geonames
2
- module Model
3
- class City < ActiveRecord::Base
4
- attr_accessor :x, :y, :z
5
-
6
- belongs_to :province
7
- belongs_to :country
8
-
9
- validates_presence_of :country
10
- validates_presence_of :name
11
-
12
- def abbr
13
- province.try(:abbr) || country.abbr
14
- end
15
-
16
- # Instantiate self.geom as a Point
17
- def validation
18
- self.country ||= province.country
19
- unless !@x || !@y || @x == "" || @y == ""
20
- self.geom = Point.from_x_y(@x.to_f, @y.to_f)
21
- end
22
- end
23
-
24
- end
25
- end
26
- end
@@ -1,18 +0,0 @@
1
- module Geonames
2
- class Province
3
- attr_accessor :code, :name, :gid
4
-
5
- def self.all
6
- Tokyo.new.all({ :kind => "province" }).map do |c|
7
- new(c)
8
- end
9
- end
10
-
11
- def initialize(params)
12
- @code = params["code"]
13
- @name = params["name"]
14
- @gid = params["gid"]
15
- end
16
-
17
- end
18
- end