arpa 0.2.0 → 0.3.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.
Files changed (125) hide show
  1. checksums.yaml +5 -5
  2. data/.rubocop.yml +17 -0
  3. data/.ruby-version +1 -1
  4. data/.travis.yml +5 -0
  5. data/CHANGELOG.md +4 -0
  6. data/README.md +4 -4
  7. data/Rakefile +1 -2
  8. data/arpa.gemspec +17 -18
  9. data/lib/arpa.rb +65 -67
  10. data/lib/arpa/additions/resource.rb +0 -2
  11. data/lib/arpa/data_mappers/action_mapper.rb +1 -2
  12. data/lib/arpa/data_mappers/base.rb +15 -16
  13. data/lib/arpa/data_mappers/profile_mapper.rb +3 -4
  14. data/lib/arpa/data_mappers/resource_mapper.rb +1 -1
  15. data/lib/arpa/data_mappers/role_mapper.rb +2 -2
  16. data/lib/arpa/entities/action.rb +0 -2
  17. data/lib/arpa/entities/profile.rb +2 -3
  18. data/lib/arpa/entities/resource.rb +4 -6
  19. data/lib/arpa/entities/role.rb +2 -3
  20. data/lib/arpa/exceptions/record_invalid.rb +0 -1
  21. data/lib/arpa/repositories/actions/creator.rb +0 -1
  22. data/lib/arpa/repositories/actions/finder.rb +5 -6
  23. data/lib/arpa/repositories/actions/remover.rb +0 -1
  24. data/lib/arpa/repositories/actions/repository_action.rb +1 -2
  25. data/lib/arpa/repositories/base.rb +0 -2
  26. data/lib/arpa/repositories/profiles/creator.rb +0 -1
  27. data/lib/arpa/repositories/profiles/finder.rb +2 -3
  28. data/lib/arpa/repositories/profiles/remover.rb +0 -1
  29. data/lib/arpa/repositories/profiles/repository_profile.rb +1 -2
  30. data/lib/arpa/repositories/profiles/updater.rb +0 -1
  31. data/lib/arpa/repositories/registrator.rb +5 -10
  32. data/lib/arpa/repositories/resources/creator.rb +0 -1
  33. data/lib/arpa/repositories/resources/finder.rb +0 -1
  34. data/lib/arpa/repositories/resources/remover.rb +0 -1
  35. data/lib/arpa/repositories/resources/repository_resource.rb +1 -2
  36. data/lib/arpa/repositories/roles/creator.rb +0 -1
  37. data/lib/arpa/repositories/roles/finder.rb +0 -1
  38. data/lib/arpa/repositories/roles/remover.rb +0 -1
  39. data/lib/arpa/repositories/roles/repository_role.rb +1 -2
  40. data/lib/arpa/repositories/roles/updater.rb +0 -1
  41. data/lib/arpa/services/actions/create/action_creator.rb +1 -3
  42. data/lib/arpa/services/actions/remove/action_remover.rb +0 -2
  43. data/lib/arpa/services/base.rb +6 -10
  44. data/lib/arpa/services/profiles/create/profile_creator.rb +0 -2
  45. data/lib/arpa/services/profiles/profile_manager_creator.rb +0 -1
  46. data/lib/arpa/services/profiles/profile_manager_remover.rb +0 -1
  47. data/lib/arpa/services/profiles/profile_manager_updater.rb +0 -1
  48. data/lib/arpa/services/profiles/remove/profile_remover.rb +0 -2
  49. data/lib/arpa/services/profiles/update/profile_updater.rb +0 -2
  50. data/lib/arpa/services/resources/create/resource_creator.rb +0 -2
  51. data/lib/arpa/services/resources/remove/resource_remover.rb +1 -4
  52. data/lib/arpa/services/resources/resource_manager_creator.rb +1 -2
  53. data/lib/arpa/services/roles/create/role_creator.rb +0 -3
  54. data/lib/arpa/services/roles/remove/role_remover.rb +0 -2
  55. data/lib/arpa/services/roles/role_manager_creator.rb +0 -2
  56. data/lib/arpa/services/roles/role_manager_remover.rb +0 -1
  57. data/lib/arpa/services/roles/role_manager_updater.rb +0 -1
  58. data/lib/arpa/services/roles/update/role_updater.rb +0 -2
  59. data/lib/arpa/services/verifier.rb +0 -1
  60. data/lib/arpa/validators/action_validator.rb +0 -1
  61. data/lib/arpa/validators/profile_validator.rb +0 -1
  62. data/lib/arpa/validators/resource_validator.rb +0 -1
  63. data/lib/arpa/validators/role_validator.rb +0 -2
  64. data/lib/arpa/version.rb +1 -1
  65. data/lib/generators/arpa/controllers_generator.rb +21 -22
  66. data/lib/generators/arpa/install_generator.rb +5 -6
  67. data/lib/generators/arpa/templates/controllers/profiles_controller.rb +31 -37
  68. data/lib/generators/arpa/templates/controllers/resources_controller.rb +20 -11
  69. data/lib/generators/arpa/templates/controllers/roles_controller.rb +31 -37
  70. data/lib/generators/arpa/templates/migration.rb +1 -1
  71. data/spec/factories/repository_actions.rb +4 -5
  72. data/spec/factories/repository_profiles.rb +4 -5
  73. data/spec/factories/repository_resources.rb +1 -3
  74. data/spec/factories/repository_roles.rb +2 -3
  75. data/spec/factories/repository_test.rb +1 -1
  76. data/spec/lib/arpa/additions/resource_spec.rb +8 -6
  77. data/spec/lib/arpa/data_mappers/action_mapper_spec.rb +1 -3
  78. data/spec/lib/arpa/data_mappers/base_spec.rb +0 -2
  79. data/spec/lib/arpa/data_mappers/profile_mapper_spec.rb +1 -3
  80. data/spec/lib/arpa/data_mappers/resource_mapper_spec.rb +1 -3
  81. data/spec/lib/arpa/data_mappers/role_mapper_spec.rb +1 -3
  82. data/spec/lib/arpa/entities/action_spec.rb +3 -6
  83. data/spec/lib/arpa/entities/profile_spec.rb +1 -7
  84. data/spec/lib/arpa/entities/resource_spec.rb +1 -9
  85. data/spec/lib/arpa/entities/role_spec.rb +1 -7
  86. data/spec/lib/arpa/repositories/actions/finder_spec.rb +1 -8
  87. data/spec/lib/arpa/repositories/base_spec.rb +1 -9
  88. data/spec/lib/arpa/repositories/profiles/finder_spec.rb +0 -6
  89. data/spec/lib/arpa/repositories/profiles/remover_spec.rb +0 -4
  90. data/spec/lib/arpa/repositories/resources/finder_spec.rb +0 -8
  91. data/spec/lib/arpa/repositories/resources/remover_spec.rb +0 -4
  92. data/spec/lib/arpa/repositories/roles/finder_spec.rb +0 -4
  93. data/spec/lib/arpa/repositories/roles/remover_spec.rb +0 -4
  94. data/spec/lib/arpa/requests/profiles/create_request_spec.rb +10 -12
  95. data/spec/lib/arpa/requests/profiles/remove_request_spec.rb +4 -9
  96. data/spec/lib/arpa/requests/resources/create_request_spec.rb +18 -21
  97. data/spec/lib/arpa/requests/roles/create_request_spec.rb +7 -9
  98. data/spec/lib/arpa/requests/roles/remove_request_spec.rb +3 -6
  99. data/spec/lib/arpa/requests/roles/update_request_spec.rb +7 -9
  100. data/spec/lib/arpa/services/actions/create/action_creator_spec.rb +5 -14
  101. data/spec/lib/arpa/services/actions/remove/action_remover_spec.rb +3 -6
  102. data/spec/lib/arpa/services/base_spec.rb +8 -15
  103. data/spec/lib/arpa/services/profiles/create/profile_creator_spec.rb +0 -7
  104. data/spec/lib/arpa/services/profiles/profile_manager_creator_spec.rb +2 -4
  105. data/spec/lib/arpa/services/profiles/profile_manager_remover_spec.rb +3 -6
  106. data/spec/lib/arpa/services/profiles/profile_manager_updater_spec.rb +2 -4
  107. data/spec/lib/arpa/services/profiles/remove/profile_remover_spec.rb +0 -5
  108. data/spec/lib/arpa/services/profiles/update/profile_updater_spec.rb +0 -7
  109. data/spec/lib/arpa/services/resources/create/resource_creator_spec.rb +1 -7
  110. data/spec/lib/arpa/services/resources/remove/resource_remover_spec.rb +2 -6
  111. data/spec/lib/arpa/services/resources/resource_manager_creator_spec.rb +5 -7
  112. data/spec/lib/arpa/services/roles/create/role_creator_spec.rb +0 -7
  113. data/spec/lib/arpa/services/roles/remove/role_remover_spec.rb +1 -8
  114. data/spec/lib/arpa/services/roles/role_manager_creator_spec.rb +2 -4
  115. data/spec/lib/arpa/services/roles/role_manager_remover_spec.rb +2 -4
  116. data/spec/lib/arpa/services/roles/role_manager_updater_spec.rb +2 -4
  117. data/spec/lib/arpa/services/roles/update/role_updater_spec.rb +0 -7
  118. data/spec/lib/arpa/services/verifier_spec.rb +3 -6
  119. data/spec/lib/arpa/validators/action_validator_spec.rb +0 -1
  120. data/spec/lib/arpa/validators/profile_validator_spec.rb +1 -2
  121. data/spec/lib/arpa/validators/resource_validator_spec.rb +0 -1
  122. data/spec/lib/arpa/validators/role_validator_spec.rb +1 -2
  123. data/spec/spec_helper.rb +4 -6
  124. data/spec/support/schema.rb +9 -10
  125. metadata +40 -36
