pg_rails 7.0.6 → 7.0.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +13 -0
- data/pg_associable/lib/pg_associable/engine.rb +0 -4
- data/pg_associable/spec/pg_associable/helpers_spec.rb +4 -3
- data/pg_engine/app/admin/accounts.rb +25 -0
- data/pg_engine/{lib/templates/activeadmin → app/admin}/audits.rb +3 -3
- data/pg_engine/app/admin/dashboard.rb +34 -0
- data/pg_engine/app/admin/user_accounts.rb +26 -0
- data/pg_engine/{lib/templates/activeadmin → app/admin}/users.rb +1 -2
- data/pg_engine/app/assets/javascripts/active_admin.js +1 -0
- data/pg_engine/app/assets/stylesheets/active_admin.scss +17 -0
- data/pg_engine/app/controllers/admin/accounts_controller.rb +33 -0
- data/pg_engine/app/controllers/admin/user_accounts_controller.rb +33 -0
- data/pg_engine/app/controllers/admin/users_controller.rb +47 -0
- data/pg_engine/app/controllers/pg_engine/resource_helper.rb +1 -0
- data/pg_engine/app/decorators/account_decorator.rb +16 -0
- data/pg_engine/app/decorators/user_account_decorator.rb +19 -0
- data/pg_engine/app/decorators/user_decorator.rb +20 -0
- data/pg_engine/app/helpers/pg_engine/flash_helper.rb +1 -1
- data/pg_engine/app/models/account.rb +39 -0
- data/pg_engine/app/models/user.rb +61 -0
- data/pg_engine/app/models/user_account.rb +46 -0
- data/pg_engine/app/policies/account_policy.rb +31 -0
- data/pg_engine/app/policies/pg_engine/application_policy.rb +1 -1
- data/pg_engine/app/policies/user_account_policy.rb +31 -0
- data/pg_engine/app/policies/user_policy.rb +31 -0
- data/pg_engine/app/views/admin/accounts/_account.html.slim +1 -0
- data/pg_engine/app/views/admin/accounts/_form.html.slim +12 -0
- data/pg_engine/app/views/admin/accounts/edit.html.slim +5 -0
- data/pg_engine/app/views/admin/accounts/new.html.slim +5 -0
- data/pg_engine/app/views/admin/accounts/show.html.slim +27 -0
- data/pg_engine/app/views/admin/user_accounts/_form.html.slim +12 -0
- data/pg_engine/app/views/admin/user_accounts/_user_account.html.slim +1 -0
- data/pg_engine/app/views/admin/user_accounts/edit.html.slim +5 -0
- data/pg_engine/app/views/admin/user_accounts/new.html.slim +5 -0
- data/pg_engine/app/views/admin/user_accounts/show.html.slim +24 -0
- data/pg_engine/app/views/admin/users/_form.html.slim +12 -0
- data/pg_engine/app/views/admin/users/_user.html.slim +1 -0
- data/pg_engine/app/views/admin/users/edit.html.slim +5 -0
- data/pg_engine/app/views/admin/users/new.html.slim +5 -0
- data/pg_engine/app/views/admin/users/show.html.slim +27 -0
- data/pg_engine/config/initializers/active_admin.rb +355 -0
- data/pg_engine/config/initializers/devise.rb +313 -0
- data/pg_engine/config/locales/devise.en.yml +65 -0
- data/pg_engine/config/routes.rb +11 -0
- data/pg_engine/db/migrate/20240205194218_devise_create_users.rb +47 -0
- data/pg_engine/db/migrate/20240208234111_unaccent.rb +5 -0
- data/pg_engine/db/migrate/20240208234901_install_audited.rb +32 -0
- data/pg_engine/db/migrate/20240210025702_create_active_admin_comments.rb +16 -0
- data/pg_engine/db/migrate/20240211152951_create_accounts.rb +24 -0
- data/pg_engine/db/migrate/20240211153049_create_user_accounts.rb +20 -0
- data/pg_engine/db/seeds.rb +5 -0
- data/pg_engine/lib/pg_engine/engine.rb +16 -2
- data/pg_engine/spec/controllers/admin/accounts_controller_spec.rb +206 -0
- data/pg_engine/spec/controllers/admin/user_accounts_controller_spec.rb +189 -0
- data/pg_engine/spec/controllers/admin/users_controller_spec.rb +180 -0
- data/pg_engine/spec/factories/accounts.rb +11 -0
- data/pg_engine/spec/factories/user_accounts.rb +21 -0
- data/pg_engine/spec/factories/users.rb +59 -0
- data/pg_engine/spec/models/account_spec.rb +13 -0
- data/pg_engine/spec/models/user_account_spec.rb +13 -0
- data/pg_engine/spec/models/user_spec.rb +13 -0
- data/pg_layout/lib/pg_layout/engine.rb +0 -1
- data/pg_rails/lib/version.rb +1 -1
- data/pg_scaffold/lib/generators/pg_pundit/templates/policy.rb +1 -1
- data/pg_scaffold/lib/generators/pg_rspec/scaffold/templates/controller_spec.rb +4 -4
- data/pg_scaffold/spec/generators_spec.rb +1 -1
- metadata +56 -4
@@ -0,0 +1,206 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# generado con pg_rails
|
4
|
+
|
5
|
+
require 'rails_helper'
|
6
|
+
|
7
|
+
# This spec was generated by rspec-rails when you ran the scaffold generator.
|
8
|
+
# It demonstrates how one might use RSpec to specify the controller code that
|
9
|
+
# was generated by Rails when you ran the scaffold generator.
|
10
|
+
#
|
11
|
+
# It assumes that the implementation code is generated by the rails scaffold
|
12
|
+
# generator. If you are using any extension libraries to generate different
|
13
|
+
# controller code, this generated spec may or may not pass.
|
14
|
+
#
|
15
|
+
# It only uses APIs available in rails and/or rspec-rails. There are a number
|
16
|
+
# of tools you can use to make these specs even more expressive, but we're
|
17
|
+
# sticking to rails and rspec-rails APIs to keep things simple and stable.
|
18
|
+
#
|
19
|
+
# Compared to earlier versions of this generator, there is very limited use of
|
20
|
+
# stubs and message expectations in this spec. Stubs are only used when there
|
21
|
+
# is no simpler way to get a handle on the object needed for the example.
|
22
|
+
# Message expectations are only used when there is no simpler way to specify
|
23
|
+
# that an instance is receiving a specific message.
|
24
|
+
#
|
25
|
+
# Also compared to earlier versions of this generator, there are no longer any
|
26
|
+
# expectations of assigns and templates rendered. These features have been
|
27
|
+
# removed from Rails core in Rails 5, but can be added back in via the
|
28
|
+
# `rails-controller-testing` gem.
|
29
|
+
|
30
|
+
RSpec.describe Admin::AccountsController do
|
31
|
+
render_views
|
32
|
+
# This should return the minimal set of attributes required to create a valid
|
33
|
+
# Account. As you add validations to Account, be sure to
|
34
|
+
# adjust the attributes here as well.
|
35
|
+
let(:valid_attributes) do
|
36
|
+
attributes_for(:account)
|
37
|
+
end
|
38
|
+
|
39
|
+
let(:invalid_attributes) do
|
40
|
+
{
|
41
|
+
plan: nil
|
42
|
+
}
|
43
|
+
end
|
44
|
+
|
45
|
+
let(:user) { create :user, :admin }
|
46
|
+
|
47
|
+
before do
|
48
|
+
sign_in user if user.present?
|
49
|
+
end
|
50
|
+
|
51
|
+
describe 'routing' do
|
52
|
+
it 'routes GET index correctly' do
|
53
|
+
route = { get: '/a/accounts' }
|
54
|
+
expect(route).to route_to(controller: 'admin/accounts', action: 'index')
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
describe 'GET #index' do
|
59
|
+
subject do
|
60
|
+
get :index, params: {}
|
61
|
+
end
|
62
|
+
|
63
|
+
let!(:account) { create :account }
|
64
|
+
|
65
|
+
it 'returns a success response' do
|
66
|
+
subject
|
67
|
+
expect(response).to be_successful
|
68
|
+
end
|
69
|
+
|
70
|
+
context 'when user is not logged in' do
|
71
|
+
let(:user) { nil }
|
72
|
+
|
73
|
+
it 'redirects to login path' do
|
74
|
+
subject
|
75
|
+
expect(response).to redirect_to(new_user_session_path)
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
context 'when está descartado' do
|
80
|
+
before { account.discard! }
|
81
|
+
|
82
|
+
it do
|
83
|
+
subject
|
84
|
+
expect(assigns(:collection)).not_to include(account)
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
context 'when se pide el excel' do
|
89
|
+
subject do
|
90
|
+
get :index, params: {}, format: 'xlsx'
|
91
|
+
end
|
92
|
+
|
93
|
+
it 'returns a success response' do
|
94
|
+
subject
|
95
|
+
expect(response).to be_successful
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
describe 'GET #show' do
|
101
|
+
it 'returns a success response' do
|
102
|
+
account = create(:account)
|
103
|
+
get :show, params: { id: account.to_param }
|
104
|
+
expect(response).to be_successful
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
108
|
+
describe 'GET #new' do
|
109
|
+
it 'returns a success response' do
|
110
|
+
get :new, params: {}
|
111
|
+
expect(response).to be_successful
|
112
|
+
end
|
113
|
+
end
|
114
|
+
|
115
|
+
describe 'GET #edit' do
|
116
|
+
it 'returns a success response' do
|
117
|
+
account = create(:account)
|
118
|
+
get :edit, params: { id: account.to_param }
|
119
|
+
expect(response).to be_successful
|
120
|
+
end
|
121
|
+
end
|
122
|
+
|
123
|
+
describe 'POST #create' do
|
124
|
+
context 'with valid params' do
|
125
|
+
it 'creates a new Account' do
|
126
|
+
expect do
|
127
|
+
post :create, params: { account: valid_attributes }
|
128
|
+
end.to change(Account, :count).by(1)
|
129
|
+
end
|
130
|
+
|
131
|
+
it 'redirects to the created account' do
|
132
|
+
post :create, params: { account: valid_attributes }
|
133
|
+
expect(response).to redirect_to(Account.last.decorate.target_object)
|
134
|
+
end
|
135
|
+
end
|
136
|
+
|
137
|
+
context 'with invalid params' do
|
138
|
+
it 'returns a unprocessable_entity response' do
|
139
|
+
post :create, params: { account: invalid_attributes }
|
140
|
+
expect(response).to have_http_status(:unprocessable_entity)
|
141
|
+
end
|
142
|
+
|
143
|
+
it 'renders the new template' do
|
144
|
+
post :create, params: { account: invalid_attributes }
|
145
|
+
expect(response).to render_template(:new)
|
146
|
+
end
|
147
|
+
end
|
148
|
+
end
|
149
|
+
|
150
|
+
describe 'PUT #update' do
|
151
|
+
context 'with valid params' do
|
152
|
+
let(:new_attributes) do
|
153
|
+
attributes_for(:account)
|
154
|
+
end
|
155
|
+
|
156
|
+
it 'updates the requested account' do
|
157
|
+
account = create(:account)
|
158
|
+
put :update, params: { id: account.to_param, account: new_attributes }
|
159
|
+
account.reload
|
160
|
+
expect(account.plan).to eq new_attributes[:plan]
|
161
|
+
end
|
162
|
+
|
163
|
+
it 'redirects to the account' do
|
164
|
+
account = create(:account)
|
165
|
+
put :update, params: { id: account.to_param, account: valid_attributes }
|
166
|
+
expect(response).to redirect_to(account.decorate.target_object)
|
167
|
+
end
|
168
|
+
end
|
169
|
+
|
170
|
+
context 'with invalid params' do
|
171
|
+
it 'returns a unprocessable_entity response' do
|
172
|
+
account = create(:account)
|
173
|
+
put :update, params: { id: account.to_param, account: invalid_attributes }
|
174
|
+
expect(response).to have_http_status(:unprocessable_entity)
|
175
|
+
end
|
176
|
+
|
177
|
+
it 'renders the edit template' do
|
178
|
+
account = create(:account)
|
179
|
+
put :update, params: { id: account.to_param, account: invalid_attributes }
|
180
|
+
expect(response).to render_template(:edit)
|
181
|
+
end
|
182
|
+
end
|
183
|
+
end
|
184
|
+
|
185
|
+
describe 'DELETE #destroy' do
|
186
|
+
subject do
|
187
|
+
delete :destroy, params: { id: account.to_param }
|
188
|
+
end
|
189
|
+
|
190
|
+
let!(:account) { create :account }
|
191
|
+
|
192
|
+
it 'destroys the requested account' do
|
193
|
+
expect { subject }.to change(Account.kept, :count).by(-1)
|
194
|
+
end
|
195
|
+
|
196
|
+
it 'setea el discarded_at' do
|
197
|
+
subject
|
198
|
+
expect(account.reload.discarded_at).to be_present
|
199
|
+
end
|
200
|
+
|
201
|
+
it 'redirects to the accounts list' do
|
202
|
+
subject
|
203
|
+
expect(response).to redirect_to(admin_accounts_url)
|
204
|
+
end
|
205
|
+
end
|
206
|
+
end
|
@@ -0,0 +1,189 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# generado con pg_rails
|
4
|
+
|
5
|
+
require 'rails_helper'
|
6
|
+
|
7
|
+
# This spec was generated by rspec-rails when you ran the scaffold generator.
|
8
|
+
# It demonstrates how one might use RSpec to specify the controller code that
|
9
|
+
# was generated by Rails when you ran the scaffold generator.
|
10
|
+
#
|
11
|
+
# It assumes that the implementation code is generated by the rails scaffold
|
12
|
+
# generator. If you are using any extension libraries to generate different
|
13
|
+
# controller code, this generated spec may or may not pass.
|
14
|
+
#
|
15
|
+
# It only uses APIs available in rails and/or rspec-rails. There are a number
|
16
|
+
# of tools you can use to make these specs even more expressive, but we're
|
17
|
+
# sticking to rails and rspec-rails APIs to keep things simple and stable.
|
18
|
+
#
|
19
|
+
# Compared to earlier versions of this generator, there is very limited use of
|
20
|
+
# stubs and message expectations in this spec. Stubs are only used when there
|
21
|
+
# is no simpler way to get a handle on the object needed for the example.
|
22
|
+
# Message expectations are only used when there is no simpler way to specify
|
23
|
+
# that an instance is receiving a specific message.
|
24
|
+
#
|
25
|
+
# Also compared to earlier versions of this generator, there are no longer any
|
26
|
+
# expectations of assigns and templates rendered. These features have been
|
27
|
+
# removed from Rails core in Rails 5, but can be added back in via the
|
28
|
+
# `rails-controller-testing` gem.
|
29
|
+
|
30
|
+
RSpec.describe Admin::UserAccountsController do
|
31
|
+
render_views
|
32
|
+
let(:user) { create :orphan_user }
|
33
|
+
|
34
|
+
let(:account) { create :account }
|
35
|
+
|
36
|
+
# This should return the minimal set of attributes required to create a valid
|
37
|
+
# UserAccount. As you add validations to UserAccount, be sure to
|
38
|
+
# adjust the attributes here as well.
|
39
|
+
let(:valid_attributes) do
|
40
|
+
attributes_for(:user_account).merge(user_id: user.id, account_id: account.id)
|
41
|
+
end
|
42
|
+
|
43
|
+
let(:invalid_attributes) do
|
44
|
+
{
|
45
|
+
user_id: nil
|
46
|
+
}
|
47
|
+
end
|
48
|
+
|
49
|
+
let(:logged_user) { create :user, :developer }
|
50
|
+
|
51
|
+
before do
|
52
|
+
sign_in logged_user if logged_user.present?
|
53
|
+
end
|
54
|
+
|
55
|
+
describe 'routing' do
|
56
|
+
it 'routes GET index correctly' do
|
57
|
+
route = { get: '/a/user_accounts' }
|
58
|
+
expect(route).to route_to(controller: 'admin/user_accounts', action: 'index')
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
describe 'GET #index' do
|
63
|
+
subject do
|
64
|
+
get :index, params: {}
|
65
|
+
end
|
66
|
+
|
67
|
+
before { create :user_account }
|
68
|
+
|
69
|
+
it 'returns a success response' do
|
70
|
+
subject
|
71
|
+
expect(response).to be_successful
|
72
|
+
end
|
73
|
+
|
74
|
+
context 'when user is not logged in' do
|
75
|
+
let(:logged_user) { nil }
|
76
|
+
|
77
|
+
it 'redirects to login path' do
|
78
|
+
subject
|
79
|
+
expect(response).to redirect_to(new_user_session_path)
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
context 'when se pide el excel' do
|
84
|
+
subject do
|
85
|
+
get :index, params: {}, format: 'xlsx'
|
86
|
+
end
|
87
|
+
|
88
|
+
it 'returns a success response' do
|
89
|
+
subject
|
90
|
+
expect(response).to be_successful
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
describe 'GET #show' do
|
96
|
+
it 'returns a success response' do
|
97
|
+
user_account = create(:user_account)
|
98
|
+
get :show, params: { id: user_account.to_param }
|
99
|
+
expect(response).to be_successful
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
describe 'GET #new' do
|
104
|
+
it 'returns a success response' do
|
105
|
+
get :new, params: {}
|
106
|
+
expect(response).to be_successful
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
110
|
+
describe 'GET #edit' do
|
111
|
+
it 'returns a success response' do
|
112
|
+
user_account = create(:user_account)
|
113
|
+
get :edit, params: { id: user_account.to_param }
|
114
|
+
expect(response).to be_successful
|
115
|
+
end
|
116
|
+
end
|
117
|
+
|
118
|
+
describe 'POST #create' do
|
119
|
+
context 'with valid params' do
|
120
|
+
it 'creates a new UserAccount' do
|
121
|
+
expect do
|
122
|
+
post :create, params: { user_account: valid_attributes }
|
123
|
+
end.to change(UserAccount, :count).by(1)
|
124
|
+
end
|
125
|
+
|
126
|
+
it 'redirects to the created user_account' do
|
127
|
+
post :create, params: { user_account: valid_attributes }
|
128
|
+
expect(response).to redirect_to(UserAccount.last.decorate.target_object)
|
129
|
+
end
|
130
|
+
end
|
131
|
+
|
132
|
+
context 'with invalid params' do
|
133
|
+
it 'returns a unprocessable_entity response' do
|
134
|
+
post :create, params: { user_account: invalid_attributes }
|
135
|
+
expect(response).to have_http_status(:unprocessable_entity)
|
136
|
+
end
|
137
|
+
|
138
|
+
it 'renders the new template' do
|
139
|
+
post :create, params: { user_account: invalid_attributes }
|
140
|
+
expect(response).to render_template(:new)
|
141
|
+
end
|
142
|
+
end
|
143
|
+
end
|
144
|
+
|
145
|
+
describe 'PUT #update' do
|
146
|
+
context 'with valid params' do
|
147
|
+
let(:new_attributes) do
|
148
|
+
attributes_for(:user_account)
|
149
|
+
end
|
150
|
+
|
151
|
+
it 'redirects to the user_account' do
|
152
|
+
user_account = create(:user_account)
|
153
|
+
put :update, params: { id: user_account.to_param, user_account: valid_attributes }
|
154
|
+
expect(response).to redirect_to(user_account.decorate.target_object)
|
155
|
+
end
|
156
|
+
end
|
157
|
+
|
158
|
+
context 'with invalid params' do
|
159
|
+
it 'returns a unprocessable_entity response' do
|
160
|
+
user_account = create(:user_account)
|
161
|
+
put :update, params: { id: user_account.to_param, user_account: invalid_attributes }
|
162
|
+
expect(response).to have_http_status(:unprocessable_entity)
|
163
|
+
end
|
164
|
+
|
165
|
+
it 'renders the edit template' do
|
166
|
+
user_account = create(:user_account)
|
167
|
+
put :update, params: { id: user_account.to_param, user_account: invalid_attributes }
|
168
|
+
expect(response).to render_template(:edit)
|
169
|
+
end
|
170
|
+
end
|
171
|
+
end
|
172
|
+
|
173
|
+
describe 'DELETE #destroy' do
|
174
|
+
subject do
|
175
|
+
delete :destroy, params: { id: user_account.to_param }
|
176
|
+
end
|
177
|
+
|
178
|
+
let!(:user_account) { create :user_account }
|
179
|
+
|
180
|
+
it 'destroys the requested user_account' do
|
181
|
+
expect { subject }.to change(UserAccount, :count).by(-1)
|
182
|
+
end
|
183
|
+
|
184
|
+
it 'redirects to the user_accounts list' do
|
185
|
+
subject
|
186
|
+
expect(response).to redirect_to(admin_user_accounts_url)
|
187
|
+
end
|
188
|
+
end
|
189
|
+
end
|
@@ -0,0 +1,180 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# generado con pg_rails
|
4
|
+
|
5
|
+
require 'rails_helper'
|
6
|
+
|
7
|
+
# This spec was generated by rspec-rails when you ran the scaffold generator.
|
8
|
+
# It demonstrates how one might use RSpec to specify the controller code that
|
9
|
+
# was generated by Rails when you ran the scaffold generator.
|
10
|
+
#
|
11
|
+
# It assumes that the implementation code is generated by the rails scaffold
|
12
|
+
# generator. If you are using any extension libraries to generate different
|
13
|
+
# controller code, this generated spec may or may not pass.
|
14
|
+
#
|
15
|
+
# It only uses APIs available in rails and/or rspec-rails. There are a number
|
16
|
+
# of tools you can use to make these specs even more expressive, but we're
|
17
|
+
# sticking to rails and rspec-rails APIs to keep things simple and stable.
|
18
|
+
#
|
19
|
+
# Compared to earlier versions of this generator, there is very limited use of
|
20
|
+
# stubs and message expectations in this spec. Stubs are only used when there
|
21
|
+
# is no simpler way to get a handle on the object needed for the example.
|
22
|
+
# Message expectations are only used when there is no simpler way to specify
|
23
|
+
# that an instance is receiving a specific message.
|
24
|
+
#
|
25
|
+
# Also compared to earlier versions of this generator, there are no longer any
|
26
|
+
# expectations of assigns and templates rendered. These features have been
|
27
|
+
# removed from Rails core in Rails 5, but can be added back in via the
|
28
|
+
# `rails-controller-testing` gem.
|
29
|
+
|
30
|
+
RSpec.describe Admin::UsersController do
|
31
|
+
render_views
|
32
|
+
|
33
|
+
# This should return the minimal set of attributes required to create a valid
|
34
|
+
# User. As you add validations to User, be sure to
|
35
|
+
# adjust the attributes here as well.
|
36
|
+
let(:valid_attributes) do
|
37
|
+
attributes_for(:user)
|
38
|
+
end
|
39
|
+
|
40
|
+
let(:invalid_attributes) do
|
41
|
+
{
|
42
|
+
email: nil
|
43
|
+
}
|
44
|
+
end
|
45
|
+
|
46
|
+
let(:logger_user) { create :user, :admin }
|
47
|
+
|
48
|
+
before do
|
49
|
+
sign_in logger_user
|
50
|
+
end
|
51
|
+
|
52
|
+
describe 'GET #index' do
|
53
|
+
subject do
|
54
|
+
get :index, params: {}
|
55
|
+
end
|
56
|
+
|
57
|
+
let!(:user) { create :user }
|
58
|
+
|
59
|
+
it 'returns a success response' do
|
60
|
+
subject
|
61
|
+
expect(response).to be_successful
|
62
|
+
end
|
63
|
+
|
64
|
+
context 'when está descartado' do
|
65
|
+
before { user.discard! }
|
66
|
+
|
67
|
+
it do
|
68
|
+
subject
|
69
|
+
expect(assigns(:collection)).to eq [logger_user]
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
describe 'GET #show' do
|
75
|
+
it 'returns a success response' do
|
76
|
+
user = create(:user)
|
77
|
+
get :show, params: { id: user.to_param }
|
78
|
+
expect(response).to be_successful
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
describe 'GET #new' do
|
83
|
+
it 'returns a success response' do
|
84
|
+
get :new, params: {}
|
85
|
+
expect(response).to be_successful
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
describe 'GET #edit' do
|
90
|
+
it 'returns a success response' do
|
91
|
+
user = create(:user)
|
92
|
+
get :edit, params: { id: user.to_param }
|
93
|
+
expect(response).to be_successful
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
describe 'POST #create' do
|
98
|
+
context 'with valid params' do
|
99
|
+
it 'creates a new User' do
|
100
|
+
expect do
|
101
|
+
post :create, params: { user: valid_attributes }
|
102
|
+
end.to change(User, :count).by(1)
|
103
|
+
end
|
104
|
+
|
105
|
+
it 'redirects to the created user' do
|
106
|
+
post :create, params: { user: valid_attributes }
|
107
|
+
expect(response).to redirect_to(User.last.decorate.target_object)
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
111
|
+
context 'with invalid params' do
|
112
|
+
it 'returns a unprocessable_entity response' do
|
113
|
+
post :create, params: { user: invalid_attributes }
|
114
|
+
expect(response).to have_http_status(:unprocessable_entity)
|
115
|
+
end
|
116
|
+
|
117
|
+
it 'renders the new template' do
|
118
|
+
post :create, params: { user: invalid_attributes }
|
119
|
+
expect(response).to render_template(:new)
|
120
|
+
end
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
124
|
+
describe 'PUT #update' do
|
125
|
+
context 'with valid params' do
|
126
|
+
let(:new_attributes) do
|
127
|
+
attributes_for(:user)
|
128
|
+
end
|
129
|
+
|
130
|
+
it 'updates the requested user' do
|
131
|
+
user = create(:user)
|
132
|
+
put :update, params: { id: user.to_param, user: new_attributes }
|
133
|
+
user.reload
|
134
|
+
expect(user.email).to eq new_attributes[:email]
|
135
|
+
end
|
136
|
+
|
137
|
+
it 'redirects to the user' do
|
138
|
+
user = create(:user)
|
139
|
+
put :update, params: { id: user.to_param, user: valid_attributes }
|
140
|
+
expect(response).to redirect_to(user.decorate.target_object)
|
141
|
+
end
|
142
|
+
end
|
143
|
+
|
144
|
+
context 'with invalid params' do
|
145
|
+
it 'returns a unprocessable_entity response' do
|
146
|
+
user = create(:user)
|
147
|
+
put :update, params: { id: user.to_param, user: invalid_attributes }
|
148
|
+
expect(response).to have_http_status(:unprocessable_entity)
|
149
|
+
end
|
150
|
+
|
151
|
+
it 'renders the edit template' do
|
152
|
+
user = create(:user)
|
153
|
+
put :update, params: { id: user.to_param, user: invalid_attributes }
|
154
|
+
expect(response).to render_template(:edit)
|
155
|
+
end
|
156
|
+
end
|
157
|
+
end
|
158
|
+
|
159
|
+
describe 'DELETE #destroy' do
|
160
|
+
subject do
|
161
|
+
delete :destroy, params: { id: user.to_param }
|
162
|
+
end
|
163
|
+
|
164
|
+
let!(:user) { create :user }
|
165
|
+
|
166
|
+
it 'destroys the requested user' do
|
167
|
+
expect { subject }.to change(User.kept, :count).by(-1)
|
168
|
+
end
|
169
|
+
|
170
|
+
it 'setea el discarded_at' do
|
171
|
+
subject
|
172
|
+
expect(user.reload.discarded_at).to be_present
|
173
|
+
end
|
174
|
+
|
175
|
+
it 'redirects to the users list' do
|
176
|
+
subject
|
177
|
+
expect(response).to redirect_to(admin_users_url)
|
178
|
+
end
|
179
|
+
end
|
180
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# generado con pg_rails
|
4
|
+
|
5
|
+
FactoryBot.define do
|
6
|
+
factory :user_account do
|
7
|
+
association :user
|
8
|
+
association :account
|
9
|
+
profiles { [UserAccount.profiles.values.sample] }
|
10
|
+
|
11
|
+
trait :user_existente do
|
12
|
+
user { nil }
|
13
|
+
user_id { User.pluck(:id).sample }
|
14
|
+
end
|
15
|
+
|
16
|
+
trait :account_existente do
|
17
|
+
account { nil }
|
18
|
+
account_id { Account.pluck(:id).sample }
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,59 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# == Schema Information
|
4
|
+
#
|
5
|
+
# Table name: users
|
6
|
+
#
|
7
|
+
# id :bigint not null, primary key
|
8
|
+
# confirmation_sent_at :datetime
|
9
|
+
# confirmation_token :string
|
10
|
+
# confirmed_at :datetime
|
11
|
+
# current_sign_in_at :datetime
|
12
|
+
# current_sign_in_ip :string
|
13
|
+
# discarded_at :datetime
|
14
|
+
# email :string default(""), not null
|
15
|
+
# encrypted_password :string default(""), not null
|
16
|
+
# failed_attempts :integer default(0), not null
|
17
|
+
# last_sign_in_at :datetime
|
18
|
+
# last_sign_in_ip :string
|
19
|
+
# locked_at :datetime
|
20
|
+
# profiles :integer default([]), not null, is an Array
|
21
|
+
# remember_created_at :datetime
|
22
|
+
# reset_password_sent_at :datetime
|
23
|
+
# reset_password_token :string
|
24
|
+
# sign_in_count :integer default(0), not null
|
25
|
+
# unconfirmed_email :string
|
26
|
+
# unlock_token :string
|
27
|
+
# created_at :datetime not null
|
28
|
+
# updated_at :datetime not null
|
29
|
+
#
|
30
|
+
# Indexes
|
31
|
+
#
|
32
|
+
# index_users_on_confirmation_token (confirmation_token) UNIQUE
|
33
|
+
# index_users_on_email (email) UNIQUE
|
34
|
+
# index_users_on_reset_password_token (reset_password_token) UNIQUE
|
35
|
+
# index_users_on_unlock_token (unlock_token) UNIQUE
|
36
|
+
#
|
37
|
+
|
38
|
+
FactoryBot.define do
|
39
|
+
factory :orphan_user, class: 'User' do
|
40
|
+
email { Faker::Internet.email }
|
41
|
+
password { "password#{rand(99_999)}" }
|
42
|
+
confirmed_at { Faker::Date.backward }
|
43
|
+
|
44
|
+
trait :admin do
|
45
|
+
developer { true }
|
46
|
+
end
|
47
|
+
|
48
|
+
trait :developer do
|
49
|
+
developer { true }
|
50
|
+
end
|
51
|
+
|
52
|
+
factory :user do
|
53
|
+
after(:create) do |user, _context|
|
54
|
+
account = create :account
|
55
|
+
create :user_account, user:, account:
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|