arpa 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +42 -0
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +138 -0
- data/Rakefile +2 -0
- data/arpa.gemspec +33 -0
- data/lib/arpa.rb +91 -0
- data/lib/arpa/additions/resource.rb +29 -0
- data/lib/arpa/assets/stylesheets/ar_accordion.scss +80 -0
- data/lib/arpa/controllers/profiles_controller.rb +106 -0
- data/lib/arpa/controllers/resources_controller.rb +47 -0
- data/lib/arpa/controllers/roles_controller.rb +106 -0
- data/lib/arpa/data_mappers/action_mapper.rb +13 -0
- data/lib/arpa/data_mappers/base.rb +117 -0
- data/lib/arpa/data_mappers/profile_mapper.rb +14 -0
- data/lib/arpa/data_mappers/resource_mapper.rb +11 -0
- data/lib/arpa/data_mappers/role_mapper.rb +14 -0
- data/lib/arpa/entities/action.rb +24 -0
- data/lib/arpa/entities/permissions.rb +35 -0
- data/lib/arpa/entities/profile.rb +22 -0
- data/lib/arpa/entities/resource.rb +58 -0
- data/lib/arpa/entities/role.rb +28 -0
- data/lib/arpa/exceptions/record_invalid.rb +13 -0
- data/lib/arpa/repositories/actions/creator.rb +18 -0
- data/lib/arpa/repositories/actions/finder.rb +23 -0
- data/lib/arpa/repositories/actions/remover.rb +22 -0
- data/lib/arpa/repositories/actions/repository_action.rb +15 -0
- data/lib/arpa/repositories/base.rb +15 -0
- data/lib/arpa/repositories/profiles/creator.rb +18 -0
- data/lib/arpa/repositories/profiles/finder.rb +29 -0
- data/lib/arpa/repositories/profiles/remover.rb +29 -0
- data/lib/arpa/repositories/profiles/repository_profile.rb +12 -0
- data/lib/arpa/repositories/profiles/updater.rb +23 -0
- data/lib/arpa/repositories/registrator.rb +44 -0
- data/lib/arpa/repositories/resources/creator.rb +18 -0
- data/lib/arpa/repositories/resources/finder.rb +45 -0
- data/lib/arpa/repositories/resources/remover.rb +22 -0
- data/lib/arpa/repositories/resources/repository_resource.rb +12 -0
- data/lib/arpa/repositories/roles/creator.rb +18 -0
- data/lib/arpa/repositories/roles/finder.rb +29 -0
- data/lib/arpa/repositories/roles/remover.rb +29 -0
- data/lib/arpa/repositories/roles/repository_role.rb +13 -0
- data/lib/arpa/repositories/roles/updater.rb +23 -0
- data/lib/arpa/services/actions/create/action_creator.rb +50 -0
- data/lib/arpa/services/actions/remove/action_remover.rb +24 -0
- data/lib/arpa/services/base.rb +41 -0
- data/lib/arpa/services/profiles/create/profile_creator.rb +32 -0
- data/lib/arpa/services/profiles/profile_manager_creator.rb +22 -0
- data/lib/arpa/services/profiles/profile_manager_remover.rb +24 -0
- data/lib/arpa/services/profiles/profile_manager_updater.rb +22 -0
- data/lib/arpa/services/profiles/remove/profile_remover.rb +25 -0
- data/lib/arpa/services/profiles/update/profile_updater.rb +32 -0
- data/lib/arpa/services/resources/create/resource_creator.rb +42 -0
- data/lib/arpa/services/resources/remove/resource_remover.rb +31 -0
- data/lib/arpa/services/resources/resource_manager_creator.rb +50 -0
- data/lib/arpa/services/roles/create/role_creator.rb +33 -0
- data/lib/arpa/services/roles/remove/role_remover.rb +25 -0
- data/lib/arpa/services/roles/role_manager_creator.rb +23 -0
- data/lib/arpa/services/roles/role_manager_remover.rb +23 -0
- data/lib/arpa/services/roles/role_manager_updater.rb +22 -0
- data/lib/arpa/services/roles/update/role_updater.rb +32 -0
- data/lib/arpa/services/verifier.rb +24 -0
- data/lib/arpa/validators/action_validator.rb +17 -0
- data/lib/arpa/validators/profile_validator.rb +19 -0
- data/lib/arpa/validators/resource_validator.rb +17 -0
- data/lib/arpa/validators/role_validator.rb +20 -0
- data/lib/arpa/version.rb +3 -0
- data/lib/arpa/views/profiles/_form.html.erb +41 -0
- data/lib/arpa/views/profiles/edit.html.erb +6 -0
- data/lib/arpa/views/profiles/index.html.erb +29 -0
- data/lib/arpa/views/profiles/new.html.erb +5 -0
- data/lib/arpa/views/profiles/show.html.erb +37 -0
- data/lib/arpa/views/resources/index.html.erb +27 -0
- data/lib/arpa/views/resources/show.html.erb +33 -0
- data/lib/arpa/views/roles/_form.html.erb +55 -0
- data/lib/arpa/views/roles/edit.html.erb +6 -0
- data/lib/arpa/views/roles/index.html.erb +29 -0
- data/lib/arpa/views/roles/new.html.erb +5 -0
- data/lib/arpa/views/roles/show.html.erb +37 -0
- data/lib/config/locales/arpa.en.yml +38 -0
- data/lib/generators/ar/install_generator.rb +74 -0
- data/lib/generators/ar/templates/migration.rb +48 -0
- data/spec/factories/repository_actions.rb +19 -0
- data/spec/factories/repository_profiles.rb +11 -0
- data/spec/factories/repository_resources.rb +15 -0
- data/spec/factories/repository_roles.rb +11 -0
- data/spec/lib/ar/additions/resource_spec.rb +34 -0
- data/spec/lib/ar/data_mappers/action_mapper_spec.rb +46 -0
- data/spec/lib/ar/data_mappers/base_spec.rb +47 -0
- data/spec/lib/ar/data_mappers/profile_mapper_spec.rb +43 -0
- data/spec/lib/ar/data_mappers/resource_mapper_spec.rb +38 -0
- data/spec/lib/ar/data_mappers/role_mapper_spec.rb +47 -0
- data/spec/lib/ar/entities/action_spec.rb +19 -0
- data/spec/lib/ar/entities/permissions_spec.rb +61 -0
- data/spec/lib/ar/entities/resource_spec.rb +35 -0
- data/spec/lib/ar/repositories/actions/finder_spec.rb +40 -0
- data/spec/lib/ar/repositories/base_spec.rb +37 -0
- data/spec/lib/ar/repositories/profiles/finder_spec.rb +43 -0
- data/spec/lib/ar/repositories/profiles/remover_spec.rb +31 -0
- data/spec/lib/ar/repositories/resources/finder_spec.rb +92 -0
- data/spec/lib/ar/repositories/resources/remover_spec.rb +38 -0
- data/spec/lib/ar/repositories/roles/finder_spec.rb +43 -0
- data/spec/lib/ar/repositories/roles/remover_spec.rb +31 -0
- data/spec/lib/ar/requests/profiles/create_request_spec.rb +51 -0
- data/spec/lib/ar/requests/profiles/remove_request_spec.rb +36 -0
- data/spec/lib/ar/requests/resources/create_request_spec.rb +107 -0
- data/spec/lib/ar/requests/roles/create_request_spec.rb +40 -0
- data/spec/lib/ar/requests/roles/remove_request_spec.rb +23 -0
- data/spec/lib/ar/requests/roles/update_request_spec.rb +50 -0
- data/spec/lib/ar/services/actions/create/action_creator_spec.rb +88 -0
- data/spec/lib/ar/services/actions/remove/action_remover_spec.rb +36 -0
- data/spec/lib/ar/services/base_spec.rb +94 -0
- data/spec/lib/ar/services/profiles/create/profile_creator_spec.rb +68 -0
- data/spec/lib/ar/services/profiles/profile_manager_creator_spec.rb +31 -0
- data/spec/lib/ar/services/profiles/profile_manager_remover_spec.rb +44 -0
- data/spec/lib/ar/services/profiles/profile_manager_updater_spec.rb +31 -0
- data/spec/lib/ar/services/profiles/remove/profile_remover_spec.rb +45 -0
- data/spec/lib/ar/services/profiles/update/profile_updater_spec.rb +68 -0
- data/spec/lib/ar/services/resources/create/resource_creator_spec.rb +87 -0
- data/spec/lib/ar/services/resources/remove/resource_remover_spec.rb +50 -0
- data/spec/lib/ar/services/resources/resource_manager_creator_spec.rb +71 -0
- data/spec/lib/ar/services/roles/create/role_creator_spec.rb +68 -0
- data/spec/lib/ar/services/roles/remove/role_remover_spec.rb +50 -0
- data/spec/lib/ar/services/roles/role_manager_creator_spec.rb +31 -0
- data/spec/lib/ar/services/roles/role_manager_remover_spec.rb +32 -0
- data/spec/lib/ar/services/roles/role_manager_updater_spec.rb +31 -0
- data/spec/lib/ar/services/roles/update/role_updater_spec.rb +68 -0
- data/spec/lib/ar/services/verifier_spec.rb +44 -0
- data/spec/lib/ar/validators/action_validator_spec.rb +15 -0
- data/spec/lib/ar/validators/profile_validator_spec.rb +16 -0
- data/spec/lib/ar/validators/resource_validator_spec.rb +15 -0
- data/spec/lib/ar/validators/role_validator_spec.rb +16 -0
- data/spec/spec_helper.rb +33 -0
- data/spec/support/repositories/test_repository.rb +2 -0
- data/spec/support/schema.rb +58 -0
- metadata +380 -0
@@ -0,0 +1,37 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
class BaseImplementationTest
|
4
|
+
include Arpa::Repositories::Base
|
5
|
+
end
|
6
|
+
|
7
|
+
describe Arpa::Repositories::Base, type: :repository, fast: true do
|
8
|
+
|
9
|
+
let(:base_implementation) { BaseImplementationTest.new }
|
10
|
+
|
11
|
+
context 'when Implementation class do not override methods from Base' do
|
12
|
+
|
13
|
+
context 'when call :mapper_instance' do
|
14
|
+
|
15
|
+
it 'should raise NotImplementedError' do
|
16
|
+
expect { base_implementation.mapper_instance }.to raise_error do |error|
|
17
|
+
expect(error).to be_a NotImplementedError
|
18
|
+
expect(error.message).to eql 'This BaseImplementationTest cannot respond :mapper_instance'
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
|
24
|
+
context 'when call :repository_class' do
|
25
|
+
|
26
|
+
it 'should raise NotImplementedError' do
|
27
|
+
expect { base_implementation.repository_class}.to raise_error do |error|
|
28
|
+
expect(error).to be_a NotImplementedError
|
29
|
+
expect(error.message).to eql 'This BaseImplementationTest cannot respond :repository_class'
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Arpa::Repositories::Profiles::Finder, type: :repository, slow: true do
|
4
|
+
|
5
|
+
let(:record_001) { create :repository_profile, name: 'profile_01' }
|
6
|
+
let(:record_002) { create :repository_profile, name: 'profile_02' }
|
7
|
+
|
8
|
+
before do
|
9
|
+
record_001
|
10
|
+
record_002
|
11
|
+
end
|
12
|
+
|
13
|
+
describe '#find' do
|
14
|
+
let(:result) { subject.find(record_001.id) }
|
15
|
+
|
16
|
+
it 'the Profile entity should has name "profile_01"' do
|
17
|
+
expect(result.name).to eql 'profile_01'
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'the result should be an Arpa::Entities::Profile' do
|
21
|
+
expect(result).to be_an Arpa::Entities::Profile
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
|
26
|
+
describe '#all' do
|
27
|
+
let(:result) { subject.all }
|
28
|
+
|
29
|
+
it 'should return size 2' do
|
30
|
+
expect(result.size).to be == 2
|
31
|
+
end
|
32
|
+
|
33
|
+
it 'the first Profile entity should has name "profile_01"' do
|
34
|
+
expect(result.first.name).to eql 'profile_01'
|
35
|
+
end
|
36
|
+
|
37
|
+
it 'the result should be an Array of Arpa::Entities::Profile' do
|
38
|
+
expect(result.first).to be_an Arpa::Entities::Profile
|
39
|
+
end
|
40
|
+
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Arpa::Repositories::Profiles::Remover, type: :repository, slow: true do
|
4
|
+
|
5
|
+
let(:created_profile) { create :repository_profile }
|
6
|
+
|
7
|
+
before { created_profile }
|
8
|
+
|
9
|
+
describe '#destroy' do
|
10
|
+
let(:destroy_profile) { subject.destroy(created_profile) }
|
11
|
+
|
12
|
+
it 'should destroy the role' do
|
13
|
+
expect { destroy_profile }.to change(Arpa::Repositories::Profiles::RepositoryProfile, :count).by(-1)
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
|
18
|
+
describe '#disable' do
|
19
|
+
let(:disable_profile) { subject.disable(created_profile) }
|
20
|
+
|
21
|
+
it 'should disable the role' do
|
22
|
+
expect { disable_profile }.to change(Arpa::Repositories::Profiles::RepositoryProfile, :count).by(-1)
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'role should be setted to removed: true' do
|
26
|
+
expect(disable_profile.removed).to be_truthy
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
@@ -0,0 +1,92 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Arpa::Repositories::Resources::Finder, type: :repository, slow: true do
|
4
|
+
|
5
|
+
let(:record_001) { create :repository_resource, :user }
|
6
|
+
let(:record_002) { create :repository_resource, :contact }
|
7
|
+
|
8
|
+
describe '#find' do
|
9
|
+
let(:result) { subject.find(record_001.id) }
|
10
|
+
|
11
|
+
it 'the Resource entity should has name "users"' do
|
12
|
+
expect(result.name).to eql 'users'
|
13
|
+
end
|
14
|
+
|
15
|
+
it 'the result should be an Arpa::Entities::Resource' do
|
16
|
+
expect(result).to be_an Arpa::Entities::Resource
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
|
21
|
+
describe '#all' do
|
22
|
+
let(:result) { subject.all }
|
23
|
+
|
24
|
+
before do
|
25
|
+
record_001
|
26
|
+
record_002
|
27
|
+
end
|
28
|
+
|
29
|
+
|
30
|
+
it 'should return size 2' do
|
31
|
+
expect(result.size).to be == 2
|
32
|
+
end
|
33
|
+
|
34
|
+
it 'the first Resource entity should has full_name "ContactsController"' do
|
35
|
+
expect(result.first.full_name).to eql 'ContactsController'
|
36
|
+
end
|
37
|
+
|
38
|
+
it 'the result should be an Array of Arpa::Entities::Resource' do
|
39
|
+
expect(result.first).to be_an Arpa::Entities::Resource
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
43
|
+
|
44
|
+
describe '#by_full_name' do
|
45
|
+
|
46
|
+
before do
|
47
|
+
record_001
|
48
|
+
record_002
|
49
|
+
end
|
50
|
+
|
51
|
+
context 'when exist with the full_name' do
|
52
|
+
|
53
|
+
let(:result) { subject.by_full_name('UsersController') }
|
54
|
+
|
55
|
+
it 'should return a resource with name "users"' do
|
56
|
+
expect(result.name).to eql 'users'
|
57
|
+
end
|
58
|
+
|
59
|
+
it 'the result should be an instance of Arpa::Entities::Resource' do
|
60
|
+
expect(result).to be_an Arpa::Entities::Resource
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
context 'when nonexist with the full_name' do
|
65
|
+
|
66
|
+
let(:result) { subject.by_full_name('NonessController') }
|
67
|
+
|
68
|
+
it 'the result should return nil' do
|
69
|
+
expect(result).to be_nil
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
end
|
74
|
+
|
75
|
+
describe 'getting permissions from profile_ids' do
|
76
|
+
let(:profile_001) { create :repository_profile, :with_complete_association, name: 'prof_001' }
|
77
|
+
let(:profile_002) { create :repository_profile, :with_complete_association, name: 'prof_002' }
|
78
|
+
let(:profile_ids) { [profile_001.id, profile_002.id] }
|
79
|
+
|
80
|
+
let(:result) { subject.permissions(profile_ids) }
|
81
|
+
let(:first) { result.first }
|
82
|
+
|
83
|
+
it 'should return an Arpa::Entities::Permissions' do
|
84
|
+
expect(result).to be_an Arpa::Entities::Permissions
|
85
|
+
end
|
86
|
+
|
87
|
+
it 'should has just one permission' do
|
88
|
+
expect(result.permissions.size).to be == 1
|
89
|
+
end
|
90
|
+
|
91
|
+
end
|
92
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Arpa::Repositories::Resources::Remover, type: :repository, slow: true do
|
4
|
+
|
5
|
+
let(:resource_001) { create :repository_resource, :user }
|
6
|
+
let(:destroy_resource) { subject.destroy(resource_001) }
|
7
|
+
|
8
|
+
describe '#destroy' do
|
9
|
+
|
10
|
+
context 'when resource has no actions associate' do
|
11
|
+
let(:actions) { [] }
|
12
|
+
|
13
|
+
it 'should destroy the resource' do
|
14
|
+
expect { destroy_resource }.to change(Arpa::Repositories::Resources::RepositoryResource, :count).by(0)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
context 'when resource has actions associate' do
|
19
|
+
let(:action_001) { create :repository_action, :index, resource: resource_001 }
|
20
|
+
let(:action_002) { create :repository_action, :show, resource: resource_001 }
|
21
|
+
|
22
|
+
before do
|
23
|
+
action_001
|
24
|
+
action_002
|
25
|
+
end
|
26
|
+
|
27
|
+
it 'should destroy the resource' do
|
28
|
+
expect { destroy_resource }.to change(Arpa::Repositories::Resources::RepositoryResource, :count).by(-1)
|
29
|
+
end
|
30
|
+
|
31
|
+
it 'should destroy all actions associate with resource' do
|
32
|
+
expect { destroy_resource }.to change(Arpa::Repositories::Actions::RepositoryAction, :count).by(-2)
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Arpa::Repositories::Roles::Finder, type: :repository, slow: true do
|
4
|
+
|
5
|
+
let(:record_001) { create :repository_role, name: 'role_01' }
|
6
|
+
let(:record_002) { create :repository_role, name: 'role_02' }
|
7
|
+
|
8
|
+
before do
|
9
|
+
record_001
|
10
|
+
record_002
|
11
|
+
end
|
12
|
+
|
13
|
+
describe '#find' do
|
14
|
+
let(:result) { subject.find(record_001.id) }
|
15
|
+
|
16
|
+
it 'the Role entity should has name "role_01"' do
|
17
|
+
expect(result.name).to eql 'role_01'
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'the result should be an Arpa::Entities::Role' do
|
21
|
+
expect(result).to be_an Arpa::Entities::Role
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
|
26
|
+
describe '#all' do
|
27
|
+
let(:result) { subject.all }
|
28
|
+
|
29
|
+
it 'should return size 2' do
|
30
|
+
expect(result.size).to be == 2
|
31
|
+
end
|
32
|
+
|
33
|
+
it 'the first Role entity should has name "role_01"' do
|
34
|
+
expect(result.first.name).to eql 'role_01'
|
35
|
+
end
|
36
|
+
|
37
|
+
it 'the result should be an Array of Arpa::Entities::Role' do
|
38
|
+
expect(result.first).to be_an Arpa::Entities::Role
|
39
|
+
end
|
40
|
+
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Arpa::Repositories::Roles::Remover, type: :repository, slow: true do
|
4
|
+
|
5
|
+
let(:created_role) { create :repository_role }
|
6
|
+
|
7
|
+
before { created_role }
|
8
|
+
|
9
|
+
describe '#destroy' do
|
10
|
+
let(:destroy_role) { subject.destroy(created_role) }
|
11
|
+
|
12
|
+
it 'should destroy the role' do
|
13
|
+
expect { destroy_role }.to change(Arpa::Repositories::Roles::RepositoryRole, :count).by(-1)
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
|
18
|
+
describe '#disable' do
|
19
|
+
let(:disable_role) { subject.disable(created_role) }
|
20
|
+
|
21
|
+
it 'should disable the role' do
|
22
|
+
expect { disable_role }.to change(Arpa::Repositories::Roles::RepositoryRole, :count).by(-1)
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'role should be setted to removed: true' do
|
26
|
+
expect(disable_role.removed).to be_truthy
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
RSpec.describe "Create Profile", type: [:request, :profile] do
|
4
|
+
let(:finder_profile_repo) { Arpa::Repositories::Profiles::Finder.new }
|
5
|
+
let(:finder_resource_repo) { Arpa::Repositories::Resources::Finder.new }
|
6
|
+
let(:finder_role_repo) { Arpa::Repositories::Roles::Finder.new }
|
7
|
+
let(:creator_resource_service) { Arpa::Services::Resources::ResourceManagerCreator.new }
|
8
|
+
let(:creator_role_service) { Arpa::Services::Roles::RoleManagerCreator.new }
|
9
|
+
let(:creator_profile_service) { Arpa::Services::Profiles::ProfileManagerCreator.new }
|
10
|
+
let(:success_proc) { ->(r) {} }
|
11
|
+
let(:callback) { {success: success_proc, fail: ->(e) {raise e} } }
|
12
|
+
|
13
|
+
context 'when have no created resources or actions' do
|
14
|
+
let(:resourceable_001) { double to_s: 'UsersController', action_methods: [:index, :show, 'edit'] }
|
15
|
+
let(:resourceable_002) { double to_s: 'ContactsController', action_methods: [:index, 'edit'] }
|
16
|
+
let(:resourceables) { [resourceable_001, resourceable_002] }
|
17
|
+
let(:created_resources) { creator_resource_service.create({resourceables: resourceables}, callback) }
|
18
|
+
|
19
|
+
let(:action_ids) { finder_resource_repo.all.first.actions.collect{ |action| action.id} }
|
20
|
+
let(:role_001_params) { {role: {name: 'role_name_001', description: 'role_description_001', action_ids: action_ids}} }
|
21
|
+
let(:role_002_params) { {role: {name: 'role_name_002', description: 'role_description_002', action_ids: action_ids}} }
|
22
|
+
let(:created_roles) do
|
23
|
+
creator_role_service.create(role_001_params, callback)
|
24
|
+
creator_role_service.create(role_002_params, callback)
|
25
|
+
end
|
26
|
+
|
27
|
+
let(:role_ids) { finder_role_repo.all.map { |r| r.id } }
|
28
|
+
|
29
|
+
before do
|
30
|
+
created_resources
|
31
|
+
created_roles
|
32
|
+
profile_params = {profile: {name: 'profile_name', description: 'profile_description', role_ids: role_ids}}
|
33
|
+
creator_profile_service.create(profile_params, callback)
|
34
|
+
end
|
35
|
+
|
36
|
+
it 'should be recorded one profile' do
|
37
|
+
expect(finder_profile_repo.all.size).to be == 1
|
38
|
+
end
|
39
|
+
|
40
|
+
it 'should has 2 roles associated' do
|
41
|
+
expect(finder_profile_repo.all.first.roles.size).to be == 2
|
42
|
+
end
|
43
|
+
|
44
|
+
context 'names of associated roles' do
|
45
|
+
it {expect(finder_profile_repo.all.first.roles.first.name).to eql 'role_name_001'}
|
46
|
+
it {expect(finder_profile_repo.all.first.roles.second.name).to eql 'role_name_002'}
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
50
|
+
|
51
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
RSpec.describe "Remove Profile", type: [:request, :profile] do
|
4
|
+
let(:finder_profile_repo) { Arpa::Repositories::Profiles::Finder.new }
|
5
|
+
let(:remover_profile_service) { Arpa::Services::Profiles::ProfileManagerRemover.new }
|
6
|
+
let(:success_proc) { ->(r) {} }
|
7
|
+
let(:callback) { {success: success_proc, fail: ->(e) {raise e} } }
|
8
|
+
|
9
|
+
describe 'removing a Profile' do
|
10
|
+
|
11
|
+
before do
|
12
|
+
create :repository_profile
|
13
|
+
remover_profile_service.remove(profile_params_to_remove, callback)
|
14
|
+
end
|
15
|
+
|
16
|
+
context 'when need destroy a Profile' do
|
17
|
+
let(:profile_params_to_remove) { {profile: finder_profile_repo.all.first } }
|
18
|
+
|
19
|
+
it 'record should be removed ' do
|
20
|
+
expect(finder_profile_repo.all.size).to be == 0
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
|
25
|
+
context 'when need disable a Profile' do
|
26
|
+
let(:profile_params_to_remove) { {profile: finder_profile_repo.all.first, disable: true } }
|
27
|
+
|
28
|
+
it 'record should be removed ' do
|
29
|
+
expect(finder_profile_repo.all.size).to be == 0
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
@@ -0,0 +1,107 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
RSpec.describe "Create Resource", type: [:request, :resource] do
|
4
|
+
let(:finder_repo) { Arpa::Repositories::Resources::Finder.new }
|
5
|
+
let(:creator_service) { Arpa::Services::Resources::ResourceManagerCreator.new }
|
6
|
+
let(:success_proc) { ->(r) {} }
|
7
|
+
let(:callback) { {success: success_proc, fail: ->(e) {raise e} } }
|
8
|
+
|
9
|
+
context 'when have no created resources or actions' do
|
10
|
+
let(:resourceable_001) { double to_s: 'UsersController', action_methods: [:index, :show, 'edit'] }
|
11
|
+
let(:resourceable_002) { double to_s: 'ContactsController', action_methods: [:index, 'edit'] }
|
12
|
+
let(:resourceables) { [resourceable_001, resourceable_002] }
|
13
|
+
|
14
|
+
before do
|
15
|
+
creator_service.create({resourceables: resourceables}, callback)
|
16
|
+
end
|
17
|
+
|
18
|
+
it 'should be recorded two resources' do
|
19
|
+
expect(finder_repo.all.size).to be == 2
|
20
|
+
end
|
21
|
+
|
22
|
+
context 'names of resources' do
|
23
|
+
it {expect(finder_repo.all.first.name).to eql('contacts') }
|
24
|
+
it {expect(finder_repo.all.second.name).to eql('users') }
|
25
|
+
end
|
26
|
+
|
27
|
+
context 'Contacts resource' do
|
28
|
+
let(:contacts_resource) { finder_repo.all.first }
|
29
|
+
|
30
|
+
it 'should has two actions' do
|
31
|
+
expect(contacts_resource.actions.size).to be == 2
|
32
|
+
end
|
33
|
+
|
34
|
+
context 'names of actions' do
|
35
|
+
it {expect(contacts_resource.actions.first.name).to eql('edit') }
|
36
|
+
it {expect(contacts_resource.actions.second.name).to eql('index') }
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
context 'Users resource' do
|
41
|
+
let(:users_resource) { finder_repo.all.second }
|
42
|
+
|
43
|
+
it 'should has three actions' do
|
44
|
+
expect(users_resource.actions.size).to be == 3
|
45
|
+
end
|
46
|
+
|
47
|
+
context 'names of actions' do
|
48
|
+
it {expect(users_resource.actions.first.name).to eql('edit') }
|
49
|
+
it {expect(users_resource.actions.second.name).to eql('index') }
|
50
|
+
it {expect(users_resource.actions.third.name).to eql('show') }
|
51
|
+
end
|
52
|
+
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
context 'when have created resources or actions' do
|
57
|
+
let(:resourceable_001) { double to_s: 'UsersController', action_methods: [:index, :show, 'edit'] }
|
58
|
+
let(:resourceable_002) { double to_s: 'ContactsController', action_methods: [:index, 'edit'] }
|
59
|
+
let(:created_resourceables) { [resourceable_001, resourceable_002] }
|
60
|
+
|
61
|
+
let(:resourceable_003) { double to_s: 'Arpa::NewUsersController', action_methods: [:show, 'edit'] }
|
62
|
+
let(:resourceable_004) { double to_s: 'ContactsController', action_methods: [:index, 'new_edit'] }
|
63
|
+
let(:new_resourceables) { [resourceable_003, resourceable_004] }
|
64
|
+
|
65
|
+
before do
|
66
|
+
creator_service.create({resourceables: created_resourceables}, callback)
|
67
|
+
creator_service.create({resourceables: new_resourceables}, callback)
|
68
|
+
end
|
69
|
+
|
70
|
+
it 'should be recorded two resources' do
|
71
|
+
expect(finder_repo.all.size).to be == 2
|
72
|
+
end
|
73
|
+
|
74
|
+
context 'names of resources' do
|
75
|
+
it {expect(finder_repo.all.first.name).to eql('arpa/new_users') }
|
76
|
+
it {expect(finder_repo.all.second.name).to eql('contacts') }
|
77
|
+
end
|
78
|
+
|
79
|
+
context 'Contacts resource' do
|
80
|
+
let(:contacts_resource) { finder_repo.all.second }
|
81
|
+
|
82
|
+
it 'should has two actions' do
|
83
|
+
expect(contacts_resource.actions.size).to be == 2
|
84
|
+
end
|
85
|
+
|
86
|
+
context 'names of actions' do
|
87
|
+
it {expect(contacts_resource.actions.first.name).to eql('index') }
|
88
|
+
it {expect(contacts_resource.actions.second.name).to eql('new_edit') }
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
context 'Arpa::NewUsers resource' do
|
93
|
+
let(:users_resource) { finder_repo.all.first }
|
94
|
+
|
95
|
+
it 'should has two actions' do
|
96
|
+
expect(users_resource.actions.size).to be == 2
|
97
|
+
end
|
98
|
+
|
99
|
+
context 'names of actions' do
|
100
|
+
it {expect(users_resource.actions.first.name).to eql('edit') }
|
101
|
+
it {expect(users_resource.actions.second.name).to eql('show') }
|
102
|
+
end
|
103
|
+
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
107
|
+
end
|