lazy_crud 0.9.2 → 0.9.3

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: 68a5f9373bcd358d5a51afb4ea77fd025d57b066
4
- data.tar.gz: 65844983213a6fa73b3c40c32733c757e34da598
3
+ metadata.gz: 32871f8c7fcf29804cba0f25c3ab1fa585cf0516
4
+ data.tar.gz: af379a9727d4b46fe0451da95a133512f04ff925
5
5
  SHA512:
6
- metadata.gz: 39b140a3db495ed4bc554aa70c63741ff9da385b70c9eef002ef012b4814f51e0e6b2dfe2ac04c2c5c9c11131b3180188d312389e9c548e19fdb68392cacdce6
7
- data.tar.gz: 218ab0667505bb0e5af2ef91711fc23b91f7bd314552b55593689bfb13cc54a90c84ef790a7ba79c4589256199177a493caaf13453fc5348f330cda7307dc8aa
6
+ metadata.gz: d23a9e140f80b25061906919c41bb190927b29d7658e3b619545baf2fade1958d0b36c6ec3f297d184591d7aff33bc369992b7959dd5cbf33ef19e0e760a2a37
7
+ data.tar.gz: 556c8e9fe7e60af0ade37b871e2bca0b783e14252821a6bb8a0c21dcb498fdc4bd223b026485428b5c9e280e250872d1f914c277bad95a1c5dce4ef042713705
@@ -1,3 +1,3 @@
1
1
  module LazyCrud
2
- VERSION = "0.9.2"
2
+ VERSION = "0.9.3"
3
3
  end
data/lib/lazy_crud.rb CHANGED
@@ -54,7 +54,7 @@ module LazyCrud
54
54
  end
55
55
 
56
56
  def create
57
- @resource = resource_proxy.build(resource_params)
57
+ @resource = resource_proxy.send(build_method, resource_params)
58
58
 
59
59
  # ensure we can still use model name-based instance variables
60
60
  set_resource_instance
@@ -105,8 +105,10 @@ module LazyCrud
105
105
  @resource = resource_proxy.find(params[:id])
106
106
  end
107
107
 
108
+ # use .try() on the params hash, in case the user forgot to provide
109
+ # the attributes
108
110
  def resource_params
109
- params[resource_singular_name].permit(self.class.param_whitelist)
111
+ params[resource_singular_name].try(:permit, self.class.param_whitelist)
110
112
  end
111
113
 
112
114
  # determines if we want to use the parent class if available or
@@ -125,6 +127,13 @@ module LazyCrud
125
127
  proxy
126
128
  end
127
129
 
130
+ # if the resource_proxy has a parent, we can use the
131
+ # build method. Otherwise, resource_proxy, is just the
132
+ # resource's class - in which case we'll use new
133
+ def build_method
134
+ resource_proxy.respond_to?(:build) ? :build : :new
135
+ end
136
+
128
137
  # allows all of our views to still use things like
129
138
  # @level, @event, @whatever
130
139
  # rather than just @resource
@@ -138,7 +147,7 @@ module LazyCrud
138
147
  end
139
148
 
140
149
  def parent_instance
141
- unless @parent
150
+ if (not @parent) and self.class.parent_class.present?
142
151
  # e.g.: Event => 'event'
143
152
  parent_instance_name = self.class.parent_class.name.underscore
144
153
  @parent = instance_variable_get("@#{parent_instance_name}")
@@ -1,5 +1,6 @@
1
1
  require 'rails_helper'
2
2
 
3
+ # this is a nested resource
3
4
  describe DiscountsController, type: :controller do
4
5
 
5
6
  before(:each) do