@@ -15,7 +15,6 @@ module Arpa
15
15
  def profile_creator
16
16
  @profile_creator ||= Arpa::Services::Profiles::Create::ProfileCreator.new
17
17
  end
18
-
19
18
  end
20
19
  end
21
20
  end
@@ -17,7 +17,6 @@ module Arpa
17
17
  def profile_remover
18
18
  @profile_remover ||= Arpa::Services::Profiles::Remove::ProfileRemover.new
19
19
  end
20
-
21
20
  end
22
21
  end
23
22
  end
@@ -15,7 +15,6 @@ module Arpa
15
15
  def profile_updater
16
16
  @profile_updater ||= Arpa::Services::Profiles::Update::ProfileUpdater.new
17
17
  end
18
-
19
18
  end
20
19
  end
21
20
  end
@@ -3,7 +3,6 @@ module Arpa
3
3
  module Profiles
4
4
  module Remove
5
5
  class ProfileRemover
6
-
7
6
  def remove(entity, disable = false)
8
7
  if disable
9
8
  remover_repo.disable(entity)
@@ -17,7 +16,6 @@ module Arpa
17
16
  def remover_repo
18
17
  @remover_repo ||= Arpa::Repositories::Profiles::Remover.new
19
18
  end
20
-
21
19
  end
