base_editing_bootstrap 0.4.2 → 0.6.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 +4 -4
- data/CHANGELOG.md +23 -0
- data/README.md +44 -0
- data/app/controllers/base_editing_controller.rb +5 -1
- data/app/helpers/utilities/form_helper.rb +16 -16
- data/lib/base_editing_bootstrap/VERSION +1 -1
- data/lib/generators/base_editing_bootstrap/install/install_generator.rb +1 -0
- data/lib/generators/base_editing_bootstrap/install/templates/initializer.rb +3 -3
- data/spec/support/external_shared/base_editing_controller_helpers.rb +6 -3
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3f75c92251f46045d20902120b1796ad0804dbfd632b0ddd77669a6f4f7ab35c
|
4
|
+
data.tar.gz: 9e87df84d2fc30d8f981095cc3304479c1629b25cf0daa14746a78d83dba5245
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3ded9cc6fbff9ae4515f98530596a444f3b18760dc5677b0ae9f5c9b96056287d08500f5a691fb2bcf926709151e79d7af7d4da235dbcd129aa7db4d3d4f520d
|
7
|
+
data.tar.gz: 6d22f81c4ecf3db3a7413f0fa42ac35b01ffa1e36a570d9cbc412e5daa5a49c9abc3659f63613e7c194cac8b3a417b52de0e5dc2d243799b7faf9dfc5d255213
|
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,29 @@
|
|
2
2
|
All notable changes to this project will be documented in this file. See [conventional commits](https://www.conventionalcommits.org/) for commit guidelines.
|
3
3
|
|
4
4
|
- - -
|
5
|
+
## 0.6.0 - 2024-05-29
|
6
|
+
#### Bug Fixes
|
7
|
+
- Add dependency in generator - (b911b1a) - Marino Bonetti
|
8
|
+
#### Documentation
|
9
|
+
- Add documentation for specs - (42a88ca) - Marino Bonetti
|
10
|
+
#### Features
|
11
|
+
- Add Capacity to skip un-authorization - (c83c51c) - Marino Bonetti
|
12
|
+
#### Tests
|
13
|
+
- Add spec for test env - (b8611d7) - Marino Bonetti
|
14
|
+
|
15
|
+
- - -
|
16
|
+
|
17
|
+
## 0.5.0 - 2024-05-22
|
18
|
+
#### Bug Fixes
|
19
|
+
- Correct initializer commented examples - (ba90fba) - Marino Bonetti
|
20
|
+
#### Features
|
21
|
+
- Action for Show enabled - (d364ed3) - Marino Bonetti
|
22
|
+
- Enums with Integer identified - (4fa9e87) - Marino Bonetti
|
23
|
+
#### Tests
|
24
|
+
- Save example_status_persistence_file_path - (235939d) - Marino Bonetti
|
25
|
+
|
26
|
+
- - -
|
27
|
+
|
5
28
|
## 0.4.2 - 2024-05-08
|
6
29
|
#### Bug Fixes
|
7
30
|
- Rename shared example for cluck with apps - (41638f8) - Marino Bonetti
|
data/README.md
CHANGED
@@ -170,6 +170,50 @@ Utilizzo per modello base, in questo esempio prendiamo come modello Post come es
|
|
170
170
|
#...
|
171
171
|
```
|
172
172
|
|
173
|
+
## Testing helpers
|
174
|
+
|
175
|
+
### Requirements(installed with generators)
|
176
|
+
```ruby
|
177
|
+
group :test do
|
178
|
+
gem 'rails-controller-testing'
|
179
|
+
end
|
180
|
+
```
|
181
|
+
### Usage
|
182
|
+
Controllers:
|
183
|
+
```ruby
|
184
|
+
require 'rails_helper'
|
185
|
+
RSpec.describe "ServiceControllers", type: :request do
|
186
|
+
it_behaves_like "as logged in user" do
|
187
|
+
it_behaves_like "base editing controller", factory: :service
|
188
|
+
end
|
189
|
+
end
|
190
|
+
```
|
191
|
+
Model:
|
192
|
+
```ruby
|
193
|
+
require 'rails_helper'
|
194
|
+
RSpec.describe Service, type: :model do
|
195
|
+
it_behaves_like "a base model",
|
196
|
+
ransack_permitted_attributes: %w[created_at id last_status name stack_id updated_at],
|
197
|
+
ransack_permitted_associations: []
|
198
|
+
end
|
199
|
+
```
|
200
|
+
Policy
|
201
|
+
```ruby
|
202
|
+
require 'rails_helper'
|
203
|
+
##
|
204
|
+
# - check_default_responses default false, to check default responses
|
205
|
+
# TODO should be configurable
|
206
|
+
# [:show?, false],
|
207
|
+
# [:destroy?, true],
|
208
|
+
# [:update?, true],
|
209
|
+
# [:create?, true],
|
210
|
+
# [:index?, true],
|
211
|
+
#
|
212
|
+
RSpec.describe ServicePolicy, type: :policy do
|
213
|
+
it_behaves_like "a standard base model policy", :service, check_default_responses: false
|
214
|
+
end
|
215
|
+
```
|
216
|
+
|
173
217
|
|
174
218
|
## Contributing
|
175
219
|
Contribution directions go here.
|
@@ -1,5 +1,5 @@
|
|
1
1
|
class BaseEditingController < RestrictedAreaController
|
2
|
-
before_action :load_object, only: [:edit, :update, :destroy]
|
2
|
+
before_action :load_object, only: [:edit, :show, :update, :destroy]
|
3
3
|
helper_method :base_class,
|
4
4
|
:destroy_custom_polymorphic_path,
|
5
5
|
:edit_custom_polymorphic_path,
|
@@ -32,6 +32,10 @@ class BaseEditingController < RestrictedAreaController
|
|
32
32
|
@object = yield(@object) if block_given?
|
33
33
|
end
|
34
34
|
|
35
|
+
def show
|
36
|
+
@object = yield(@object) if block_given?
|
37
|
+
end
|
38
|
+
|
35
39
|
def update
|
36
40
|
@object = yield(@object) if block_given?
|
37
41
|
respond_to do |format|
|
@@ -18,23 +18,23 @@ module Utilities
|
|
18
18
|
# @param [Symbol] field
|
19
19
|
def form_print_field(form, field)
|
20
20
|
locals = {form:, field:}
|
21
|
-
|
22
|
-
|
23
|
-
when :datetime
|
24
|
-
generic_field = "datetime"
|
25
|
-
when :date
|
26
|
-
generic_field = "date"
|
27
|
-
when :decimal
|
28
|
-
locals[:scale] = form.object.class.type_for_attribute(field).scale || 2
|
29
|
-
generic_field = "decimal"
|
30
|
-
when :float
|
31
|
-
locals[:scale] = 2 # usiamo il default dato che non abbiamo questa informazione negli attributes di rails
|
32
|
-
generic_field = "decimal"
|
33
|
-
when :integer
|
34
|
-
generic_field = "integer"
|
21
|
+
if form.object.class.defined_enums.key?(field.to_s)
|
22
|
+
generic_field = "enum"
|
35
23
|
else
|
36
|
-
|
37
|
-
|
24
|
+
type = form.object.class.type_for_attribute(field).type
|
25
|
+
case type
|
26
|
+
when :datetime
|
27
|
+
generic_field = "datetime"
|
28
|
+
when :date
|
29
|
+
generic_field = "date"
|
30
|
+
when :decimal
|
31
|
+
locals[:scale] = form.object.class.type_for_attribute(field).scale || 2
|
32
|
+
generic_field = "decimal"
|
33
|
+
when :float
|
34
|
+
locals[:scale] = 2 # usiamo il default dato che non abbiamo questa informazione negli attributes di rails
|
35
|
+
generic_field = "decimal"
|
36
|
+
when :integer
|
37
|
+
generic_field = "integer"
|
38
38
|
else
|
39
39
|
generic_field = "base"
|
40
40
|
end
|
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.6.0
|
@@ -18,6 +18,7 @@ module BaseEditingBootstrap
|
|
18
18
|
|
19
19
|
def prepare_test_environment
|
20
20
|
gem "factory_bot_rails", group: :test, version: '~> 6.4', comment: "Necessary for spec"
|
21
|
+
gem 'rails-controller-testing',group: :test,comment:"Required if used with controllers spec"
|
21
22
|
inject_into_class "config/application.rb", "Application", <<~RUBY
|
22
23
|
config.generators do |g|
|
23
24
|
g.test_framework :rspec
|
@@ -5,18 +5,18 @@ BaseEditingBootstrap.configure do |config|
|
|
5
5
|
# Controller da cui derivare poi il BaseEditingController da cui derivano
|
6
6
|
# tutti i controller sottostanti
|
7
7
|
# @default "ApplicationController"
|
8
|
-
#
|
8
|
+
# config.inherited_controller = "ApplicationController"
|
9
9
|
|
10
10
|
##
|
11
11
|
# Configurazione per alterare lo standard di azione post aggiornamento record
|
12
12
|
# il default è andare nella pagina di editing del record
|
13
13
|
# possibili valori :edit , :index
|
14
|
-
#
|
14
|
+
# config.inherited_controller = :edit
|
15
15
|
|
16
16
|
##
|
17
17
|
# Configurazione per alterare lo standard di azione post creazione record
|
18
18
|
# il default è andare nella pagina di editing del record
|
19
19
|
# possibili valori :edit , :index
|
20
|
-
#
|
20
|
+
# config.inherited_controller = :edit
|
21
21
|
|
22
22
|
end
|
@@ -20,6 +20,7 @@ end
|
|
20
20
|
# - index
|
21
21
|
# @!attribute expect [Array[Symbol]] -> nome delle action da non controllare
|
22
22
|
# @!attribute skip_invalid_checks [Boolean] -> se serve saltare il check delle azioni con dati non validi
|
23
|
+
# @!attribute skip_authorization_check [Boolean] -> se skippare controllo delle autorizzazioni nel caso non siano azioni non autorizzabili
|
23
24
|
#
|
24
25
|
# Sono poi disponibili diversi let per poter fare l'override arbitrario degli url,
|
25
26
|
# tutti abbastanza auto-descrittivi
|
@@ -36,7 +37,7 @@ end
|
|
36
37
|
# :url_for_update
|
37
38
|
#
|
38
39
|
#
|
39
|
-
RSpec.shared_examples "base editing controller" do |factory: nil, only: [], except: [], skip_invalid_checks: false|
|
40
|
+
RSpec.shared_examples "base editing controller" do |factory: nil, only: [], except: [], skip_invalid_checks: false, skip_authorization_check: false|
|
40
41
|
if factory
|
41
42
|
let(:inside_factory) { factory }
|
42
43
|
else
|
@@ -78,7 +79,9 @@ RSpec.shared_examples "base editing controller" do |factory: nil, only: [], exce
|
|
78
79
|
nested_attributes_for(inside_factory)
|
79
80
|
}
|
80
81
|
|
81
|
-
|
82
|
+
unless skip_authorization_check
|
83
|
+
it_behaves_like "fail with unauthorized", request: -> { get url_for(url_for_unauthorized) }
|
84
|
+
end
|
82
85
|
|
83
86
|
if check_if_should_execute(only, except, :index)
|
84
87
|
describe "index" do
|
@@ -186,7 +189,7 @@ end
|
|
186
189
|
default_unathorized_failure = -> { raise "TODO - passare proc con richiesta che dovrà fallire" }
|
187
190
|
|
188
191
|
RSpec.shared_examples "fail with unauthorized" do |request: default_unathorized_failure|
|
189
|
-
it "
|
192
|
+
it "is expected to redirect to root" do
|
190
193
|
expect(Pundit).to receive(:authorize).with(user, any_args).and_raise(Pundit::NotAuthorizedError)
|
191
194
|
instance_exec(&request)
|
192
195
|
expect(response).to redirect_to(root_path)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: base_editing_bootstrap
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Marino Bonetti
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-05-
|
11
|
+
date: 2024-05-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|