@@ -0,0 +1,89 @@
1
+ require 'rails_helper'
2
+
3
+ # standard, non-nested resource
4
+ describe UsersController, type: :controller do
5
+
6
+ describe '#index' do
7
+ it 'sets the collection' do
8
+ create(:user)
9
+ get :index
10
+
11
+ expect(assigns(:users)).to be_present
12
+ end
13
+ end
14
+
15
+ describe '#show' do
16
+
17
+ it 'gets the resource' do
18
+ user = create(:user)
19
+ get :show, id: user.id
20
+
21
+ expect(assigns(:user)).to eq user
22
+ end
23
+ end
24
+
25
+ describe '#new' do
26
+ it 'creates an instance of the object' do
27
+ get :new
28
+ expect(assigns(:user)).to be_new_record
29
+ end
30
+ end
31
+
32
+ describe '#edit' do
33
+
34
+
35
+ it 'sets the instance of the object' do
36
+ user = create(:user)
37
+ get :edit, id: user.id
38
+ expect(assigns(:user)).to eq user
39
+ end
40
+ end
41
+
42
+ describe '#create' do
43
+ it 'creates and persists a new object' do
44
+ expect{
45
+ post :create, user: build(:user).attributes
46
+ }.to change(User, :count).by 1
47
+
48
+ expect(assigns(:user)).to be_present
49
+ end
50
+
51
+ it 'does not create' do
52
+ expect{
53
+ post :create
54
+ }.to change(User, :count).by 0
55
+ end
56
+ end
57
+
58
+ describe '#update' do
59
+ it 'updates and persists changes' do
60
+ user = create(:user)
61
+ put :update, id: user.id,
62
+ user: { name: "updated" }
63
+
64
+ updated_user = assigns(:user)
65
+ expect(updated_user.name).to eq "updated"
66
+ end
67
+
68
+ it 'does not update' do
69
+ user = create(:user)
70
+ put :update, id: user.id, user: { name: "" }
71
+
72
+ updated_user = assigns(:user)
73
+ expect(updated_user.errors.full_messages.count).to eq 1
74
+ end
75
+ end
76
+
77
+
78
+ describe '#destroy' do
79
+ it 'destroys the object' do
80
+ user = create(:user)
81
+
82
+ expect{
83
+ delete :destroy, id: user.id
84
+ }.to change(User.all, :count).by -1
85
+ end
86
+ end
87
+
88
+
89
+ end
@@ -1,7 +1,7 @@
1
1
  FactoryGirl.define do
2
2
 
3
3
  factory :user do
4
-
4
+ name "a user"
5
5
  end
6
6
 
7
7
  factory :event do
@@ -1,9 +1,6 @@
1
1
  class User < ActiveRecord::Base
2
2
  has_many :events
3
3
 
4
- has_many :collaborated_events,
5
- through: :collaborations,
6
- source: :user
7
- has_many :collaborations
4
+ validates :name, presence: true, allow_blank: false
8
5
 
9
6
  end
@@ -0,0 +1,22 @@
1
+ require 'spec_helper'
2
+
3
+ describe LazyCrud do
4
+
5
+ class Example < ActionController::Base
6
+ include LazyCrud
7
+ end
8
+
9
+
10
+ describe '#build_method' do
11
+
12
+ it 'uses build when the resource_proxy is a class' do
13
+ example = Example.new
14
+ allow(example).to receive(:resource_proxy){ Example }
15
+
16
+ expect(example.send(:build_method)).to eq :new
17
+ end
18
+
19
+ end
20
+
21
+
22
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lazy_crud
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.2
4
+ version: 0.9.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - L. Preston Sego III
@@ -197,6 +197,7 @@ files:
197
197
  - lib/lazy_crud.rb
198
198
  - lib/lazy_crud/version.rb
199
199
  - spec/integration/discounts_controller_spec.rb
200
+ - spec/integration/users_controller_spec.rb
200
201
  - spec/rails_helper.rb
201
202
  - spec/spec_helper.rb
202
203
  - spec/support/factories.rb
@@ -296,9 +297,10 @@ rubyforge_project:
296
297
  rubygems_version: 2.4.6
297
298
  signing_key:
298
299
  specification_version: 4
299
- summary: LazyCrud-0.9.2
300
+ summary: LazyCrud-0.9.3
300
301
  test_files:
301
302
  - spec/integration/discounts_controller_spec.rb
303
+ - spec/integration/users_controller_spec.rb
302
304
  - spec/rails_helper.rb
303
305
  - spec/spec_helper.rb
304
306
  - spec/support/factories.rb