rails_ops 1.4.1 → 1.4.2
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/.rubocop.yml +102 -11
- data/Appraisals +11 -11
- data/CHANGELOG.md +9 -0
- data/Rakefile +3 -5
- data/VERSION +1 -1
- data/gemfiles/rails_6.0.gemfile +3 -3
- data/gemfiles/rails_6.1.gemfile +3 -3
- data/gemfiles/rails_7.0.gemfile +3 -3
- data/lib/generators/operation/operation_generator.rb +3 -3
- data/lib/rails_ops/authorization_backend/abstract.rb +1 -1
- data/lib/rails_ops/authorization_backend/can_can_can.rb +3 -1
- data/lib/rails_ops/controller_mixin.rb +1 -1
- data/lib/rails_ops/hookup/dsl_validator.rb +2 -1
- data/lib/rails_ops/hookup.rb +1 -1
- data/lib/rails_ops/mixins/authorization.rb +2 -2
- data/lib/rails_ops/mixins/model/nesting.rb +22 -23
- data/lib/rails_ops/mixins/policies.rb +7 -7
- data/lib/rails_ops/mixins/routes.rb +1 -1
- data/lib/rails_ops/model_mixins/marshalling.rb +1 -1
- data/lib/rails_ops/operation/model/load.rb +2 -4
- data/lib/rails_ops/operation/model/update.rb +2 -2
- data/lib/rails_ops/operation/model.rb +1 -1
- data/lib/rails_ops/operation.rb +7 -4
- data/lib/rails_ops/profiler/node.rb +1 -1
- data/lib/rails_ops/profiler.rb +1 -1
- data/lib/rails_ops.rb +43 -43
- data/rails_ops.gemspec +4 -4
- data/test/dummy/bin/bundle +1 -1
- data/test/dummy/bin/setup +1 -1
- data/test/dummy/bin/update +1 -1
- data/test/dummy/bin/yarn +5 -7
- data/test/dummy/config/environments/production.rb +1 -1
- data/test/dummy/config/spring.rb +2 -2
- data/test/test_helper.rb +5 -5
- data/test/unit/rails_ops/generators/operation_generator_test.rb +10 -12
- data/test/unit/rails_ops/mixins/model/deep_nesting_test.rb +69 -10
- data/test/unit/rails_ops/mixins/param_authorization_test.rb +3 -3
- data/test/unit/rails_ops/mixins/policies_test.rb +2 -2
- data/test/unit/rails_ops/operation/update_auth_test.rb +2 -0
- data/test/unit/rails_ops/operation/update_lazy_auth_test.rb +1 -0
- data/test/unit/rails_ops/operation_test.rb +1 -1
- metadata +11 -11
data/lib/rails_ops/profiler.rb
CHANGED
data/lib/rails_ops.rb
CHANGED
@@ -50,46 +50,46 @@ end
|
|
50
50
|
# ---------------------------------------------------------------
|
51
51
|
# Require RailsOps
|
52
52
|
# ---------------------------------------------------------------
|
53
|
-
require 'rails_ops/authorization_backend/abstract
|
54
|
-
require 'rails_ops/configuration
|
55
|
-
require 'rails_ops/context
|
56
|
-
require 'rails_ops/controller_mixin
|
57
|
-
require 'rails_ops/exceptions
|
58
|
-
require 'rails_ops/hooked_job
|
59
|
-
require 'rails_ops/hookup
|
60
|
-
require 'rails_ops/hookup/dsl
|
61
|
-
require 'rails_ops/hookup/dsl_validator
|
62
|
-
require 'rails_ops/hookup/hook
|
63
|
-
require 'rails_ops/log_subscriber
|
64
|
-
require 'rails_ops/mixins
|
65
|
-
require 'rails_ops/mixins/authorization
|
66
|
-
require 'rails_ops/mixins/param_authorization
|
67
|
-
require 'rails_ops/mixins/log_settings
|
68
|
-
require 'rails_ops/mixins/model
|
69
|
-
require 'rails_ops/mixins/model/authorization
|
70
|
-
require 'rails_ops/mixins/model/nesting
|
71
|
-
require 'rails_ops/mixins/policies
|
72
|
-
require 'rails_ops/mixins/require_context
|
73
|
-
require 'rails_ops/mixins/routes
|
74
|
-
require 'rails_ops/mixins/schema_validation
|
75
|
-
require 'rails_ops/mixins/sub_ops
|
76
|
-
require 'rails_ops/model_mixins
|
77
|
-
require 'rails_ops/model_mixins/ar_extension
|
78
|
-
require 'rails_ops/model_mixins/parent_op
|
79
|
-
require 'rails_ops/model_mixins/sti_fixes
|
80
|
-
require 'rails_ops/model_mixins/marshalling
|
81
|
-
require 'rails_ops/model_mixins/virtual_attributes
|
82
|
-
require 'rails_ops/model_mixins/virtual_attributes/virtual_column_wrapper
|
83
|
-
require 'rails_ops/model_mixins/virtual_has_one
|
84
|
-
require 'rails_ops/model_mixins/virtual_model_name
|
85
|
-
require 'rails_ops/operation
|
86
|
-
require 'rails_ops/operation/model
|
87
|
-
require 'rails_ops/operation/model/load
|
88
|
-
require 'rails_ops/operation/model/create
|
89
|
-
require 'rails_ops/operation/model/destroy
|
90
|
-
require 'rails_ops/operation/model/update
|
91
|
-
require 'rails_ops/profiler
|
92
|
-
require 'rails_ops/profiler/node
|
93
|
-
require 'rails_ops/railtie
|
94
|
-
require 'rails_ops/scoped_env
|
95
|
-
require 'rails_ops/virtual_model
|
53
|
+
require 'rails_ops/authorization_backend/abstract'
|
54
|
+
require 'rails_ops/configuration'
|
55
|
+
require 'rails_ops/context'
|
56
|
+
require 'rails_ops/controller_mixin'
|
57
|
+
require 'rails_ops/exceptions'
|
58
|
+
require 'rails_ops/hooked_job' if defined?(ActiveJob)
|
59
|
+
require 'rails_ops/hookup'
|
60
|
+
require 'rails_ops/hookup/dsl'
|
61
|
+
require 'rails_ops/hookup/dsl_validator'
|
62
|
+
require 'rails_ops/hookup/hook'
|
63
|
+
require 'rails_ops/log_subscriber'
|
64
|
+
require 'rails_ops/mixins'
|
65
|
+
require 'rails_ops/mixins/authorization'
|
66
|
+
require 'rails_ops/mixins/param_authorization'
|
67
|
+
require 'rails_ops/mixins/log_settings'
|
68
|
+
require 'rails_ops/mixins/model'
|
69
|
+
require 'rails_ops/mixins/model/authorization'
|
70
|
+
require 'rails_ops/mixins/model/nesting'
|
71
|
+
require 'rails_ops/mixins/policies'
|
72
|
+
require 'rails_ops/mixins/require_context'
|
73
|
+
require 'rails_ops/mixins/routes'
|
74
|
+
require 'rails_ops/mixins/schema_validation'
|
75
|
+
require 'rails_ops/mixins/sub_ops'
|
76
|
+
require 'rails_ops/model_mixins'
|
77
|
+
require 'rails_ops/model_mixins/ar_extension'
|
78
|
+
require 'rails_ops/model_mixins/parent_op'
|
79
|
+
require 'rails_ops/model_mixins/sti_fixes'
|
80
|
+
require 'rails_ops/model_mixins/marshalling'
|
81
|
+
require 'rails_ops/model_mixins/virtual_attributes'
|
82
|
+
require 'rails_ops/model_mixins/virtual_attributes/virtual_column_wrapper'
|
83
|
+
require 'rails_ops/model_mixins/virtual_has_one'
|
84
|
+
require 'rails_ops/model_mixins/virtual_model_name'
|
85
|
+
require 'rails_ops/operation'
|
86
|
+
require 'rails_ops/operation/model'
|
87
|
+
require 'rails_ops/operation/model/load'
|
88
|
+
require 'rails_ops/operation/model/create'
|
89
|
+
require 'rails_ops/operation/model/destroy'
|
90
|
+
require 'rails_ops/operation/model/update'
|
91
|
+
require 'rails_ops/profiler'
|
92
|
+
require 'rails_ops/profiler/node'
|
93
|
+
require 'rails_ops/railtie' if defined?(Rails)
|
94
|
+
require 'rails_ops/scoped_env'
|
95
|
+
require 'rails_ops/virtual_model'
|
data/rails_ops.gemspec
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
-
# stub: rails_ops 1.4.
|
2
|
+
# stub: rails_ops 1.4.2 ruby lib
|
3
3
|
|
4
4
|
Gem::Specification.new do |s|
|
5
5
|
s.name = "rails_ops".freeze
|
6
|
-
s.version = "1.4.
|
6
|
+
s.version = "1.4.2"
|
7
7
|
|
8
8
|
s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
|
9
9
|
s.require_paths = ["lib".freeze]
|
10
10
|
s.authors = ["Sitrox".freeze]
|
11
|
-
s.date = "2023-
|
11
|
+
s.date = "2023-03-27"
|
12
12
|
s.files = [".github/workflows/rubocop.yml".freeze, ".github/workflows/ruby.yml".freeze, ".gitignore".freeze, ".releaser_config".freeze, ".rubocop.yml".freeze, "Appraisals".freeze, "CHANGELOG.md".freeze, "Gemfile".freeze, "LICENSE".freeze, "README.md".freeze, "Rakefile".freeze, "VERSION".freeze, "gemfiles/rails_6.0.gemfile".freeze, "gemfiles/rails_6.1.gemfile".freeze, "gemfiles/rails_7.0.gemfile".freeze, "lib/generators/operation/USAGE".freeze, "lib/generators/operation/operation_generator.rb".freeze, "lib/generators/operation/templates/controller.erb".freeze, "lib/generators/operation/templates/create.erb".freeze, "lib/generators/operation/templates/destroy.erb".freeze, "lib/generators/operation/templates/load.erb".freeze, "lib/generators/operation/templates/update.erb".freeze, "lib/generators/operation/templates/view.erb".freeze, "lib/rails_ops.rb".freeze, "lib/rails_ops/authorization_backend/abstract.rb".freeze, "lib/rails_ops/authorization_backend/can_can_can.rb".freeze, "lib/rails_ops/configuration.rb".freeze, "lib/rails_ops/context.rb".freeze, "lib/rails_ops/controller_mixin.rb".freeze, "lib/rails_ops/exceptions.rb".freeze, "lib/rails_ops/hooked_job.rb".freeze, "lib/rails_ops/hookup.rb".freeze, "lib/rails_ops/hookup/dsl.rb".freeze, "lib/rails_ops/hookup/dsl_validator.rb".freeze, "lib/rails_ops/hookup/hook.rb".freeze, "lib/rails_ops/log_subscriber.rb".freeze, "lib/rails_ops/mixins.rb".freeze, "lib/rails_ops/mixins/authorization.rb".freeze, "lib/rails_ops/mixins/log_settings.rb".freeze, "lib/rails_ops/mixins/model.rb".freeze, "lib/rails_ops/mixins/model/authorization.rb".freeze, "lib/rails_ops/mixins/model/nesting.rb".freeze, "lib/rails_ops/mixins/param_authorization.rb".freeze, "lib/rails_ops/mixins/policies.rb".freeze, "lib/rails_ops/mixins/require_context.rb".freeze, "lib/rails_ops/mixins/routes.rb".freeze, "lib/rails_ops/mixins/schema_validation.rb".freeze, "lib/rails_ops/mixins/sub_ops.rb".freeze, "lib/rails_ops/model_mixins.rb".freeze, "lib/rails_ops/model_mixins/ar_extension.rb".freeze, "lib/rails_ops/model_mixins/marshalling.rb".freeze, "lib/rails_ops/model_mixins/parent_op.rb".freeze, "lib/rails_ops/model_mixins/sti_fixes.rb".freeze, "lib/rails_ops/model_mixins/virtual_attributes.rb".freeze, "lib/rails_ops/model_mixins/virtual_attributes/virtual_column_wrapper.rb".freeze, "lib/rails_ops/model_mixins/virtual_has_one.rb".freeze, "lib/rails_ops/model_mixins/virtual_model_name.rb".freeze, "lib/rails_ops/operation.rb".freeze, "lib/rails_ops/operation/model.rb".freeze, "lib/rails_ops/operation/model/create.rb".freeze, "lib/rails_ops/operation/model/destroy.rb".freeze, "lib/rails_ops/operation/model/load.rb".freeze, "lib/rails_ops/operation/model/update.rb".freeze, "lib/rails_ops/profiler.rb".freeze, "lib/rails_ops/profiler/node.rb".freeze, "lib/rails_ops/railtie.rb".freeze, "lib/rails_ops/scoped_env.rb".freeze, "lib/rails_ops/virtual_model.rb".freeze, "rails_ops.gemspec".freeze, "test/db/models.rb".freeze, "test/db/schema.rb".freeze, "test/dummy/Rakefile".freeze, "test/dummy/app/assets/config/manifest.js".freeze, "test/dummy/app/assets/images/.keep".freeze, "test/dummy/app/assets/javascripts/application.js".freeze, "test/dummy/app/assets/javascripts/cable.js".freeze, "test/dummy/app/assets/javascripts/channels/.keep".freeze, "test/dummy/app/assets/stylesheets/application.css".freeze, "test/dummy/app/channels/application_cable/channel.rb".freeze, "test/dummy/app/channels/application_cable/connection.rb".freeze, "test/dummy/app/controllers/application_controller.rb".freeze, "test/dummy/app/controllers/concerns/.keep".freeze, "test/dummy/app/helpers/application_helper.rb".freeze, "test/dummy/app/jobs/application_job.rb".freeze, "test/dummy/app/mailers/application_mailer.rb".freeze, "test/dummy/app/models/animal.rb".freeze, "test/dummy/app/models/application_record.rb".freeze, "test/dummy/app/models/bird.rb".freeze, "test/dummy/app/models/cat.rb".freeze, "test/dummy/app/models/computer.rb".freeze, "test/dummy/app/models/concerns/.keep".freeze, "test/dummy/app/models/cpu.rb".freeze, "test/dummy/app/models/dog.rb".freeze, "test/dummy/app/models/flower.rb".freeze, "test/dummy/app/models/group.rb".freeze, "test/dummy/app/models/mainboard.rb".freeze, "test/dummy/app/models/nightingale.rb".freeze, "test/dummy/app/models/phoenix.rb".freeze, "test/dummy/app/models/user.rb".freeze, "test/dummy/app/views/layouts/application.html.erb".freeze, "test/dummy/app/views/layouts/mailer.html.erb".freeze, "test/dummy/app/views/layouts/mailer.text.erb".freeze, "test/dummy/bin/bundle".freeze, "test/dummy/bin/rails".freeze, "test/dummy/bin/rake".freeze, "test/dummy/bin/setup".freeze, "test/dummy/bin/update".freeze, "test/dummy/bin/yarn".freeze, "test/dummy/config.ru".freeze, "test/dummy/config/application.rb".freeze, "test/dummy/config/boot.rb".freeze, "test/dummy/config/cable.yml".freeze, "test/dummy/config/database.yml".freeze, "test/dummy/config/environment.rb".freeze, "test/dummy/config/environments/development.rb".freeze, "test/dummy/config/environments/production.rb".freeze, "test/dummy/config/environments/test.rb".freeze, "test/dummy/config/initializers/application_controller_renderer.rb".freeze, "test/dummy/config/initializers/assets.rb".freeze, "test/dummy/config/initializers/backtrace_silencers.rb".freeze, "test/dummy/config/initializers/cookies_serializer.rb".freeze, "test/dummy/config/initializers/filter_parameter_logging.rb".freeze, "test/dummy/config/initializers/inflections.rb".freeze, "test/dummy/config/initializers/mime_types.rb".freeze, "test/dummy/config/initializers/rails_ops.rb".freeze, "test/dummy/config/initializers/wrap_parameters.rb".freeze, "test/dummy/config/locales/en.yml".freeze, "test/dummy/config/puma.rb".freeze, "test/dummy/config/routes.rb".freeze, "test/dummy/config/secrets.yml".freeze, "test/dummy/config/spring.rb".freeze, "test/dummy/db/schema.rb".freeze, "test/dummy/lib/assets/.keep".freeze, "test/dummy/log/.keep".freeze, "test/dummy/package.json".freeze, "test/dummy/public/404.html".freeze, "test/dummy/public/422.html".freeze, "test/dummy/public/500.html".freeze, "test/dummy/public/apple-touch-icon-precomposed.png".freeze, "test/dummy/public/apple-touch-icon.png".freeze, "test/dummy/public/favicon.ico".freeze, "test/dummy/tmp/.keep".freeze, "test/test_helper.rb".freeze, "test/unit/rails_ops/generators/operation_generator_test.rb".freeze, "test/unit/rails_ops/mixins/model/deep_nesting_test.rb".freeze, "test/unit/rails_ops/mixins/param_authorization_test.rb".freeze, "test/unit/rails_ops/mixins/policies_test.rb".freeze, "test/unit/rails_ops/operation/model/create_test.rb".freeze, "test/unit/rails_ops/operation/model/load_test.rb".freeze, "test/unit/rails_ops/operation/model/sti_test.rb".freeze, "test/unit/rails_ops/operation/model/update_test.rb".freeze, "test/unit/rails_ops/operation/model_test.rb".freeze, "test/unit/rails_ops/operation/update_auth_test.rb".freeze, "test/unit/rails_ops/operation/update_lazy_auth_test.rb".freeze, "test/unit/rails_ops/operation_test.rb".freeze]
|
13
13
|
s.rubygems_version = "3.4.6".freeze
|
14
14
|
s.summary = "An operations service layer for rails projects.".freeze
|
@@ -23,7 +23,7 @@ Gem::Specification.new do |s|
|
|
23
23
|
s.add_development_dependency(%q<cancancan>.freeze, [">= 0"])
|
24
24
|
s.add_development_dependency(%q<pry>.freeze, [">= 0"])
|
25
25
|
s.add_development_dependency(%q<colorize>.freeze, [">= 0"])
|
26
|
-
s.add_development_dependency(%q<rubocop>.freeze, ["=
|
26
|
+
s.add_development_dependency(%q<rubocop>.freeze, ["= 1.45.1"])
|
27
27
|
s.add_development_dependency(%q<sprockets-rails>.freeze, [">= 0"])
|
28
28
|
s.add_runtime_dependency(%q<active_type>.freeze, [">= 1.3.0"])
|
29
29
|
s.add_runtime_dependency(%q<minitest>.freeze, [">= 0"])
|
data/test/dummy/bin/bundle
CHANGED
data/test/dummy/bin/setup
CHANGED
@@ -4,7 +4,7 @@ require 'fileutils'
|
|
4
4
|
include FileUtils
|
5
5
|
|
6
6
|
# path to your application root.
|
7
|
-
APP_ROOT = Pathname.new File.expand_path('
|
7
|
+
APP_ROOT = Pathname.new File.expand_path('..', __dir__)
|
8
8
|
|
9
9
|
def system!(*args)
|
10
10
|
system(*args) || abort("\n== Command #{args} failed ==")
|
data/test/dummy/bin/update
CHANGED
@@ -4,7 +4,7 @@ require 'fileutils'
|
|
4
4
|
include FileUtils
|
5
5
|
|
6
6
|
# path to your application root.
|
7
|
-
APP_ROOT = Pathname.new File.expand_path('
|
7
|
+
APP_ROOT = Pathname.new File.expand_path('..', __dir__)
|
8
8
|
|
9
9
|
def system!(*args)
|
10
10
|
system(*args) || abort("\n== Command #{args} failed ==")
|
data/test/dummy/bin/yarn
CHANGED
@@ -1,11 +1,9 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
VENDOR_PATH = File.expand_path('..', __dir__)
|
3
3
|
Dir.chdir(VENDOR_PATH) do
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
exit 1
|
10
|
-
end
|
4
|
+
exec "yarnpkg #{ARGV.join(' ')}"
|
5
|
+
rescue Errno::ENOENT
|
6
|
+
warn 'Yarn executable was not detected in the system.'
|
7
|
+
warn 'Download Yarn at https://yarnpkg.com/en/docs/install'
|
8
|
+
exit 1
|
11
9
|
end
|
@@ -74,7 +74,7 @@ Rails.application.configure do
|
|
74
74
|
config.active_support.deprecation = :notify
|
75
75
|
|
76
76
|
# Use default logging formatter so that PID and timestamp are not suppressed.
|
77
|
-
config.log_formatter =
|
77
|
+
config.log_formatter = Logger::Formatter.new
|
78
78
|
|
79
79
|
# Use a different logger for distributed setups.
|
80
80
|
# require 'syslog/logger'
|
data/test/dummy/config/spring.rb
CHANGED
data/test/test_helper.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require File.expand_path('
|
1
|
+
require File.expand_path('../test/dummy/config/environment.rb', __dir__)
|
2
2
|
# ActiveRecord::Migrator.migrations_paths = [File.expand_path("../../test/dummy/db/migrate", __FILE__)]
|
3
3
|
require 'rails/test_help'
|
4
4
|
require 'pry'
|
@@ -14,13 +14,13 @@ Rails::TestUnitReporter.executable = 'bin/test'
|
|
14
14
|
|
15
15
|
# Load fixtures from the engine
|
16
16
|
if ActiveSupport::TestCase.respond_to?(:fixture_path=)
|
17
|
-
ActiveSupport::TestCase.fixture_path = File.expand_path('
|
17
|
+
ActiveSupport::TestCase.fixture_path = File.expand_path('fixtures', __dir__)
|
18
18
|
ActionDispatch::IntegrationTest.fixture_path = ActiveSupport::TestCase.fixture_path
|
19
|
-
ActiveSupport::TestCase.file_fixture_path = ActiveSupport::TestCase.fixture_path
|
19
|
+
ActiveSupport::TestCase.file_fixture_path = File.join(ActiveSupport::TestCase.fixture_path, '/files')
|
20
20
|
ActiveSupport::TestCase.fixtures :all
|
21
21
|
end
|
22
22
|
|
23
|
-
load File.dirname(__FILE__)
|
23
|
+
load File.join(File.dirname(__FILE__), '/dummy/db/schema.rb')
|
24
24
|
|
25
25
|
require 'request_store'
|
26
26
|
|
@@ -39,7 +39,7 @@ module TestHelper
|
|
39
39
|
fail TypeError, "Expected #{expected.inspect} to be a kind of String or Regexp, not #{expected.class}"
|
40
40
|
end
|
41
41
|
|
42
|
-
ex = assert_raises(exception, *msg)
|
42
|
+
ex = assert_raises(exception, *msg, &block)
|
43
43
|
msg = message(msg, '') { "Expected Exception(#{exception}) was raised, but the message doesn't match" }
|
44
44
|
|
45
45
|
if assert == :assert_equal
|
@@ -10,12 +10,10 @@ class OperationGeneratorTest < Rails::Generators::TestCase
|
|
10
10
|
|
11
11
|
# Add an empty routes file
|
12
12
|
Dir.mkdir(File.join(destination_root, 'config'))
|
13
|
-
File.
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
ROUTES
|
18
|
-
end
|
13
|
+
File.write(File.join(destination_root, 'config', 'routes.rb'), <<~ROUTES)
|
14
|
+
Rails.application.routes.draw do
|
15
|
+
end
|
16
|
+
ROUTES
|
19
17
|
end
|
20
18
|
|
21
19
|
def test_all
|
@@ -42,7 +40,7 @@ class OperationGeneratorTest < Rails::Generators::TestCase
|
|
42
40
|
assert_routes
|
43
41
|
|
44
42
|
# Check that the views were skipped
|
45
|
-
%w
|
43
|
+
%w[index show new edit].each do |view|
|
46
44
|
assert_no_file "app/views/users/#{view}.html.haml"
|
47
45
|
end
|
48
46
|
end
|
@@ -85,7 +83,7 @@ class OperationGeneratorTest < Rails::Generators::TestCase
|
|
85
83
|
end
|
86
84
|
|
87
85
|
# Check that the views were skipped
|
88
|
-
%w
|
86
|
+
%w[index show new edit].each do |view|
|
89
87
|
assert_no_file "app/views/users/#{view}.html.haml"
|
90
88
|
end
|
91
89
|
end
|
@@ -104,7 +102,7 @@ class OperationGeneratorTest < Rails::Generators::TestCase
|
|
104
102
|
end
|
105
103
|
|
106
104
|
# Check that the views were skipped
|
107
|
-
%w
|
105
|
+
%w[index show new edit].each do |view|
|
108
106
|
assert_no_file "app/views/users/#{view}.html.haml"
|
109
107
|
end
|
110
108
|
end
|
@@ -154,7 +152,7 @@ class OperationGeneratorTest < Rails::Generators::TestCase
|
|
154
152
|
end
|
155
153
|
|
156
154
|
# Check that views are generated
|
157
|
-
%w
|
155
|
+
%w[index show new edit].each do |view|
|
158
156
|
assert_file "app/views/admin/users/#{view}.html.haml"
|
159
157
|
end
|
160
158
|
|
@@ -195,7 +193,7 @@ class OperationGeneratorTest < Rails::Generators::TestCase
|
|
195
193
|
end
|
196
194
|
|
197
195
|
# Check that views are generated
|
198
|
-
%w
|
196
|
+
%w[index show new edit].each do |view|
|
199
197
|
assert_file "app/views/admin/foo/users/#{view}.html.haml"
|
200
198
|
end
|
201
199
|
|
@@ -235,7 +233,7 @@ class OperationGeneratorTest < Rails::Generators::TestCase
|
|
235
233
|
end
|
236
234
|
|
237
235
|
def assert_views
|
238
|
-
%w
|
236
|
+
%w[index show new edit].each do |view|
|
239
237
|
assert_file "app/views/users/#{view}.html.haml"
|
240
238
|
end
|
241
239
|
end
|
@@ -25,6 +25,28 @@ class RailsOps::Mixins::Model::DeepNestingTest < ActiveSupport::TestCase
|
|
25
25
|
nest_model_op :mainboard, MAINBOARD_CREATION_OP
|
26
26
|
end
|
27
27
|
|
28
|
+
CPU_UPDATE_OP = Class.new(RailsOps::Operation::Model::Update) do
|
29
|
+
model Cpu do
|
30
|
+
validates :name, presence: true
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
MAINBOARD_UPDATE_OP = Class.new(RailsOps::Operation::Model::Update) do
|
35
|
+
model Mainboard do
|
36
|
+
validates :name, presence: true
|
37
|
+
end
|
38
|
+
|
39
|
+
nest_model_op :cpu, CPU_UPDATE_OP
|
40
|
+
end
|
41
|
+
|
42
|
+
COMPUTER_UPDATE_OP = Class.new(RailsOps::Operation::Model::Update) do
|
43
|
+
model Computer do
|
44
|
+
validates :name, presence: true
|
45
|
+
end
|
46
|
+
|
47
|
+
nest_model_op :mainboard, MAINBOARD_UPDATE_OP
|
48
|
+
end
|
49
|
+
|
28
50
|
def test_create_cpu
|
29
51
|
assert_nothing_raised do
|
30
52
|
CPU_CREATION_OP.run!(cpu: { name: 'CPU' })
|
@@ -35,7 +57,7 @@ class RailsOps::Mixins::Model::DeepNestingTest < ActiveSupport::TestCase
|
|
35
57
|
assert_nothing_raised do
|
36
58
|
MAINBOARD_CREATION_OP.run!(
|
37
59
|
mainboard: {
|
38
|
-
name:
|
60
|
+
name: 'Mainboard',
|
39
61
|
cpu_attributes: {
|
40
62
|
name: 'CPU'
|
41
63
|
}
|
@@ -48,10 +70,10 @@ class RailsOps::Mixins::Model::DeepNestingTest < ActiveSupport::TestCase
|
|
48
70
|
model = assert_nothing_raised do
|
49
71
|
COMPUTER_CREATION_OP.run!(
|
50
72
|
computer: {
|
51
|
-
name:
|
73
|
+
name: 'Computer',
|
52
74
|
|
53
75
|
mainboard_attributes: {
|
54
|
-
name:
|
76
|
+
name: 'Mainboard',
|
55
77
|
|
56
78
|
cpu_attributes: {
|
57
79
|
name: 'CPU'
|
@@ -74,7 +96,7 @@ class RailsOps::Mixins::Model::DeepNestingTest < ActiveSupport::TestCase
|
|
74
96
|
op = COMPUTER_CREATION_OP.new(
|
75
97
|
computer: {
|
76
98
|
mainboard_attributes: {
|
77
|
-
name:
|
99
|
+
name: 'Mainboard',
|
78
100
|
|
79
101
|
cpu_attributes: {
|
80
102
|
name: 'CPU'
|
@@ -94,7 +116,7 @@ class RailsOps::Mixins::Model::DeepNestingTest < ActiveSupport::TestCase
|
|
94
116
|
def test_create_computer_level_2_validation_error
|
95
117
|
op = COMPUTER_CREATION_OP.new(
|
96
118
|
computer: {
|
97
|
-
name:
|
119
|
+
name: 'Computer',
|
98
120
|
|
99
121
|
mainboard_attributes: {
|
100
122
|
cpu_attributes: {
|
@@ -108,7 +130,7 @@ class RailsOps::Mixins::Model::DeepNestingTest < ActiveSupport::TestCase
|
|
108
130
|
op.run!
|
109
131
|
end
|
110
132
|
|
111
|
-
assert_equal [
|
133
|
+
assert_equal ['Mainboard is invalid'], op.model.errors.full_messages
|
112
134
|
refute op.model.persisted?
|
113
135
|
|
114
136
|
assert_equal ["Name can't be blank"], op.model.mainboard.errors.full_messages
|
@@ -118,10 +140,10 @@ class RailsOps::Mixins::Model::DeepNestingTest < ActiveSupport::TestCase
|
|
118
140
|
def test_create_computer_level_3_validation_error
|
119
141
|
op = COMPUTER_CREATION_OP.new(
|
120
142
|
computer: {
|
121
|
-
name:
|
143
|
+
name: 'Computer',
|
122
144
|
|
123
145
|
mainboard_attributes: {
|
124
|
-
name:
|
146
|
+
name: 'Mainboard',
|
125
147
|
|
126
148
|
cpu_attributes: {}
|
127
149
|
}
|
@@ -132,13 +154,50 @@ class RailsOps::Mixins::Model::DeepNestingTest < ActiveSupport::TestCase
|
|
132
154
|
op.run!
|
133
155
|
end
|
134
156
|
|
135
|
-
assert_equal [
|
157
|
+
assert_equal ['Mainboard is invalid'], op.model.errors.full_messages
|
136
158
|
refute op.model.persisted?
|
137
159
|
|
138
|
-
assert_equal [
|
160
|
+
assert_equal ['Cpu is invalid'], op.model.mainboard.errors.full_messages
|
139
161
|
refute op.model.mainboard.persisted?
|
140
162
|
|
141
163
|
assert_equal ["Name can't be blank"], op.model.mainboard.cpu.errors.full_messages
|
142
164
|
refute op.model.mainboard.cpu.persisted?
|
143
165
|
end
|
166
|
+
|
167
|
+
def test_update_validation_error
|
168
|
+
create_op = COMPUTER_CREATION_OP.new(
|
169
|
+
computer: {
|
170
|
+
name: 'Computer',
|
171
|
+
|
172
|
+
mainboard_attributes: {
|
173
|
+
name: 'Mainboard',
|
174
|
+
|
175
|
+
cpu_attributes: {
|
176
|
+
name: 'CPU'
|
177
|
+
}
|
178
|
+
}
|
179
|
+
}
|
180
|
+
)
|
181
|
+
|
182
|
+
create_op.run!
|
183
|
+
|
184
|
+
update_op = COMPUTER_UPDATE_OP.new(
|
185
|
+
id: Computer.first,
|
186
|
+
computer: {
|
187
|
+
name: 'Computer',
|
188
|
+
|
189
|
+
mainboard_attributes: {
|
190
|
+
name: '',
|
191
|
+
|
192
|
+
cpu_attributes: {
|
193
|
+
name: 'CPU'
|
194
|
+
}
|
195
|
+
}
|
196
|
+
}
|
197
|
+
)
|
198
|
+
|
199
|
+
refute update_op.run
|
200
|
+
assert_equal :name, update_op.model.mainboard.errors.first.attribute
|
201
|
+
assert_equal :blank, update_op.model.mainboard.errors.first.type
|
202
|
+
end
|
144
203
|
end
|
@@ -32,9 +32,9 @@ class RailsOps::Mixins::ParamAuthorizationTest < ActiveSupport::TestCase
|
|
32
32
|
|
33
33
|
model ::Group
|
34
34
|
|
35
|
-
authorize_param %i
|
36
|
-
authorize_param %i
|
37
|
-
authorize_param %i
|
35
|
+
authorize_param %i[foo], :foo, :subject_1
|
36
|
+
authorize_param %i[bar], :bar, :subject_1
|
37
|
+
authorize_param %i[bar baz], :baz, :subject_1
|
38
38
|
|
39
39
|
def perform
|
40
40
|
# Do nothing
|
@@ -29,7 +29,7 @@ class RailsOps::Mixins::PoliciesTest < ActiveSupport::TestCase
|
|
29
29
|
end
|
30
30
|
end
|
31
31
|
|
32
|
-
assert_equal %i
|
32
|
+
assert_equal %i[on_init default before_perform perform after_perform],
|
33
33
|
op.run!.sequence
|
34
34
|
end
|
35
35
|
|
@@ -52,7 +52,7 @@ class RailsOps::Mixins::PoliciesTest < ActiveSupport::TestCase
|
|
52
52
|
def perform; end
|
53
53
|
end
|
54
54
|
|
55
|
-
assert_equal %i
|
55
|
+
assert_equal %i[before_perform_1 before_perform_2],
|
56
56
|
op.run!.sequence
|
57
57
|
end
|
58
58
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rails_ops
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.4.
|
4
|
+
version: 1.4.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sitrox
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-03-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: appraisal
|
@@ -114,14 +114,14 @@ dependencies:
|
|
114
114
|
requirements:
|
115
115
|
- - '='
|
116
116
|
- !ruby/object:Gem::Version
|
117
|
-
version:
|
117
|
+
version: 1.45.1
|
118
118
|
type: :development
|
119
119
|
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
121
|
requirements:
|
122
122
|
- - '='
|
123
123
|
- !ruby/object:Gem::Version
|
124
|
-
version:
|
124
|
+
version: 1.45.1
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
126
|
name: sprockets-rails
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
@@ -212,8 +212,8 @@ dependencies:
|
|
212
212
|
- - "<="
|
213
213
|
- !ruby/object:Gem::Version
|
214
214
|
version: '3.1'
|
215
|
-
description:
|
216
|
-
email:
|
215
|
+
description:
|
216
|
+
email:
|
217
217
|
executables: []
|
218
218
|
extensions: []
|
219
219
|
extra_rdoc_files: []
|
@@ -373,10 +373,10 @@ files:
|
|
373
373
|
- test/unit/rails_ops/operation/update_auth_test.rb
|
374
374
|
- test/unit/rails_ops/operation/update_lazy_auth_test.rb
|
375
375
|
- test/unit/rails_ops/operation_test.rb
|
376
|
-
homepage:
|
376
|
+
homepage:
|
377
377
|
licenses: []
|
378
378
|
metadata: {}
|
379
|
-
post_install_message:
|
379
|
+
post_install_message:
|
380
380
|
rdoc_options: []
|
381
381
|
require_paths:
|
382
382
|
- lib
|
@@ -391,8 +391,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
391
391
|
- !ruby/object:Gem::Version
|
392
392
|
version: '0'
|
393
393
|
requirements: []
|
394
|
-
rubygems_version: 3.
|
395
|
-
signing_key:
|
394
|
+
rubygems_version: 3.4.6
|
395
|
+
signing_key:
|
396
396
|
specification_version: 4
|
397
397
|
summary: An operations service layer for rails projects.
|
398
398
|
test_files:
|