controller_resources 0.0.5 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (56) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +3 -0
  3. data/.rubocop.yml +7 -0
  4. data/.ruby-version +1 -1
  5. data/.travis.yml +6 -3
  6. data/README.md +107 -13
  7. data/Rakefile +15 -1
  8. data/bin/cc-tddium-post-worker +16 -0
  9. data/bin/erubis +16 -0
  10. data/bin/htmldiff +16 -0
  11. data/bin/ldiff +16 -0
  12. data/bin/nokogiri +16 -0
  13. data/bin/rackup +16 -0
  14. data/bin/rails +12 -8
  15. data/bin/rake +16 -0
  16. data/bin/rspec +16 -0
  17. data/bin/rubocop +16 -0
  18. data/bin/ruby-parse +16 -0
  19. data/bin/ruby-rewrite +16 -0
  20. data/bin/sprockets +16 -0
  21. data/bin/thor +16 -0
  22. data/controller_resources.gemspec +14 -6
  23. data/lib/controller_resources/engine.rb +1 -0
  24. data/lib/controller_resources/extension.rb +65 -63
  25. data/lib/controller_resources/resource.rb +99 -0
  26. data/lib/controller_resources/version.rb +2 -1
  27. data/lib/controller_resources.rb +13 -4
  28. data/spec/dummy/app/assets/javascripts/posts.js +2 -0
  29. data/spec/dummy/app/assets/stylesheets/posts.css +4 -0
  30. data/spec/dummy/app/assets/stylesheets/scaffold.css +56 -0
  31. data/spec/dummy/app/controllers/posts_controller.rb +44 -0
  32. data/spec/dummy/app/helpers/posts_helper.rb +2 -0
  33. data/spec/dummy/app/models/post.rb +2 -0
  34. data/spec/dummy/app/views/posts/_form.html.erb +29 -0
  35. data/spec/dummy/app/views/posts/edit.html.erb +6 -0
  36. data/spec/dummy/app/views/posts/index.html.erb +31 -0
  37. data/spec/dummy/app/views/posts/new.html.erb +5 -0
  38. data/spec/dummy/app/views/posts/show.html.erb +19 -0
  39. data/spec/dummy/config/application.rb +2 -0
  40. data/spec/dummy/config/environments/test.rb +1 -1
  41. data/spec/dummy/config/routes.rb +1 -2
  42. data/spec/dummy/db/migrate/20150614211054_create_posts.rb +10 -0
  43. data/spec/dummy/db/schema.rb +26 -0
  44. data/spec/dummy/test/controllers/posts_controller_test.rb +49 -0
  45. data/spec/dummy/test/fixtures/posts.yml +11 -0
  46. data/spec/dummy/test/models/post_test.rb +7 -0
  47. data/spec/integration/navigation_spec.rb +1 -1
  48. data/spec/lib/controller_resources/extension_spec.rb +42 -0
  49. data/spec/lib/controller_resources/resource_spec.rb +46 -0
  50. data/spec/spec_helper.rb +16 -14
  51. metadata +98 -26
  52. data/lib/controller_resources/responder.rb +0 -0
  53. data/lib/generators/controller_resources/USAGE +0 -8
  54. data/lib/generators/controller_resources/install_generator.rb +0 -16
  55. data/spec/controller_resources/extension_spec.rb +0 -32
  56. data/spec/generators/controller_resources/install_generator_spec.rb +0 -29
