tradesman 1.0.9 → 2.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: fbaf6e8fa25fa7687c37233d7119603b178b4e26
4
- data.tar.gz: e035d73141449e07f661b8f65a551842f3e381a4
3
+ metadata.gz: 7367633d97bb0c1c6404f5beeda0881f28d7b13b
4
+ data.tar.gz: 917266c0de9a26b681f03bdf32ae50eef26a97b1
5
5
  SHA512:
6
- metadata.gz: 8e31c7656bb1323903c415d9d2ff8d415af06b3848f27edc3c65f2f862ef53ef59456f9abfdd7830458c2f052cc8c13bd9719c95f48a7960ac47040dbc0cd4ed
7
- data.tar.gz: 9a608f0a8756d7e266125599188070f5df20fe75e9a6bd03f3f220a886af6c74e7acb41367e5ea15df46ed080aba12b068dbfbc8a071a5c2a1e692ef27bc50c8
6
+ metadata.gz: fcb507aa6a41d362a4f95e77da96159098245151770a474bf36de12ce6230907125824c4b6d6d5c5950a6f9fa7b6d18dadc9708db89b208cef841eccfd823ec5
7
+ data.tar.gz: 4c49af6cf0917573be2cd6fe876393a03678ec8d1bafc39bb0fb8a9a6337bc30031810bd2c10d988f8f93c1085110e99570b3a76b729dcc72a791ae6f9aa8077
data/README.md CHANGED
@@ -211,63 +211,17 @@ end
211
211
 
212
212
  The Tradesman version is self-documenting, cruft-free, and designed for testing.
213
213
 
214
- ## Config
215
214
 
216
- **Define your adapter**
215
+ ## Config
216
+ <tt>Tradesman</tt> uses the underlying Horza configuration, so all configuration options can be set on <tt>Tradesman</tt> just like they would on <tt>Horza</tt>.
217
217
 
