sniff 0.11.12 → 1.0.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.
@@ -1,56 +1,116 @@
1
- require 'data_miner'
2
1
  require 'active_record_inline_schema'
3
- require 'sniff/leap_ext'
2
+ require 'data_miner'
3
+ require 'earth'
4
4
  require 'logger'
5
5
 
6
- module Sniff
7
- extend self
6
+ require 'sniff/fixture'
7
+ require 'sniff/leap_ext'
8
8
 
9
+ class Sniff
9
10
  # Sniff's root directory (the gem's location on the filesystem)
10
- def root
11
+ def Sniff.root
11
12
  File.join(File.dirname(__FILE__), '..')
12
13
  end
13
14
 
14
15
  # Get a path relative to sniff's root
15
- def path(*rest)
16
+ def Sniff.path(*rest)
16
17
  File.join(root, *rest)
17
18
  end
18
19
 
19
- def logger
20
+ def Sniff.logger
20
21
  @logger ||= Logger.new nil
21
22
  end
22
- def logger=(val)
23
+ def Sniff.logger=(val)
23
24
  @logger = val
24
25
  end
25
26
 
27
+ def Sniff.init(local_root, options = {})
28
+ sniff = new local_root, options
29
+ sniff.connect
30
+ sniff
31
+ end
32
+
33
+ attr_accessor :root, :options, :test_support_path, :fixtures_path,
34
+ :logger, :project
35
+
26
36
  # Prepares the environment for running tests against Earth data and emitter
27
37
  # gems.
28
38
  #
29
39
  # local_root: Root directory of the emitter gem to be tested (path to the repo)
30
40
  #
31
41
  # options:
32
- # * :earth is the list of domains Earth.init should load (default: none)
33
- # * :load_data determines whether fixture data is loaded (default: true)
34
42
  # * :logger is a Logger log device used by Sniff and ActiveRecord (default: nil)
35
43
  # logger: nil = no log, string = file path, STDOUT for terminal
36
44
  # * :fixtures_path is the path to your gem's fixtures (default: local_root/lib/db/fixtures)
37
- def init(local_root, options = {})
38
- options[:earth] ||= :none
45
+ # * :reset_schemas tells earth to recreate tables for each model (default: false)
46
+ # * :cucumber tells Sniff to load cucumber test support files provided by the emitter in <emitter_root>/test_support/cucumber (default: false)
47
+ # * :project is the current project (e.g. 'flight'). Default is guessed from CWD
48
+ def initialize(local_root, options = {})
49
+ self.root = local_root
50
+ self.project = options[:project] || File.basename(File.expand_path(local_root))
51
+ self.options = options.symbolize_keys
52
+ self.test_support_path = File.join(root, 'features', 'support')
53
+ self.fixtures_path = options[:fixtures_path]
54
+
55
+ ENV['DATABASE_URL'] ||= "mysql2://root:password@localhost/test_#{project}"
39
56
 
40
- logger = options.delete(:logger) || ENV['LOGGER']
41
- Sniff.logger = Logger.new logger
57
+ load_supporting_libs
58
+
59
+ logger = self.options[:logger] || ENV['LOGGER']
60
+ Sniff.logger ||= Logger.new logger
42
61
  DataMiner.logger = Sniff.logger
62
+ DataMiner.unit_converter = :conversions
63
+
64
+ init_cucumber if self.options[:cucumber]
65
+ end
66
+
67
+ def init_cucumber
68
+ require 'cucumber'
69
+ require 'cucumber/formatter/unicode' # Remove this line if you don't want Cucumber Unicode support
70
+ cukes = Dir.glob File.join(File.dirname(__FILE__), 'test_support', 'cucumber', '**', '*.rb')
71
+ cukes.each { |support_file| require support_file }
72
+ end
43
73
 
44
- Sniff::Database.init local_root, options
74
+ def log(str)
75
+ Sniff.logger.info str
76
+ end
77
+
78
+ def fixtures_path
79
+ @fixtures_path ||= File.join(test_support_path, 'db', 'fixtures')
80
+ end
45
81
 