22
20
  end
23
21
  end
@@ -3,7 +3,6 @@ module Arpa
3
3
  module Profiles
4
4
  module Update
5
5
  class ProfileUpdater
6
-
7
6
  def update(params)
8
7
  profile = profile_instance(params)
9
8
  validate_profile(profile)
@@ -24,7 +23,6 @@ module Arpa
24
23
  def updater_repo
25
24
  @updater_repo ||= Arpa::Repositories::Profiles::Updater.new
26
25
  end
27
-
28
26
  end
29
27
  end
30
28
  end
@@ -3,7 +3,6 @@ module Arpa
3
3
  module Resources
4
4
  module Create
5
5
  class ResourceCreator
6
-
7
6
  def create(resourceable)
8
7
  resource = resource_instance(resourceable)
9
8
 
@@ -34,7 +33,6 @@ module Arpa
34
33
  def creator_repo
35
34
  @creator_repo ||= Arpa::Repositories::Resources::Creator.new
36
35
  end
37
-
38
36
  end
39
37
  end
40
38
  end
@@ -3,15 +3,13 @@ module Arpa
3
3
  module Resources
4
4
  module Remove
5
5
  class ResourceRemover
6
-
7
6
  def remove_nonexistent_resources(resourceables)
8
- resourceables_names = resourceables.map { |r| r.to_s }
7
+ resourceables_names = resourceables.map(&:to_s)
9
8
 
