base_editing_bootstrap 0.5.0 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ba7128b63918eeebe5d2615895fccdfb352a01522d789b563c76c32bb48cf2a8
4
- data.tar.gz: 8a131d2ba99e266f7ac0b92e4b993e791508141f46dbecb8b228a296bd5a6fc1
3
+ metadata.gz: f49f0f2c12bba569f7cc1d5dae8c7539939b2f98214800c405566fc20a2b8597
4
+ data.tar.gz: 2f5c46bad766c8212f9d8684cb951c8156d6c26a279d411c5cc61e9e117abb54
5
5
  SHA512:
6
- metadata.gz: 61af8c0e0f59c866de6216d054b6d143935ead13eae8a47287b24f9b6efa2103ce29d6684c91cf9668996ade6fa6303fbd623d7828a6587e23571e8b64f0e0c8
7
- data.tar.gz: 3d1495bcf1b375514dd1fe010de6135e4ca68957b22e5c051aeae3871f7025996c5d75400919c1e9c0e53b01ec8799ed3067a0efc2154e7bab1f7ef6b9e0dc44
6
+ metadata.gz: '058cca4f47850ca85f902e591f0c48df33ac520d47a593ef0c1f307fb838c911aa8100330fbe8b0391c7d4f9ef3d1551666c4ad18e760ab0959bdb70f7478997'
7
+ data.tar.gz: 6f05b31efdf2862ff1e7ff5f90ccf9b98645493223f801245e2e7efed0794718c9e57fa79bb851c0edb6cebd13a3c51a0cc595c4ec28ced82eb3bd8fcd082cb8
data/CHANGELOG.md CHANGED
@@ -2,6 +2,30 @@
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.7.0 - 2024-05-30
6
+ #### Bug Fixes
7
+ - Generators with enum - (7f25cac) - Marino Bonetti
8
+ #### Features
9
+ - Add Generator for cell field - (ab0210b) - Marino Bonetti
10
+ - Add generator for form field override - (118b998) - Marino Bonetti
11
+ - Add distinguishable classes per field - (2e5e797) - Marino Bonetti
12
+ #### Tests
13
+ - Add Tests to generator - (cd3f40a) - Marino Bonetti
14
+
15
+ - - -
16
+
17
+ ## 0.6.0 - 2024-05-29
18
+ #### Bug Fixes
19
+ - Add dependency in generator - (b911b1a) - Marino Bonetti
20
+ #### Documentation
21
+ - Add documentation for specs - (42a88ca) - Marino Bonetti
22
+ #### Features
23
+ - Add Capacity to skip un-authorization - (c83c51c) - Marino Bonetti
24
+ #### Tests
25
+ - Add spec for test env - (b8611d7) - Marino Bonetti
26
+
27
+ - - -
28
+
5
29
  ## 0.5.0 - 2024-05-22
6
30
  #### Bug Fixes
7
31
  - Correct initializer commented examples - (ba90fba) - 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
- <%= form.label(form_field, class: "form-label") %>
2
- <div class="input-group mb-2 <%= form.object.validated? ? "has-validation" : "" %>">
1
+ <%= form.label(form_field, class: ["form-label","form-#{form_field}-label"]) %>
2
+ <div class="input-group mb-2 <%= form.object.validated? ? "has-validation" : "" %><%= "form-#{form_field}-input-group" %>">
3
3
  <%= render partial: "editing_form_measure_unit", locals: {object: form.object, field: form_field} %>
4
4
  <%= form_print_field(form, form_field) %>
5
5
  <%= error_messages_for(form.object, form_field) %>
@@ -1 +1 @@
1
- 0.5.0
1
+ 0.7.0
@@ -0,0 +1,38 @@
1
+ # frozen_string_literal: true
2
+
3
+ module BaseEditingBootstrap
4
+ module Generators
5
+ class CellOverrideGenerator < ::Rails::Generators::Base
6
+ source_root File.expand_path("../../../../app/views/base_editing", __dir__)
7
+ argument :name, type: :string, banner: "Post", required: true
8
+ argument :attributes, type: :array, default: [], banner: "field field:type"
9
+
10
+ TYPES = [:base,:timestamps].freeze
11
+
12
+ desc <<-DESCRIPTION.strip_heredoc
13
+ Description:
14
+ Copy partial files for a defined cell,
15
+ the possible types are #{TYPES}
16
+ Default to base
17
+ DESCRIPTION
18
+
19
+ def copy_form_partials
20
+ if attributes.empty?
21
+ say "Need one field"
22
+ else
23
+ singular_name = name.underscore.downcase.singularize
24
+ plural_name = singular_name.pluralize
25
+ attributes.each do |a|
26
+ attr_name, type = a.split(":")
27
+
28
+ type = :base if type.nil?
29
+ type = type.to_sym
30
+ raise "Type #{type} not found in #{TYPES}" unless TYPES.include?(type)
31
+ copy_file "cell_field/_#{type}.html.erb", File.join("app/views", plural_name, singular_name, 'cell_field', "_#{attr_name}.html.erb")
32
+ end
33
+ end
34
+
35
+ end
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,38 @@
1
+ # frozen_string_literal: true
2
+
3
+ module BaseEditingBootstrap
4
+ module Generators
5
+ class FieldOverrideGenerator < ::Rails::Generators::Base
6
+ source_root File.expand_path("../../../../app/views/base_editing", __dir__)
7
+ argument :name, type: :string, banner: "Post", required: true
8
+ argument :attributes, type: :array, default: [], banner: "field field:type"
9
+
10
+ TYPES = %i[base date datetime decimal integer enum]
11
+
12
+ desc <<-DESCRIPTION.strip_heredoc
13
+ Description:
14
+ Copy partial files for a defined fields,
15
+ the possible types are #{TYPES}
16
+ Default to base
17
+ DESCRIPTION
18
+
19
+ def copy_form_partials
20
+ if attributes.empty?
21
+ say "Need one field"
22
+ else
23
+ singular_name = name.underscore.downcase.singularize
24
+ plural_name = singular_name.pluralize
25
+ attributes.each do |a|
26
+ attr_name, type = a.split(":")
27
+
28
+ type = :base if type.nil?
29
+ type = type.to_sym
30
+ raise "Type #{type} not found in #{TYPES}" unless TYPES.include?(type)
31
+ copy_file "form_field/_#{type}.html.erb", File.join("app/views", plural_name, singular_name, 'form_field', "_#{attr_name}.html.erb")
32
+ end
33
+ end
34
+
35
+ end
36
+ end
37
+ end
38
+ end
@@ -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
@@ -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
- it_behaves_like "fail with unauthorized", request: -> { get url_for(url_for_unauthorized) }
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 "expect to redirect to root" do
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.5.0
4
+ version: 0.7.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-22 00:00:00.000000000 Z
11
+ date: 2024-05-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -354,6 +354,8 @@ files:
354
354
  - lib/base_editing_bootstrap/searches/base.rb
355
355
  - lib/base_editing_bootstrap/searches/field.rb
356
356
  - lib/base_editing_bootstrap/version.rb
357
+ - lib/generators/base_editing_bootstrap/cell_override/cell_override_generator.rb
358
+ - lib/generators/base_editing_bootstrap/field_override/field_override_generator.rb
357
359
  - lib/generators/base_editing_bootstrap/install/USAGE
358
360
  - lib/generators/base_editing_bootstrap/install/install_generator.rb
359
361
  - lib/generators/base_editing_bootstrap/install/templates/initializer.rb