@@ -0,0 +1,42 @@
1
+ require 'spec_helper'
2
+
3
+ # :nodoc:
4
+ module ControllerResources
5
+ RSpec.describe Extension do
6
+ # :nodoc:
7
+ class MockController < ActionController::Base
8
+ include Extension
9
+
10
+ resource :model do |r|
11
+ r.search :name
12
+ r.modify :name, :password
13
+ end
14
+ end
15
+
16
+ subject { MockController }
17
+
18
+ let(:controller) { subject.new }
19
+
20
+ let(:resource) { subject._resource }
21
+
22
+ it 'defines a resource object' do
23
+ expect(resource).to be_present
24
+ expect(resource).to be_a(Resource)
25
+ end
26
+
27
+ it 'configures the resource object' do
28
+ expect(resource.model_name).to eq(:model)
29
+ expect(resource.collection_name).to eq(:models)
30
+ end
31
+
32
+ it 'saves params' do
33
+ expect(resource.search_params).to eq([:name])
34
+ expect(resource.edit_params).to eq([:name, :password])
35
+ end
36
+
37
+ it 'publishes params to instance method' do
38
+ expect(controller).to respond_to(:search_params)
39
+ expect(controller).to respond_to(:edit_params)
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,46 @@
1
+ require 'spec_helper'
2
+
3
+ # :nodoc:
4
+ class User
5
+ end
6
+
7
+ # :nodoc:
8
+ module ControllerResources
9
+ RSpec.describe Resource do
10
+ subject do
11
+ Resource.new :user do |r|
12
+ r.search :name
13
+ r.modify :name, :password
14
+ end
15
+ end
16
+
17
+ it 'has a name' do
18
+ expect(subject.name).to eq('user')
19
+ end
20
+
21
+ it 'starts with given search params' do
22
+ expect(subject.search_params).to include(:name)
23
+ end
24
+
25
+ it 'starts with given editing params' do
26
+ expect(subject.edit_params).to include(:name)
27
+ expect(subject.edit_params).to include(:password)
28
+ end
29
+
30
+ it 'configures search params' do
31
+ subject.search :title
32
+ expect(subject.search_params).to include(:title)
33
+ expect(subject.search_params).to_not include(:name)
34
+ end
35
+
36
+ it 'configures editing params' do
37
+ subject.modify :token
38
+ expect(subject.edit_params).to include(:token)
39
+ expect(subject.edit_params).to_not include(:password)
40
+ end
41
+
42
+ it 'provides the user class name' do
43
+ expect(subject.model_class).to eq(User)
44
+ end
45
+ end
46
+ end
data/spec/spec_helper.rb CHANGED
@@ -1,23 +1,25 @@
1
1
  # Configure Rails Environment
2
- ENV["RAILS_ENV"] = "test"
2
+ ENV['RAILS_ENV'] = 'test'
3
3
 
4
- require "codeclimate-test-reporter"
5
- CodeClimate::TestReporter.start
4
+ require 'bundler/setup'
5
+ Bundler.require :default, :development
6
+
7
+ require 'controller_resources'
6
8
 
7
- require "bundler/setup"
8
- require File.expand_path("../dummy/config/environment.rb", __FILE__)
9
- require "rails/test_help"
10
- require "rspec"
9
+ require File.expand_path('../dummy/config/environment.rb', __FILE__)
10
+ # require 'rails/test_help'
11
+
12
+ CodeClimate::TestReporter.start
11
13
 
12
14
  Rails.backtrace_cleaner.remove_silencers!
13
15
 
14
16
  # Load support files
15
17
  Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
16
18
 
17
- # Load fixtures from the engine
18
- if ActiveSupport::TestCase.method_defined?(:fixture_path=)
19
- ActiveSupport::TestCase.fixture_path = File.expand_path("../fixtures", __FILE__)
20
- end
21
-
22
- RSpec.configure do |config|
23
- end
19
+ # :nodoc:
20
+ # module ActiveSupport
21
+ # # Load fixtures from the engine
22
+ # if TestCase.method_defined?(:fixture_path=)
23
+ # TestCase.fixture_path = File.expand_path('../fixtures', __FILE__)
24
+ # end
25
+ # end
metadata CHANGED
@@ -1,43 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: controller_resources
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tom Scott
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-03-23 00:00:00.000000000 Z
11
+ date: 2015-07-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '1.7'
19
+ version: '0'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '1.7'
26
+ version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: '10.0'
33
+ version: '0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: '10.0'
40
+ version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rspec
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -94,20 +94,34 @@ dependencies:
94
94
  - - ">="
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rubocop
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
97
111
  - !ruby/object:Gem::Dependency
98
112
  name: rails
99
113
  requirement: !ruby/object:Gem::Requirement
100
114
  requirements:
101
115
  - - ">="
102
116
  - !ruby/object:Gem::Version
103
- version: 4.0.0
117
+ version: '0'
104
118
  type: :runtime