10
9
  finder_repo.all.each do |resource|
11
10
  exist = resourceables_names.include?(resource.full_name)
12
11
  remover_repo.destroy(resource) unless exist
13
12
  end
14
-
15
13
  end
16
14
 
17
15
  private
@@ -23,7 +21,6 @@ module Arpa
23
21
  def remover_repo
24
22
  @remover_repo ||= Arpa::Repositories::Resources::Remover.new
25
23
  end
26
-
27
24
  end
28
25
  end
29
26
  end
@@ -42,10 +42,9 @@ module Arpa
42
42
  end
43
43
 
44
44
  def action_params(resource, resourceable, except_action_methods)
45
- actions_names = resourceable.action_methods.select{ |action| !except_action_methods.include?(action) }
45
+ actions_names = resourceable.action_methods.reject { |action| except_action_methods.include?(action) }
46
46
  { resource: resource, actions_names: actions_names }
47
47
  end
48
-
49
48
  end
50
49
  end
51
50
  end
@@ -3,7 +3,6 @@ module Arpa
3
3
  module Roles
4
4
  module Create
5
5
  class RoleCreator
6
-
7
6
  def create(params)
8
7
  role = role_instance(params)
9
8
  validate_role(role)
@@ -24,10 +23,8 @@ module Arpa
24
23
  def creator_repo
25
24
  @creator_repo ||= Arpa::Repositories::Roles::Creator.new
26
25
  end
27
-
28
26
  end
29
27
  end
30
28
  end
31
29
  end
32
30
  end
33
-
@@ -3,7 +3,6 @@ module Arpa
3
3
  module Roles
4
4
  module Remove
5
5
  class RoleRemover
6
-
7
6
  def remove(entity)
8
7
  if entity.has_profile?
9
8
  remover_repo.disable(entity)
@@ -17,7 +16,6 @@ module Arpa
17
16
  def remover_repo
18
17
  @remover_repo ||= Arpa::Repositories::Roles::Remover.new
19
18
  end
20
-
21
19
  end
22
20
  end
23
21
  end
@@ -15,9 +15,7 @@ module Arpa
15
15
  def role_creator
16
16
  @role_creator ||= Arpa::Services::Roles::Create::RoleCreator.new
17
17
  end
18
-
19
18
  end
20
19
  end
21
20
  end
22
21
  end
23
-
@@ -16,7 +16,6 @@ module Arpa
16
16
  def role_remover
17
17
  @role_remover ||= Arpa::Services::Roles::Remove::RoleRemover.new
18
18
  end
19
-
20
19
  end
21
20
  end
22
21
  end
@@ -15,7 +15,6 @@ module Arpa
15
15
  def role_updater
16
16
  @role_updater ||= Arpa::Services::Roles::Update::RoleUpdater.new
17
17
  end
18
-
19
18
  end
20
19
  end
21
20
  end
@@ -3,7 +3,6 @@ module Arpa
3
3
  module Roles
4
4
  module Update
5
5
  class RoleUpdater
6
-
7
6
  def update(params)
8
7
  role = role_instance(params)
9
8
  validate_role(role)
@@ -24,7 +23,6 @@ module Arpa
24
23
  def updater_repo
25
24
  @updater_repo ||= Arpa::Repositories::Roles::Updater.new
26
25
  end
27
-
28
26
  end
29
27
  end
30
28
  end
@@ -1,7 +1,6 @@
1
1
  module Arpa
2
2
  module Services
3
3
  class Verifier
4
-
5
4
  def initialize(current_user)
6
5
  @current_user = current_user
7
6
  end
@@ -11,7 +11,6 @@ module Arpa
11
11
  @name = action.name
12
12
  @resource_id = action.resource_id
13
13
  end
14
-
15
14
  end
16
15
  end