46
- if options[:cucumber]
47
- cukes = Dir.glob File.join(File.dirname(__FILE__), 'test_support', 'cucumber', '**', '*.rb')
48
- cukes.each { |support_file| require support_file }
82
+ # Connect to the database and set up an ActiveRecord logger
83
+ def connect
84
+ ActiveRecord::Base.logger = Sniff.logger
85
+ Earth.connect
86
+ end
87
+
88
+ def emitter_class
89
+ return @emitter_class unless @emitter_class.nil?
90
+ record_class_path = Dir.glob(File.join(test_support_path, '*_record.rb')).first
91
+ if record_class_path
92
+ require record_class_path
93
+ record_class = File.read(record_class_path)
94
+ klass = record_class.scan(/class ([^\s]*Record)/).flatten.first
95
+ @emitter_class = klass.constantize
49
96
  end
50
97
  end
51
- end
52
98
 
53
- require 'earth'
99
+ def migrate!
100
+ emitter_class.auto_upgrade! if emitter_class
101
+ end
102
+
103
+ def seed!
104
+ Fixture.load_fixtures fixtures_path
105
+ end
106
+
107
+ def load_supporting_libs
108
+ require project
54
109
 
55
- $:.unshift File.dirname(__FILE__)
56
- require 'sniff/database'
110
+ $:.unshift File.join(root, 'lib')
111
+ Dir[File.join(root, 'lib', 'test_support', '*.rb')].each do |lib|
112
+ log "Loading #{lib}"
113
+ require lib
114
+ end
115
+ end
116
+ end
@@ -1,6 +1,6 @@
1
1
  require 'csv'
2
2
 
3
- module Sniff
3
+ class Sniff
4
4
  module Fixture
5
5
  extend self
6
6
 
@@ -11,9 +11,7 @@ module Sniff
11
11
  next unless Object.const_defined?(model_name)
12
12
 
13
13
  model = model_name.constantize
14
- model.auto_upgrade!
15
- model.delete_all # always import from scratch
16
- ActiveRecord::Base.logger.info "Loading fixture #{fixture_file}"
14
+ model.delete_all
17
15
  CSV.foreach(fixture_file, :headers => true) do |row|
18
16
  ActiveRecord::Base.connection.insert_fixture(row, model.table_name) rescue ActiveRecord::RecordNotUnique
19
17
  end
@@ -2,8 +2,9 @@ require 'rake'
2
2
  require 'rake/clean'
3
3
  require 'rdoc/task'
4
4
  require 'rake/tasklib'
5
+ require 'earth'
5
6
 
6
- module Sniff
7
+ class Sniff
7
8
  class RakeTasks
8
9
  include Rake::DSL
9
10
 
@@ -11,10 +12,9 @@ module Sniff
11
12
  new(&blk).define_tasks
12
13
  end
13
14
 
14
- attr_accessor :earth_domains, :cucumber, :rspec, :coverage, :rocco, :bueller, :watchr
15
+ attr_accessor :cucumber, :rspec, :coverage, :rocco, :bueller, :watchr
15
16
 
16
17
  def initialize
17
- self.earth_domains = :all
18
18
  self.cucumber = true
19
19
  self.rspec = false
20
20
  self.coverage = true
@@ -58,8 +58,8 @@ module Sniff
58
58
 
59
59
  task :console do
60
60
  require 'sniff'
61
- cwd = Dir.pwd
62
- Sniff.init cwd, :earth => earth_domains
61
+ sniff = Sniff.new Dir.pwd
62
+ sniff.connect
63
63
 
64
64
  require 'irb'
65
65
  ARGV.clear
@@ -225,6 +225,25 @@ module Sniff
225
225
  end
226
226
  end
227
227
  end
228
+
229
+ require 'sniff'
230
+ sniff = Sniff.new Dir.pwd
231
+ namespace :sniff do
232
+ task :init do
233
+ sniff.connect
234
+ end
235
+ task :migrate => :init do
236
+ sniff.migrate!
237
+ end
238
+ task :seed => :init do
239
+ sniff.seed!
240
+ end
241
+ end
242
+
243
+ require 'earth/tasks'
244
+ Earth::Tasks.new
245
+ task 'db:migrate' => 'sniff:migrate'
246
+ task 'db:seed' => 'sniff:seed'
228
247
  end
229
248
  end
230
249
  end
@@ -1,3 +1,3 @@
1
- module Sniff
2
- VERSION = "0.11.12"
1
+ class Sniff
2
+ VERSION = "1.0.0"
3
3
  end