105
119
  prerelease: false
106
120
  version_requirements: !ruby/object:Gem::Requirement
107
121
  requirements:
108
122
  - - ">="
109
123
  - !ruby/object:Gem::Version
110
- version: 4.0.0
124
+ version: '0'
111
125
  - !ruby/object:Gem::Dependency
112
126
  name: decent_exposure
113
127
  requirement: !ruby/object:Gem::Requirement
@@ -136,44 +150,67 @@ dependencies:
136
150
  - - ">="
137
151
  - !ruby/object:Gem::Version
138
152
  version: '0'
139
- description: A "glue" for decent_exposure, responders, draper and strong_params
153
+ description: |-
154
+ A controller DSL for Rails that allows you to easily and quickly define both singular and collection model resources that can be operated on within the controller.Attempts to DRY up most of the boilerplate code at the top of
155
+ each controller used to set up its state.
140
156
  email:
141
157
  - tubbo@psychedeli.ca
142
- executables:
143
- - rails
158
+ executables: []
144
159
  extensions: []
145
160
  extra_rdoc_files: []
146
161
  files:
147
162
  - ".gitignore"
163
+ - ".rubocop.yml"
148
164
  - ".ruby-version"
149
165
  - ".travis.yml"
150
166
  - Gemfile
151
167
  - LICENSE.txt
152
168
  - README.md
153
169
  - Rakefile
170
+ - bin/cc-tddium-post-worker
171
+ - bin/erubis
172
+ - bin/htmldiff
173
+ - bin/ldiff
174
+ - bin/nokogiri
175
+ - bin/rackup
154
176
  - bin/rails
177
+ - bin/rake
178
+ - bin/rspec
179
+ - bin/rubocop
180
+ - bin/ruby-parse
181
+ - bin/ruby-rewrite
182
+ - bin/sprockets
183
+ - bin/thor
155
184
  - controller_resources.gemspec
156
185
  - lib/controller_resources.rb
157
186
  - lib/controller_resources/engine.rb
158
187
  - lib/controller_resources/extension.rb
159
- - lib/controller_resources/responder.rb
188
+ - lib/controller_resources/resource.rb
160
189
  - lib/controller_resources/version.rb
161
- - lib/generators/controller_resources/USAGE
162
- - lib/generators/controller_resources/install_generator.rb
163
190
  - lib/tasks/controller_resources_tasks.rake
164
- - spec/controller_resources/extension_spec.rb
165
191
  - spec/dummy/README.rdoc
166
192
  - spec/dummy/Rakefile
167
193
  - spec/dummy/app/assets/images/.keep
168
194
  - spec/dummy/app/assets/javascripts/application.js
195
+ - spec/dummy/app/assets/javascripts/posts.js
169
196
  - spec/dummy/app/assets/stylesheets/application.css
197
+ - spec/dummy/app/assets/stylesheets/posts.css
198
+ - spec/dummy/app/assets/stylesheets/scaffold.css
170
199
  - spec/dummy/app/controllers/application_controller.rb
171
200
  - spec/dummy/app/controllers/concerns/.keep
201
+ - spec/dummy/app/controllers/posts_controller.rb
172
202
  - spec/dummy/app/helpers/application_helper.rb
203
+ - spec/dummy/app/helpers/posts_helper.rb
173
204
  - spec/dummy/app/mailers/.keep
174
205
  - spec/dummy/app/models/.keep
175
206
  - spec/dummy/app/models/concerns/.keep
207
+ - spec/dummy/app/models/post.rb
176
208
  - spec/dummy/app/views/layouts/application.html.erb
209
+ - spec/dummy/app/views/posts/_form.html.erb
210
+ - spec/dummy/app/views/posts/edit.html.erb
211
+ - spec/dummy/app/views/posts/index.html.erb
212
+ - spec/dummy/app/views/posts/new.html.erb
213
+ - spec/dummy/app/views/posts/show.html.erb
177
214
  - spec/dummy/bin/bundle
178
215
  - spec/dummy/bin/rails
179
216
  - spec/dummy/bin/rake
@@ -195,14 +232,20 @@ files:
195
232
  - spec/dummy/config/locales/en.yml