17
16
  end
@@ -13,7 +13,6 @@ module Arpa
13
13
  @description = profile.description
14
14
  @role_ids = profile.role_ids
15
15
  end
16
-
17
16
  end
18
17
  end
19
18
  end
@@ -11,7 +11,6 @@ module Arpa
11
11
  @full_name = resource.full_name
12
12
  @name = resource.name
13
13
  end
14
-
15
14
  end
16
15
  end
17
16
  end
@@ -8,13 +8,11 @@ module Arpa
8
8
  validates :name, :description, presence: true
9
9
  validates :action_ids, presence: { message: :many_blank }
10
10
 
11
-
12
11
  def initialize(role)
13
12
  @name = role.name
14
13
  @description = role.description
15
14
  @action_ids = role.action_ids
16
15
  end
17
-
18
16
  end
19
17
  end
20
18
  end
@@ -1,3 +1,3 @@
1
1
  module Arpa
2
- VERSION = "0.2.0"
2
+ VERSION = '0.3.0'.freeze
3
3
  end
@@ -1,7 +1,7 @@
1
1
  module Arpa
2
2
  module Generators
3
3
  class ControllersGenerator < Rails::Generators::Base
4
- source_root File.expand_path("../templates", __FILE__)
4
+ source_root File.expand_path('templates', __dir__)
5
5
 
6
6
  def copy_resources_views_files
7
7
  copy_file 'views/resources/index.html.erb', 'app/views/arpa/resources/index.html.erb'
@@ -31,29 +31,28 @@ module Arpa
31
31
  end
32
32
 
33
33
  def add_routes
34
- route <<-RUBY
35
- scope module: :arpa do
36
- resources :resources do
37
- collection do
38
- get 'generate_resources_and_actions'
39
- end
40
- end
41
-
42
- resources :roles do
43
- collection do
44
- delete ':id', to: 'roles#remove'
45
- end
46
- end
47
-
48
- resources :profiles do
49
- collection do
50
- delete ':id', to: 'profiles#remove'
51
- end
52
- end
53
- end
34
+ route <<~RUBY
35
+ scope module: :arpa do
36
+ resources :resources do
37
+ collection do
38
+ get 'generate_resources_and_actions'
39
+ end
40
+ end
41
+
42
+ resources :roles do
43
+ collection do
44
+ delete ':id', to: 'roles#remove'
45
+ end
46
+ end
47
+
48
+ resources :profiles do
49
+ collection do
50
+ delete ':id', to: 'profiles#remove'
51
+ end
52
+ end
53
+ end
54
54
  RUBY
55
55
  end
56
-
57
56
  end
58
57
  end
59
58
  end
@@ -3,7 +3,7 @@ module Arpa
3
3
  class InstallGenerator < Rails::Generators::Base
4
4
  include Rails::Generators::Migration
5
5
 
6
- source_root File.expand_path("..", __FILE__)
6
+ source_root File.expand_path(__dir__)
7
7
 
8
8
  desc <<-DESC.strip_heredoc
9
9
  The Name of table to create the associate table.
@@ -11,7 +11,7 @@ module Arpa
11
11
  E.g. users, admins.
12
12
 
13
13
  By default is 'users'
14
- DESC
14
+ DESC
15
15
 
16
16
  argument :associate_table, required: false
17
17
 
@@ -25,11 +25,11 @@ module Arpa
25
25
  argument :associate_primary_key, required: false
26
26
 
27
27
  def self.next_migration_number(dirname)
28
- return Time.new.utc.strftime("%Y%m%d%H%M%S") if ActiveRecord::Base.timestamped_migrations
29
- "%.3d" % (current_migration_number(dirname) + 1)
28
+ return Time.new.utc.strftime('%Y%m%d%H%M%S') if ActiveRecord::Base.timestamped_migrations
29
+ format('%.3d', (current_migration_number(dirname) + 1))
30
30
  end
31
31
 
32
- desc "Create a migrate file with all necessery tables including the associate table."
32
+ desc 'Create a migrate file with all necessery tables including the associate table.'
33
33
 
34
34
  def create_migrate_files
