arpa 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
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