@@ -9,18 +9,20 @@ def bless_characteristics(characteristics)
9
9
  end
10
10
 
11
11
  When /^the "(.*)" committee reports$/ do |committee_name|
12
- @expectations.map(&:call)
13
- @decision ||= @activity.decisions.values.first
14
- @committee = @decision.committees.find { |c| c.name.to_s == committee_name }
15
- args = [bless_characteristics(@characteristics)]
16
- if @timeframe
17
- args << [@timeframe]
18
- else
19
- args << []
12
+ if @characteristics[committee_name.to_sym].nil?
13
+ @expectations.map(&:call)
14
+ @decision ||= @activity.decisions.values.first
15
+ @committee = @decision.committees.find { |c| c.name.to_s == committee_name }
16
+ args = [bless_characteristics(@characteristics)]
17
+ if @timeframe
18
+ args << [@timeframe]
19
+ else
20
+ args << []
21
+ end
22
+ @report = @committee.report *args
23
+ result = @report.try(:conclusion)
24
+ @characteristics[committee_name.to_sym] = result unless result.nil?
20
25
  end
21
- @report = @committee.report *args
22
- result = @report.try(:conclusion)
23
- @characteristics[committee_name.to_sym] = result unless result.nil?
24
26
  end
25
27
 
26
28
  Then /^then a report should exist for the committee$/ do
@@ -11,7 +11,7 @@ describe Sniff::RakeTasks do
11
11
  end
12
12
 
13
13
  let(:tasks) { Sniff::RakeTask.new }
14
- let(:emitter_path) { File.expand_path '../../../', File.dirname(__FILE__) }
14
+ let(:emitter_path) { File.expand_path '../../../', __FILE__ }
15
15
  let(:rakefile) do
16
16
  rakefile = <<-RAKEFILE
17
17
  Encoding.default_external = Encoding.find 'UTF-8'
@@ -0,0 +1,42 @@
1
+ require 'spec_helper'
2
+
3
+ require 'earth'
4
+ require 'earth/locality/petroleum_administration_for_defense_district'
5
+
6
+ describe Sniff do
7
+ let(:dirigible_path) { File.expand_path '../fixtures/dirigible', __FILE__ }
8
+ let(:sniff) do
9
+ sniff = Sniff.new(dirigible_path, :fixtures_path => dirigible_path + '/lib/test_support/db/fixtures', :project => 'sniff')
10
+ sniff.connect
11
+ sniff
12
+ end
13
+
14
+ before :all do
15
+ $:.unshift File.join(dirigible_path, 'lib')
16
+ require File.join('dirigible')
17
+ DataMiner.logger = Logger.new $stdout
18
+ end
19
+
20
+ describe '.path' do
21
+ it 'returns a path relative to sniff root' do
22
+ Sniff.stub!(:root).and_return File.join('/path','to','my','gems','sniff')
23
+ Sniff.path('lib','sniff','stuff.rb').split(/[\/\\]/).
24
+ should == ['', 'path','to','my','gems','sniff','lib','sniff','stuff.rb']
25
+ end
26
+ end
27
+
28
+ describe '#migrate!' do
29
+ it 'loads a schema for the emitter record' do
30
+ sniff.migrate!
31
+ require File.join(dirigible_path, 'features', 'support', 'dirigible_record')
32
+ DirigibleRecord.table_exists?.should be_true
33
+ end
34
+ end
35
+ describe '#seed!' do
36
+ it 'loads fixtures' do
37
+ sniff.seed!
38
+ PetroleumAdministrationForDefenseDistrict.count.should == 7
39
+ end
40
+ end
41
+ end
42
+
@@ -1,5 +1,3 @@
1
- require 'rubygems'
2
- require 'bundler'
3
- Bundler.setup
1
+ require 'bundler/setup'
4
2
 