35
35
  @associate_table ||= 'users'
@@ -40,7 +40,6 @@ module Arpa
40
40
  def copy_locales
41
41
  copy_file '../../config/locales/arpa.en.yml', 'config/locales/arpa.en.yml'
42
42
  end
43
-
44
43
  end
45
44
  end
46
45
  end
@@ -1,6 +1,6 @@
1
1
  module Arpa
2
2
  class ProfilesController < ApplicationController
3
- before_action :set_profile, only: [:show, :edit, :update, :remove]
3
+ before_action :set_profile, only: %i[show edit update remove]
4
4
 
5
5
  # GET /profiles
6
6
  def index
@@ -8,8 +8,7 @@ module Arpa
8
8
  end
9
9
 
10
10
  # GET /profiles/1
11
- def show
12
- end
11
+ def show; end
13
12
 
14
13
  # GET /profiles/new
15
14
  def new
@@ -24,49 +23,42 @@ module Arpa
24
23
 
25
24
  # POST /profiles
26
25
  def create
27
- profile_creator.create({profile: profile_params}, {
28
- success: -> (profile) {
29
- redirect_to profile_path(profile.id), notice: I18n.t('flash.actions.create_profile.notice')
30
- },
31
- fail: -> (error) {
32
- @profile = Arpa::Entities::Profile.new(profile_params)
33
- @error = error
34
- all_roles
35
- render :new
36
- }
37
- })
26
+ profile_creator.create({ profile: profile_params },
27
+ success: redirect_to_index(I18n.t('flash.actions.create_profile.notice')),
28
+ fail: render_errors(:new))
38
29
  end
39
30
 
40
31
  # PATCH/PUT /profiles/1
41
32
  def update
42
- profile_updater.update({profile: profile_params}, {
43
- success: -> (profile) {
44
- redirect_to profile_path(profile.id), notice: I18n.t('flash.actions.update_profile.notice')
45
- },
46
- fail: -> (error) {
47
- @profile = Arpa::Entities::Profile.new(profile_params)
48
- @error = error
49
- all_roles
50
- render :edit
51
- }
52
- })
33
+ profile_updater.update({ profile: profile_params },
34
+ success: redirect_to_index(I18n.t('flash.actions.update_profile.notice')),
35
+ fail: render_errors(:edit))
53
36
  end
54
37
 
55
38
  # DELETE /profiles/1
56
39
  def remove
57
- profile_remover.remove({profile: @profile}, {
58
- success: -> (profile) {
59
- redirect_to profiles_path, notice: I18n.t('flash.actions.remove_profile.notice')
60
- },
61
- fail: -> (error) {
62
- redirect_to profiles_path, notice: I18n.t('flash.actions.remove_profile.alert')
63
- }
64
- })
65
-
40
+ profile_remover.remove({ profile: @profile },
41
+ success: redirect_to_index(I18n.t('flash.actions.remove_profile.notice')),
42
+ fail: redirect_to_index(I18n.t('flash.actions.remove_profile.alert')))
66
43
  end
67
44
 
68
45
  private
69
46
 
47
+ def redirect_to_index(message)
48
+ lambda do |profile|
49
+ redirect_to profile_path(profile.id), notice: message
50
+ end
51
+ end
52
+
53
+ def render_errors(action_to_render)
54
+ lambda do |error|
55
+ @profile = Arpa::Entities::Profile.new(profile_params)
56
+ @error = error
57
+ all_roles
58
+ render action_to_render
59
+ end
60
+ end
61
+
70
62
  def profile_creator
71
63
  @profile_creator ||= Arpa::Services::Profiles::ProfileManagerCreator.new
72
64
  end
@@ -96,9 +88,11 @@ module Arpa
96
88
  end
97
89
 
98
90
  def profile_params
99
- params.require(:profile).
100
- permit(:id, :name, :description, :entity_id, :entity_class, role_ids: [])
101
- end
91
+ permitted_params = %i[id name description entity_id entity_class]
102
92
 
93
+ params.require(:profile)
94
+ .permit(permitted_params, role_ids: [])
95
+ .to_h
96
+ end
103
97
  end
104
98
  end