218
- Tradesman sits on top of [Horza](https://github.com/onfido/horza/), and can use any of its adapters.
218
+ ***e.g. Defining your adapter***
219
219
 
220
+ _config/initializers/tradesman.rb_
220
221
  ```ruby
221
- # config/initializers/tradesman.rb
222
222
  Tradesman.configure { |config| config.adapter = :active_record }
223
223
  ```
224
-
225
- **Development Mode**
226
-
227
- Turn on development mode to help Tradesman cope with Rails' lazy-loading of classes.
228
-
229
- ```ruby
230
- # config/initializers/tradesman.rb
231
- Tradesman.configure do |config|
232
- config.adapter = :active_record
233
- config.development_mode = Rails.env.development?
234
- end
235
- ```
236
-
237
- **Model Namespaces**
238
-
239
- Lazy loading becomes more complex if your models are namespaced.
240
-
241
- Consider:
242
- ```ruby
243
- module MyNamespace
244
- class Employer < ActiveRecord::Base
245
- has_many :users
246
- end
247
- end
248
-
249
- module MyOtherNamespace
250
- class User < ActiveRecord::Base
251
- belongs_to :employer
252
- end
253
- end
254
- ```
255
-
256
- In order to help Tradesman lazy load these models, you need to explicitly configure any namespaces:
257
-
258
- ```ruby
259
- # config/initializers/tradesman.rb
260
- Tradesman.configure do |config|
261
- config.adapter = :active_record
262
- config.development_mode = Rails.env.development?
263
- config.namespaces = [MyNamespace, MyOtherNamespace]
264
- end
265
- ```
266
-
267
- **Reset Tradesman** _(Can be done at runtime or in tests)_
268
- ```ruby
269
- Tradesman.reset
270
- ```
224
+ For more details on configuration check out the <tt>Horza</tt> [documentation.](https://github.com/onfido/horza)
271
225
 
272
226
  ## Mocking & Stubbing in Tests
273
227
 
@@ -0,0 +1,3 @@
1
+ module Tradesman
2
+ VERSION = '2.0.0'
3
+ end
data/lib/tradesman.rb CHANGED
@@ -9,22 +9,18 @@ require 'tradesman/builders/create_for_parent'
9
9
  require 'tradesman/builders/delete'
10
10
  require 'tradesman/builders/update'
11
11
  require 'tradesman/class_methods'
12
- require 'tradesman/configuration'
13
12
  require 'tradesman/errors'
14
13
  require 'tradesman/error_handling'
15
14
  require 'tradesman/parser'
16
15
  require 'tradesman/template'
16
+ require 'tradesman/version'
17
17
 
18
18
  module Tradesman
19
- extend Configuration
19
+ extend Horza::SharedConfig
20
20
 
21
- class << self
22
- attr_writer :configuration
23
-
24
- def const_missing(class_name)
25
- parser = ::Tradesman::Parser.new(class_name)
26
- return super(class_name) unless parser.match?
27
- Builders.generate_class(parser)
28
- end
21
+ def self.const_missing(class_name)
22
+ parser = ::Tradesman::Parser.new(class_name)
23
+ return super(class_name) unless parser.match?
24
+ Builders.generate_class(parser)
29
25
  end
30
26
  end
@@ -13,30 +13,30 @@ else
13
13
  end
14
14
  end
15
15
 
16
- module TradesmanSpec
17
- class Employer < ActiveRecord::Base
18
- has_many :users
19
- end
20
16
 
21
- class User < ActiveRecord::Base
22
- belongs_to :employer
23
- end
17
+ class Employer < ActiveRecord::Base
18
+ has_many :users
19
+ end
24
20
 
25
- class StrictUser < ActiveRecord::Base
26
- belongs_to :employer
21
+ class User < ActiveRecord::Base
22
+ belongs_to :employer
23
+ end
27
24
 
28
- validates :last_name, presence: true
29
- end
25
+ class StrictUser < ActiveRecord::Base
26
+ belongs_to :employer
27
+
28
+ validates :last_name, presence: true
30
29
  end
30
+
31
31
  end
32
32
 
33
33
  describe Tradesman do
34
34
  let(:adapter) { :active_record }
35
35
  before { Tradesman.configure { |config| config.adapter = adapter } }
36
36
  after do
37
- TradesmanSpec::User.delete_all
38
- TradesmanSpec::StrictUser.delete_all
39
- TradesmanSpec::Employer.delete_all
37
+ User.delete_all
38
+ StrictUser.delete_all
39
+ Employer.delete_all
40
40
  end
41
41
 
42
42
  context '#configure' do
@@ -51,44 +51,11 @@ describe Tradesman do
51
51
  after { Tradesman.reset }
52
52
 
53
53
  it 'throws error' do
54
- expect { Tradesman.adapter }.to raise_error(Tradesman::Base)
55
- end
56
- end
57
- end
58
-
59
- context 'namespaces' do
60
- context 'when no namespaces are set' do
61
- it 'does not forward namespaces to Horza' do
62
- expect(Horza.configuration.namespaces.empty?).to be true
63
- end
64
- end
65
- context 'when namespaces are set' do
66
- before do
67
- Tradesman.configure { |config| config.namespaces = [TradesmanSpec] }
68
- end
69
-
70
- it 'forwards namespaces to Horza' do
71
- expect(Horza.configuration.namespaces).to eq [TradesmanSpec]
54
+ expect { Tradesman.adapter }.to raise_error(Horza::Errors::AdapterError)
72
55
  end
73
56
  end
74
57
  end
75
58
 
76
- context 'development_mode' do
77
- context 'when development_mode is not set' do
78
- it 'does not forward namespaces to Horza' do
79
- expect(Horza.configuration.development_mode).to be nil
80
- end
81
- end
82
- context 'when namespaces are set' do
83
- before do
84
- Tradesman.configure { |config| config.development_mode = true }
85
- end
86
-
87
- it 'forwards namespaces to Horza' do
88
- expect(Horza.configuration.development_mode).to be true
89
- end
90
- end
91
- end
92
59
 
93
60
  context '#go' do
94
61
  context 'Create' do
@@ -145,7 +112,7 @@ describe Tradesman do
145
112
  end
146
113
 
147
114
  context 'for parent' do
148
- let(:employer) { TradesmanSpec::Employer.create }
115
+ let(:employer) { Employer.create }
149
116
  let(:outcome) { Tradesman::CreateUserForEmployer.go(employer.id, last_name: 'Turner') }
150
117
 
151
118
  it 'creates a new record' do
@@ -198,7 +165,7 @@ describe Tradesman do
198
165
  end
199
166
 
200
167
  context 'Update' do
201
- let(:user) { TradesmanSpec::User.create(last_name: 'Smith') }
168
+ let(:user) { User.create(last_name: 'Smith') }
202
169
  context 'when parameters are valid' do
203
170
  let(:outcome) { Tradesman::UpdateUser.go(user.id, last_name: 'Turner') }
204
171
 
@@ -213,7 +180,7 @@ describe Tradesman do
213
180
  end
214
181
 
215
182
  context 'when parameters are invalid' do
216
- let(:strict_user) { TradesmanSpec::StrictUser.create(last_name: 'Smith') }
183
+ let(:strict_user) { StrictUser.create(last_name: 'Smith') }
217
184
  let(:outcome) { Tradesman::UpdateStrictUser.go(strict_user, last_name: nil) }
218
185
 
219
186
  it 'returns an invalid outcome' do
@@ -284,7 +251,7 @@ describe Tradesman do
284
251
 
285
252
  context 'Delete' do
286
253
  context 'when parameters are valid' do
287
- let!(:user) { TradesmanSpec::User.create }
254
+ let!(:user) { User.create }
288
255
  let(:outcome) { Tradesman::DeleteUser.go(user) }
289
256
 
290
257
  it 'executes successfully' do
@@ -293,7 +260,7 @@ describe Tradesman do
293
260
  end
294
261
 
295
262
  it 'deletes record' do
296
- expect { outcome }.to change(TradesmanSpec::User, :count).by(-1)
263
+ expect { outcome }.to change(User, :count).by(-1)
297
264
  end
298
265
  end
299
266
 
@@ -361,7 +328,7 @@ describe Tradesman do
361
328
  end
362
329
 
363
330
  context 'for parent' do
364
- let(:employer) { TradesmanSpec::Employer.create }
331
+ let(:employer) { Employer.create }
365
332
  let(:outcome) { Tradesman::CreateUserForEmployer.go!(employer.id, last_name: 'Turner') }
366
333
 
367
334
  it 'creates a new record' do
@@ -382,7 +349,7 @@ describe Tradesman do
382
349
  end
383
350
 
384
351
  context 'Update' do
385
- let(:user) { TradesmanSpec::User.create(last_name: 'Smith') }
352
+ let(:user) { User.create(last_name: 'Smith') }
386
353
  context 'when parameters are valid' do
387
354
  let(:outcome) { Tradesman::UpdateUser.go!(user.id, last_name: 'Turner') }
388
355
 
@@ -397,7 +364,7 @@ describe Tradesman do
397
364
  end
398
365
 
399
366
  context 'when parameters are invalid' do
400
- let(:strict_user) { TradesmanSpec::StrictUser.create(last_name: 'Smith') }
367
+ let(:strict_user) { StrictUser.create(last_name: 'Smith') }
401
368
  let(:outcome) { Tradesman::UpdateStrictUser.go!(strict_user, last_name: nil) }
402
369
 
403
370
  it 'throws error' do
@@ -408,7 +375,7 @@ describe Tradesman do
408
375
 
409
376
  context 'Delete' do
410
377
  context 'when parameters are valid' do
411
- let!(:user) { TradesmanSpec::User.create }
378
+ let!(:user) { User.create }
412
379
  let(:outcome) { Tradesman::DeleteUser.go!(user) }
413
380
 
414
381
  it 'executes successfully' do
@@ -417,7 +384,7 @@ describe Tradesman do
417
384
  end
418
385
 
419
386
  it 'deletes record' do
420
- expect { outcome }.to change(TradesmanSpec::User, :count).by(-1)
387
+ expect { outcome }.to change(User, :count).by(-1)
421
388
  end
422
389
  end
423
390
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tradesman
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.9
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Blake Turner
@@ -9,118 +9,118 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-10-23 00:00:00.000000000 Z
12
+ date: 2015-11-30 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: horza
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - "~>"
18
+ - - ~>
19
19
  - !ruby/object:Gem::Version
20
- version: 0.5.0
20
+ version: '1.0'
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
- - - "~>"
25
+ - - ~>
26
26
  - !ruby/object:Gem::Version
27
- version: 0.5.0
27
+ version: '1.0'
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: tzu
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
- - - "~>"
32
+ - - ~>
33
33
  - !ruby/object:Gem::Version
34
34
  version: '0.1'
35
35
  type: :runtime
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
- - - "~>"
39
+ - - ~>
40
40
  - !ruby/object:Gem::Version
41
41
  version: '0.1'
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: bundler
44
44
  requirement: !ruby/object:Gem::Requirement
45
45
  requirements:
46
- - - ">="
46
+ - - '>='
47
47
  - !ruby/object:Gem::Version
48
48
  version: 1.0.0
49
49
  type: :development
50
50
  prerelease: false
51
51
  version_requirements: !ruby/object:Gem::Requirement
52
52
  requirements:
53
- - - ">="
53
+ - - '>='
54
54
  - !ruby/object:Gem::Version
55
55
  version: 1.0.0
56
56
  - !ruby/object:Gem::Dependency
57
57
  name: activerecord
58
58
  requirement: !ruby/object:Gem::Requirement
59
59
  requirements:
60
- - - ">="
60
+ - - ~>
61
61
  - !ruby/object:Gem::Version
62
- version: 3.2.15
62
+ version: '3.2'
63
63
  type: :development
64
64
  prerelease: false
65
65
  version_requirements: !ruby/object:Gem::Requirement
66
66
  requirements:
67
- - - ">="
67
+ - - ~>
68
68
  - !ruby/object:Gem::Version
69
- version: 3.2.15
69
+ version: '3.2'
70
70
  - !ruby/object:Gem::Dependency
71
71
  name: activesupport
72
72
  requirement: !ruby/object:Gem::Requirement
73
73
  requirements:
74
- - - ">="
74
+ - - ~>
75
75
  - !ruby/object:Gem::Version
76
- version: 3.2.15
76
+ version: '3.2'
77
77
  type: :development
78
78
  prerelease: false
79
79
  version_requirements: !ruby/object:Gem::Requirement
80
80
  requirements:
81
- - - ">="
81
+ - - ~>
82
82
  - !ruby/object:Gem::Version
83
- version: 3.2.15
83
+ version: '3.2'
84
84
  - !ruby/object:Gem::Dependency
85
85
  name: rspec
86
86
  requirement: !ruby/object:Gem::Requirement
87
87
  requirements:
88
- - - ">="
88
+ - - '>='
89
89
  - !ruby/object:Gem::Version
90
- version: 2.4.0
90
+ version: '0'
91
91
  type: :development
92
92
  prerelease: false
93
93
  version_requirements: !ruby/object:Gem::Requirement
94
94
  requirements:
95
- - - ">="
95
+ - - '>='
96
96
  - !ruby/object:Gem::Version
97
- version: 2.4.0
97
+ version: '0'
98
98
  - !ruby/object:Gem::Dependency
99
99
  name: sqlite3
100
100
  requirement: !ruby/object:Gem::Requirement
101
101
  requirements:
102
- - - ">="
102
+ - - '>='
103
103
  - !ruby/object:Gem::Version
104
104
  version: '0'
105
105
  type: :development
106
106
  prerelease: false
107
107
  version_requirements: !ruby/object:Gem::Requirement
108
108
  requirements:
109
- - - ">="
109
+ - - '>='
110
110
  - !ruby/object:Gem::Version
111
111
  version: '0'
112
112
  - !ruby/object:Gem::Dependency
113
113
  name: byebug
114
114
  requirement: !ruby/object:Gem::Requirement
115
115
  requirements:
116
- - - ">="
116
+ - - '>='
117
117
  - !ruby/object:Gem::Version
118
118
  version: '0'
119
119
  type: :development
120
120
  prerelease: false
121
121
  version_requirements: !ruby/object:Gem::Requirement
122
122
  requirements:
123
- - - ">="
123
+ - - '>='
124
124
  - !ruby/object:Gem::Version
125
125
  version: '0'
126
126
  description: Encapsulate common application behaviour with dynamically generated classes
@@ -129,23 +129,23 @@ executables: []
129
129
  extensions: []
130
130
  extra_rdoc_files: []
131
131
  files:
132
- - LICENSE.txt
133
- - README.md
134
- - lib/tradesman.rb
135
- - lib/tradesman/builders.rb
136
132
  - lib/tradesman/builders/base.rb
137
133
  - lib/tradesman/builders/create.rb
138
134
  - lib/tradesman/builders/create_for_parent.rb
139
135
  - lib/tradesman/builders/delete.rb
140
136
  - lib/tradesman/builders/update.rb
137
+ - lib/tradesman/builders.rb
141
138
  - lib/tradesman/class_methods.rb
142
- - lib/tradesman/configuration.rb
143
139
  - lib/tradesman/error_handling.rb
144
140
  - lib/tradesman/errors.rb
145
141
  - lib/tradesman/mixins/existing_records_multiple_execute.rb
146
142
  - lib/tradesman/mixins/new_records_multiple_execute.rb
147
143
  - lib/tradesman/parser.rb
148
144
  - lib/tradesman/template.rb
145
+ - lib/tradesman/version.rb
146
+ - lib/tradesman.rb
147
+ - LICENSE.txt
148
+ - README.md
149
149
  - spec/builders_spec.rb
150
150
  - spec/parser_spec.rb
151
151
  - spec/spec_helper.rb
@@ -160,17 +160,17 @@ require_paths:
160
160
  - lib
161
161
  required_ruby_version: !ruby/object:Gem::Requirement
162
162
  requirements:
163
- - - ">="
163
+ - - '>='
164
164
  - !ruby/object:Gem::Version
165
165
  version: '0'
166
166
  required_rubygems_version: !ruby/object:Gem::Requirement
167
167
  requirements:
168
- - - ">="
168
+ - - '>='
169
169
  - !ruby/object:Gem::Version
170
170
  version: '0'
171
171
  requirements: []
172
172
  rubyforge_project:
173
- rubygems_version: 2.4.6
173
+ rubygems_version: 2.0.14
174
174
  signing_key:
175
175
  specification_version: 4
176
176
  summary: Tradesman dynamically generates classes with human-readble names that handle
@@ -1,40 +0,0 @@
1
- module Tradesman
2
- module Configuration
3
- def configuration
4
- @configuration ||= Config.new
5
- end
6
-
7
- def reset
8
- @configuration = Config.new
9
- @adapter, @adapter_map = nil, nil # Class-level cache clear
10
- end
11
-
12
- def configure
13
- yield(configuration)
14
- end
15
-
16
- def adapter
17
- raise ::Tradesman::Base.new('Adapter has not been configured') unless configuration.adapter
18
- @adapter ||= configuration.adapter
19
- end
20
- end
21
-
22
- class Config
23
- attr_accessor :adapter, :namespaces
24
-
25
- def adapter=(adapter)
26
- Horza.configure { |config| config.adapter = adapter }
27
- @adapter = Horza.adapter
28
- end
29
-
30
- def development_mode=(mode)
31
- Horza.configure { |config| config.development_mode = mode }
32
- end
33
-
34
- def namespaces=(namespaces)
35
- fail Tradesman::Base.new 'namespaces must be an array' unless namespaces.is_a? Array
36
- Horza.configure { |config| config.namespaces = namespaces }
37
- @namespaces = namespaces
38
- end
39
- end
40
- end