5
3
  require 'sniff' # loaded using path in Gemfile
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sniff
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.11.12
4
+ version: 1.0.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-04-18 00:00:00.000000000Z
12
+ date: 2012-08-03 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport
16
- requirement: &2158094060 !ruby/object:Gem::Requirement
16
+ requirement: &2173464040 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '3'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *2158094060
24
+ version_requirements: *2173464040
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: aaronh-chronic
27
- requirement: &2158093600 !ruby/object:Gem::Requirement
27
+ requirement: &2173463580 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 0.3.9
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *2158093600
35
+ version_requirements: *2173463580
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: bueller
38
- requirement: &2158093140 !ruby/object:Gem::Requirement
38
+ requirement: &2173463120 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: 0.0.5
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *2158093140
46
+ version_requirements: *2173463120
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: active_record_inline_schema
49
- requirement: &2158092760 !ruby/object:Gem::Requirement
49
+ requirement: &2173462740 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,21 @@ dependencies:
54
54
  version: '0'
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *2158092760
57
+ version_requirements: *2173462740
58
+ - !ruby/object:Gem::Dependency
59
+ name: conversions
60
+ requirement: &2173462120 !ruby/object:Gem::Requirement
61
+ none: false
62
+ requirements:
63
+ - - ! '>='
64
+ - !ruby/object:Gem::Version
65
+ version: '0'
66
+ type: :runtime
67
+ prerelease: false
68
+ version_requirements: *2173462120
58
69
  - !ruby/object:Gem::Dependency
59
70
  name: cucumber
60
- requirement: &2158092300 !ruby/object:Gem::Requirement
71
+ requirement: &2173461700 !ruby/object:Gem::Requirement
61
72
  none: false
62
73
  requirements:
63
74
  - - ! '>='
@@ -65,21 +76,32 @@ dependencies:
65
76
  version: '0'
66
77
  type: :runtime
67
78
  prerelease: false
68
- version_requirements: *2158092300
79
+ version_requirements: *2173461700
69
80
  - !ruby/object:Gem::Dependency
70
81
  name: earth
71
- requirement: &2158091780 !ruby/object:Gem::Requirement
82
+ requirement: &2173461200 !ruby/object:Gem::Requirement
83
+ none: false
84
+ requirements:
85
+ - - ~>
86
+ - !ruby/object:Gem::Version
87
+ version: 1.0.0
88
+ type: :runtime
89
+ prerelease: false
90
+ version_requirements: *2173461200
91
+ - !ruby/object:Gem::Dependency
92
+ name: mysql2
93
+ requirement: &2173460780 !ruby/object:Gem::Requirement
72
94
  none: false
73
95
  requirements:
74
96
  - - ! '>='
75
97
  - !ruby/object:Gem::Version
76
- version: 0.4.5
98
+ version: '0'
77
99
  type: :runtime
78
100
  prerelease: false
79
- version_requirements: *2158091780
101
+ version_requirements: *2173460780
80
102
  - !ruby/object:Gem::Dependency
81
103
  name: rake
82
- requirement: &2158091280 !ruby/object:Gem::Requirement
104
+ requirement: &2173460240 !ruby/object:Gem::Requirement
83
105
  none: false
84
106
  requirements:
85
107
  - - ! '>='
@@ -87,10 +109,10 @@ dependencies:
87
109
  version: 0.9.0
88
110
  type: :runtime
89
111
  prerelease: false
90
- version_requirements: *2158091280
112
+ version_requirements: *2173460240
91
113
  - !ruby/object:Gem::Dependency
92
114
  name: simplecov
93
- requirement: &2158090900 !ruby/object:Gem::Requirement
115
+ requirement: &2173459660 !ruby/object:Gem::Requirement
94
116
  none: false
95
117
  requirements:
96
118
  - - ! '>='
@@ -98,10 +120,10 @@ dependencies:
98
120
  version: '0'
99
121
  type: :runtime
100
122
  prerelease: false
101
- version_requirements: *2158090900
123
+ version_requirements: *2173459660
102
124
  - !ruby/object:Gem::Dependency
103
125
  name: rdoc
104
- requirement: &2158090440 !ruby/object:Gem::Requirement
126
+ requirement: &2173459200 !ruby/object:Gem::Requirement
105
127
  none: false
106
128
  requirements:
107
129
  - - ! '>='
@@ -109,10 +131,10 @@ dependencies:
109
131
  version: '0'
110
132
  type: :runtime
111
133
  prerelease: false
112
- version_requirements: *2158090440
134
+ version_requirements: *2173459200
113
135
  - !ruby/object:Gem::Dependency
114
136
  name: dkastner-rocco