196
233
  - spec/dummy/config/routes.rb
197
234
  - spec/dummy/config/secrets.yml
235
+ - spec/dummy/db/migrate/20150614211054_create_posts.rb
236
+ - spec/dummy/db/schema.rb
198
237
  - spec/dummy/lib/assets/.keep
199
238
  - spec/dummy/log/.keep
200
239
  - spec/dummy/public/404.html
201
240
  - spec/dummy/public/422.html
202
241
  - spec/dummy/public/500.html
203
242
  - spec/dummy/public/favicon.ico
204
- - spec/generators/controller_resources/install_generator_spec.rb
243
+ - spec/dummy/test/controllers/posts_controller_test.rb
244
+ - spec/dummy/test/fixtures/posts.yml
245
+ - spec/dummy/test/models/post_test.rb
205
246
  - spec/integration/navigation_spec.rb
247
+ - spec/lib/controller_resources/extension_spec.rb
248
+ - spec/lib/controller_resources/resource_spec.rb
206
249
  - spec/spec_helper.rb
207
250
  homepage: https://github.com/tubbo/controller_resources
208
251
  licenses:
@@ -227,38 +270,61 @@ rubyforge_project:
227
270
  rubygems_version: 2.4.5
228
271
  signing_key:
229
272
  specification_version: 4
230
- summary: A "glue" for decent_exposure, responders, draper and strong_params
273
+ summary: A controller DSL for Rails that allows you to easily and quickly define both
274
+ singular and collection model resources that can be operated on within the controller.
231
275
  test_files:
232
276
  - ".gitignore"
277
+ - ".rubocop.yml"
233
278
  - ".ruby-version"
234
279
  - ".travis.yml"
235
280
  - Gemfile
236
281
  - LICENSE.txt
237
282
  - README.md
238
283
  - Rakefile
284
+ - bin/cc-tddium-post-worker
285
+ - bin/erubis
286
+ - bin/htmldiff
287
+ - bin/ldiff
288
+ - bin/nokogiri
289
+ - bin/rackup
239
290
  - bin/rails
291
+ - bin/rake
292
+ - bin/rspec
293
+ - bin/rubocop
294
+ - bin/ruby-parse
295
+ - bin/ruby-rewrite
296
+ - bin/sprockets
297
+ - bin/thor
240
298
  - controller_resources.gemspec
241
299
  - lib/controller_resources.rb
242
300
  - lib/controller_resources/engine.rb
243
301
  - lib/controller_resources/extension.rb
244
- - lib/controller_resources/responder.rb
302
+ - lib/controller_resources/resource.rb
245
303
  - lib/controller_resources/version.rb
246
- - lib/generators/controller_resources/USAGE
247
- - lib/generators/controller_resources/install_generator.rb
248
304
  - lib/tasks/controller_resources_tasks.rake
249
- - spec/controller_resources/extension_spec.rb
250
305
  - spec/dummy/README.rdoc
251
306
  - spec/dummy/Rakefile
252
307
  - spec/dummy/app/assets/images/.keep
253
308
  - spec/dummy/app/assets/javascripts/application.js
309
+ - spec/dummy/app/assets/javascripts/posts.js
254
310
  - spec/dummy/app/assets/stylesheets/application.css
311
+ - spec/dummy/app/assets/stylesheets/posts.css
312
+ - spec/dummy/app/assets/stylesheets/scaffold.css
255
313
  - spec/dummy/app/controllers/application_controller.rb
256
314
  - spec/dummy/app/controllers/concerns/.keep
315
+ - spec/dummy/app/controllers/posts_controller.rb
257
316
  - spec/dummy/app/helpers/application_helper.rb
317
+ - spec/dummy/app/helpers/posts_helper.rb
258
318
  - spec/dummy/app/mailers/.keep
259
319
  - spec/dummy/app/models/.keep
260
320
  - spec/dummy/app/models/concerns/.keep
321
+ - spec/dummy/app/models/post.rb
261
322
  - spec/dummy/app/views/layouts/application.html.erb