115
- requirement: &2158090000 !ruby/object:Gem::Requirement
137
+ requirement: &2173458780 !ruby/object:Gem::Requirement
116
138
  none: false
117
139
  requirements:
118
140
  - - ! '>='
@@ -120,10 +142,10 @@ dependencies:
120
142
  version: '0'
121
143
  type: :runtime
122
144
  prerelease: false
123
- version_requirements: *2158090000
145
+ version_requirements: *2173458780
124
146
  - !ruby/object:Gem::Dependency
125
147
  name: rspec
126
- requirement: &2158089500 !ruby/object:Gem::Requirement
148
+ requirement: &2173458200 !ruby/object:Gem::Requirement
127
149
  none: false
128
150
  requirements:
129
151
  - - ~>
@@ -131,10 +153,10 @@ dependencies:
131
153
  version: '2'
132
154
  type: :runtime
133
155
  prerelease: false
134
- version_requirements: *2158089500
156
+ version_requirements: *2173458200
135
157
  - !ruby/object:Gem::Dependency
136
158
  name: simplecov
137
- requirement: &2158089060 !ruby/object:Gem::Requirement
159
+ requirement: &2173457700 !ruby/object:Gem::Requirement
138
160
  none: false
139
161
  requirements:
140
162
  - - ! '>='
@@ -142,10 +164,10 @@ dependencies:
142
164
  version: '0'
143
165
  type: :runtime
144
166
  prerelease: false
145
- version_requirements: *2158089060
167
+ version_requirements: *2173457700
146
168
  - !ruby/object:Gem::Dependency
147
169
  name: timecop
148
- requirement: &2158088600 !ruby/object:Gem::Requirement
170
+ requirement: &2173457240 !ruby/object:Gem::Requirement
149
171
  none: false
150
172
  requirements:
151
173
  - - ! '>='
@@ -153,10 +175,10 @@ dependencies:
153
175
  version: '0'
154
176
  type: :runtime
155
177
  prerelease: false
156
- version_requirements: *2158088600
178
+ version_requirements: *2173457240
157
179
  - !ruby/object:Gem::Dependency
158
180
  name: timeframe
159
- requirement: &2158088100 !ruby/object:Gem::Requirement
181
+ requirement: &2173456580 !ruby/object:Gem::Requirement
160
182
  none: false
161
183
  requirements:
162
184
  - - ! '>='
@@ -164,10 +186,10 @@ dependencies:
164
186
  version: 0.0.8
165
187
  type: :runtime
166
188
  prerelease: false
167
- version_requirements: *2158088100
189
+ version_requirements: *2173456580
168
190
  - !ruby/object:Gem::Dependency
169
191
  name: watchr
170
- requirement: &2158087680 !ruby/object:Gem::Requirement
192
+ requirement: &2173456080 !ruby/object:Gem::Requirement
171
193
  none: false
172
194
  requirements:
173
195
  - - ! '>='
@@ -175,10 +197,10 @@ dependencies:
175
197
  version: '0'
176
198
  type: :runtime
177
199
  prerelease: false
178
- version_requirements: *2158087680
200
+ version_requirements: *2173456080
179
201
  - !ruby/object:Gem::Dependency
180
202
  name: sandbox
181
- requirement: &2158087220 !ruby/object:Gem::Requirement
203
+ requirement: &2173455620 !ruby/object:Gem::Requirement
182
204
  none: false
183
205
  requirements:
184
206
  - - ! '>='
@@ -186,29 +208,18 @@ dependencies:
186
208
  version: '0'
187
209
  type: :development
188
210
  prerelease: false
189
- version_requirements: *2158087220
211
+ version_requirements: *2173455620
190
212
  - !ruby/object:Gem::Dependency
191
213
  name: emitter
192
- requirement: &2158086700 !ruby/object:Gem::Requirement
214
+ requirement: &2173454980 !ruby/object:Gem::Requirement
193
215
  none: false
194
216
  requirements:
195
- - - ! '>='
196
- - !ruby/object:Gem::Version
197
- version: 0.5.0
198
- type: :development
199
- prerelease: false
200
- version_requirements: *2158086700
201
- - !ruby/object:Gem::Dependency
202
- name: sqlite3-ruby
203
- requirement: &2158086280 !ruby/object:Gem::Requirement
204
- none: false
205
- requirements:
206
- - - ! '>='
217
+ - - ~>
207
218
  - !ruby/object:Gem::Version
208
- version: '0'
219
+ version: 0.12.0
209
220
  type: :development
210
221
  prerelease: false
211
- version_requirements: *2158086280
222
+ version_requirements: *2173454980
212
223
  description: Provides development and test environment for Brighter Planet's impact
213
224
  model libraries.
214
225
  email: derek.kastner@brighterplanet.com
@@ -217,7 +228,6 @@ extensions: []
217
228
  extra_rdoc_files:
218
229
  - README.markdown
219
230
  files:
220
- - lib/sniff/database.rb
221
231
  - lib/sniff/fixture.rb
222
232
  - lib/sniff/leap_ext.rb
223
233
  - lib/sniff/rake_tasks.rb
@@ -247,11 +257,10 @@ files:
247
257
  - spec/fixtures/dirigible/lib/dirigible/summarization.rb
248
258
  - spec/fixtures/dirigible/lib/dirigible.rb
249
259
  - spec/fixtures/dirigible/lib/test_support/db/fixtures/petroleum_administration_for_defense_districts.csv
250
- - spec/lib/sniff/database_spec.rb
251
- - spec/lib/sniff/rake_tasks_spec.rb
252
- - spec/lib/sniff_spec.rb
253
- - spec/lib/test_support/cucumber/support/values_spec.rb
260
+ - spec/sniff/rake_tasks_spec.rb
261
+ - spec/sniff_spec.rb
254
262
  - spec/spec_helper.rb
263
+ - spec/test_support/cucumber/support/values_spec.rb
255
264
  homepage: https://github.com/brighterplanet/sniff
256
265
  licenses: []
257
266
  post_install_message:
@@ -267,7 +276,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
267
276
  version: '0'
268
277
  segments:
269
278
  - 0
270
- hash: 1916176534967358290
279
+ hash: 407112005439033128
271
280
  required_rubygems_version: !ruby/object:Gem::Requirement
272
281
  none: false
273
282
  requirements:
@@ -299,8 +308,7 @@ test_files:
299
308
  - spec/fixtures/dirigible/lib/dirigible/summarization.rb
300
309
  - spec/fixtures/dirigible/lib/dirigible.rb
301
310
  - spec/fixtures/dirigible/lib/test_support/db/fixtures/petroleum_administration_for_defense_districts.csv
302
- - spec/lib/sniff/database_spec.rb
303
- - spec/lib/sniff/rake_tasks_spec.rb
304
- - spec/lib/sniff_spec.rb
305
- - spec/lib/test_support/cucumber/support/values_spec.rb
311
+ - spec/sniff/rake_tasks_spec.rb
312
+ - spec/sniff_spec.rb
306
313
  - spec/spec_helper.rb