323
+ - spec/dummy/app/views/posts/_form.html.erb
324
+ - spec/dummy/app/views/posts/edit.html.erb
325
+ - spec/dummy/app/views/posts/index.html.erb
326
+ - spec/dummy/app/views/posts/new.html.erb
327
+ - spec/dummy/app/views/posts/show.html.erb
262
328
  - spec/dummy/bin/bundle
263
329
  - spec/dummy/bin/rails
264
330
  - spec/dummy/bin/rake
@@ -280,12 +346,18 @@ test_files:
280
346
  - spec/dummy/config/locales/en.yml
281
347
  - spec/dummy/config/routes.rb
282
348
  - spec/dummy/config/secrets.yml
349
+ - spec/dummy/db/migrate/20150614211054_create_posts.rb
350
+ - spec/dummy/db/schema.rb
283
351
  - spec/dummy/lib/assets/.keep
284
352
  - spec/dummy/log/.keep
285
353
  - spec/dummy/public/404.html
286
354
  - spec/dummy/public/422.html
287
355
  - spec/dummy/public/500.html
288
356
  - spec/dummy/public/favicon.ico
289
- - spec/generators/controller_resources/install_generator_spec.rb
357
+ - spec/dummy/test/controllers/posts_controller_test.rb
358
+ - spec/dummy/test/fixtures/posts.yml
359
+ - spec/dummy/test/models/post_test.rb
290
360
  - spec/integration/navigation_spec.rb
361
+ - spec/lib/controller_resources/extension_spec.rb
362
+ - spec/lib/controller_resources/resource_spec.rb
291
363
  - spec/spec_helper.rb
File without changes
@@ -1,8 +0,0 @@
1
- Description:
2
- Explain the generator
3
-
4
- Example:
5
- rails generate install Thing
6
-
7
- This will create:
8
- what/will/it/create
@@ -1,16 +0,0 @@
1
- class InstallGenerator < Rails::Generators::NamedBase
2
- source_root File.expand_path('../templates', __FILE__)
3
-
4
- def copy_locale
5
- copy_file "#{gem_path}/lib/responders/locales/en.yml", "responders.en.yml"
6
- end
7
-
8
- private
9
- def gem_path
10
- @gem_path ||= gem_spec.full_gem_path
11
- end
12
-
13
- def gem_spec
14
- @gem_spec ||= Gem::Specification.find_by_name 'responders'
15
- end
16
- end
@@ -1,32 +0,0 @@
1
- require 'spec_helper'
2
-
3
- module ControllerResources
4
- RSpec.describe Extension do
5
- class MockController < ActionController::Base
6
- include Extension
7
-
8
- resource :model do
9
- search :name
10
- modify :name, :password
11
- end
12
- end
13
-
14
- subject { MockController }
15
- let(:controller) { subject.new }
16
-
17
- it "defines singleton and collection resources" do
18
- expect(subject._singleton_resource).to eq(:model)
19
- expect(subject._collection_resource).to eq(:models)
20
- end
21
-
22
- it "saves params" do
23
- expect(subject._search_params).to eq([:name])
24
- expect(subject._edit_params).to eq([:name, :password])
25
- end
26
-
27
- it "publishes params to instance method" do
28
- expect(controller).to respond_to(:search_params)
29
- expect(controller).to respond_to(:edit_params)
30
- end
31
- end
32
- end
@@ -1,29 +0,0 @@
1
- require 'spec_helper'
2
- require 'generators/controller_resources/install_generator'
3
-
4
- module ControllerResources
5
- RSpec.describe InstallGenerator, :type => :generator do
6
- destination Rails.root.join('tmp/generators')
7
-
8
- before do
9
- prepare_destination and run_generator
10
- end
11
-
12
- it "creates the locale file" do
13
- assert_file "config/locales/responders.en.yml", <<YAML
14
- en:
15
- flash:
16
- actions:
17
- create:
18
- notice: '%{resource_name} was successfully created.'
19
- # alert: '%{resource_name} could not be created.'
20
- update:
21
- notice: '%{resource_name} was successfully updated.'
22
- # alert: '%{resource_name} could not be updated.'
23
- destroy:
24
- notice: '%{resource_name} was successfully destroyed.'
25
- alert: '%{resource_name} could not be destroyed.'
26
- YAML
27
- end
28
- end
29
- end