314
+ - spec/test_support/cucumber/support/values_spec.rb
@@ -1,112 +0,0 @@
1
- require 'active_support'
2
-
3
- require 'sniff/fixture'
4
-
5
- module Sniff
6
- class Database
7
- class << self
8
- # Initialize a database used for testing emitter gems
9
- #
10
- # local_root: Root directory of the emitter gem to be tested (path to the repo)
11
- # options:
12
- # * :earth is the list of domains Earth.init should load (default: none)
13
- # * :load_data determines whether fixture data is loaded (default: true)
14
- # * :fixtures_path is the path to your gem's fixtures (default: local_root/features/support/db/fixtures)
15
- def init(local_root, options = {})
16
- db_init options
17
- earth_init(options[:earth])
18
-
19
- environments = []
20
- environments << init_environment(local_root, options)
21
-
22
- unless local_root == Sniff.root
23
- fixtures_path = File.join(Sniff.root, 'lib', 'test_support', 'db', 'fixtures')
24
- environments << init_environment(Sniff.root, :fixtures_path => fixtures_path)
25
- end
26
- end
27
-
28
- def init_environment(root, options = {})
29
- db = new root, options
30
- db.init
31
- db
32
- end
33
-
34
- # Connect to the database and set up an ActiveRecord logger
35
- def db_init(options)
36
- options = options.symbolize_keys
37
- options[:adapter] ||= options.delete(:db_adapter) || 'sqlite3'
38
- options[:database] ||= options.delete(:db_name) || ':memory:'
39
- ActiveRecord::Base.logger = Sniff.logger
40
- ActiveRecord::Base.establish_connection options
41
- end
42
-
43
- # Initialize Earth, but don't load schemas - otherwise get blank tables
44
- # for any resources in a loaded domain that don't have a fixture
45
- def earth_init(domains)
46
- domains ||= :none
47
- domains = [domains] unless domains.is_a? Array
48
- args = domains
49
- args << {:apply_schemas => false}
50
-
51
- Earth.init *args
52
- end
53
- end
54
-
55
- attr_accessor :root, :test_support_path, :fixtures_path,
56
- :load_data, :logger
57
-
58
- def initialize(root, options)
59
- self.root = root
60
- self.test_support_path = File.join(root, 'features', 'support')
61
- self.load_data = options[:load_data]
62
- self.fixtures_path = options[:fixtures_path]
63
- self.logger = Sniff.logger
64
- end
65
-
66
- def log(str)
67
- logger.info str
68
- end
69
-
70
- def load_data?
71
- @load_data = true if @load_data.nil?
72
- @load_data
73
- end
74
-
75
- def fixtures_path
76
- @fixtures_path ||= File.join(test_support_path, 'db', 'fixtures')
77
- end
78
-
79
- def init
80
- load_supporting_libs
81
- create_emitter_table
82
- Fixture.load_fixtures fixtures_path
83
- end
84
-
85
- def emitter_class
86
- return @emitter_class unless @emitter_class.nil?
87
- record_class_path = Dir.glob(File.join(test_support_path, '*_record.rb')).first
88
- if record_class_path
89
- require record_class_path
90
- record_class = File.read(record_class_path)
91
- klass = record_class.scan(/class ([^\s]*Record)/).flatten.first
92
- @emitter_class = klass.constantize
93
- end
94
- end
95
-
96
- def create_emitter_table
97
- emitter_class.auto_upgrade! if emitter_class
98
- end
99
-
100
- def populate_fixtures
101
- Fixture.load_fixtures fixtures_path
102
- end
103
-
104
- def load_supporting_libs
105
- $:.unshift File.join(root, 'lib')
106
- Dir[File.join(root, 'lib', 'test_support', '*.rb')].each do |lib|
107
- log "Loading #{lib}"
108
- require lib
109
- end
110
- end
111
- end
112
- end
@@ -1,32 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Sniff::Database do
4
- describe '#connect' do
5
- let(:dirigible_path) { File.expand_path '../../fixtures/dirigible', File.dirname(__FILE__) }
6
-
7
- before :all do
8
- $:.unshift File.join(dirigible_path, 'lib')
9
- require File.join('dirigible')
10
- DataMiner.logger = Logger.new $stdout
11
- end
12
-
13
- it 'should load the air domain' do
14
- Sniff.init(dirigible_path, :earth => :air, :apply_schemas => true)
15
- Airport.count.should == 0 # we don't have fixtures for this here
16
- expect { ZipCode.count }.should raise_error
17
- expect { AutomobileFuelType.count }.should raise_error
18
- end
19
- it 'should load data for all domains' do
20
- puts dirigible_path + '/lib/test_support/db/fixtures'
21
- Sniff.init(dirigible_path, :earth => :all, :apply_schemas => true,
22
- :fixtures_path => dirigible_path + '/lib/test_support/db/fixtures')
23
- PetroleumAdministrationForDefenseDistrict.count.should == 7
24
- end
25
- it 'should load a schema for the emitter record' do
26
- Sniff.init(dirigible_path, :apply_schemas => true)
27
- require File.join(dirigible_path, 'features', 'support', 'dirigible_record')
28
- DirigibleRecord.table_exists?.should be_true
29
- end
30
- end
31
- end
32
-
@@ -1,12 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Sniff do
4
- describe '.path' do
5
- it 'returns a path relative to sniff root' do
6
- Sniff.stub!(:root).and_return File.join('/path','to','my','gems','sniff')
7
- Sniff.path('lib','sniff','stuff.rb').split(/[\/\\]/).
8
- should == ['', 'path','to','my','gems','sniff','lib','sniff','stuff.rb']
9
- end
10
- end
11
- end
12
-