aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRobert2017-06-30 17:51:31 +0200
committerRobert2017-06-30 17:51:31 +0200
commitd0e0b5aa02098575d5ac453567439f13c5d7be91 (patch)
tree6dd236a0090c3ff2e5d6503e84d4c930ec6cc0ea
parentd24a3689d6ba1a575e8cc3e506f04b471cc4c977 (diff)
downloadchouette-core-d0e0b5aa02098575d5ac453567439f13c5d7be91.tar.bz2
Spec fix and optimizationcheck_policy_specs
- Fixed bugs in Policy Specs (Shared methods were not using records) - Using build_stubbed instead of create for all Policy Methods (5.43s -> 3.75s)
-rw-r--r--spec/policies/application_policy_spec.rb2
-rw-r--r--spec/policies/boiv_policy_spec.rb2
-rw-r--r--spec/policies/line_policy_spec.rb3
-rw-r--r--spec/policies/route_policy_spec.rb2
-rw-r--r--spec/policies/routing_constraint_zone_policy_spec.rb3
-rw-r--r--spec/policies/time_table_policy_spec.rb3
-rw-r--r--spec/support/pundit/policies.rb4
-rw-r--r--spec/support/pundit/shared_examples.rb26
8 files changed, 29 insertions, 16 deletions
diff --git a/spec/policies/application_policy_spec.rb b/spec/policies/application_policy_spec.rb
index a7234461e..3ec177209 100644
--- a/spec/policies/application_policy_spec.rb
+++ b/spec/policies/application_policy_spec.rb
@@ -7,7 +7,7 @@ RSpec.describe ApplicationPolicy, type: :policy do
end
it "allows a user with a different organisation" do
- user.update_attribute :organisation, referential.organisation
+ user.organisation = referential.organisation
expect_it.to permit(user_context, referential)
end
end
diff --git a/spec/policies/boiv_policy_spec.rb b/spec/policies/boiv_policy_spec.rb
index 514534adc..6787ab2ac 100644
--- a/spec/policies/boiv_policy_spec.rb
+++ b/spec/policies/boiv_policy_spec.rb
@@ -1,5 +1,7 @@
RSpec.describe BoivPolicy, type: :policy do
+ let( :record ){ nil }
+
permissions :index? do
it_behaves_like 'permitted policy and same organisation', 'boiv:read-offer'
end
diff --git a/spec/policies/line_policy_spec.rb b/spec/policies/line_policy_spec.rb
index ead5918aa..e720b2bc7 100644
--- a/spec/policies/line_policy_spec.rb
+++ b/spec/policies/line_policy_spec.rb
@@ -1,5 +1,8 @@
RSpec.describe LinePolicy, type: :policy do
+ let( :record ){ build_stubbed :line }
+
+
%w{create destroy edit}.each do | permission |
footnote_permission = "#{permission}_footnote"
permissions "#{footnote_permission}?".to_sym do
diff --git a/spec/policies/route_policy_spec.rb b/spec/policies/route_policy_spec.rb
index baf14c9fc..cc949ff45 100644
--- a/spec/policies/route_policy_spec.rb
+++ b/spec/policies/route_policy_spec.rb
@@ -1,5 +1,7 @@
RSpec.describe RoutePolicy, type: :policy do
+ let( :record ){ build_stubbed :route }
+
permissions :create? do
it_behaves_like 'permitted policy', 'routes.create', archived: true
end
diff --git a/spec/policies/routing_constraint_zone_policy_spec.rb b/spec/policies/routing_constraint_zone_policy_spec.rb
index 4b0f2cafe..2508b49f9 100644
--- a/spec/policies/routing_constraint_zone_policy_spec.rb
+++ b/spec/policies/routing_constraint_zone_policy_spec.rb
@@ -1,5 +1,8 @@
RSpec.describe RoutingConstraintZonePolicy, type: :policy do
+ let( :record ){ build_stubbed :routing_constraint_zone }
+
+
permissions :create? do
it_behaves_like 'permitted policy', 'routing_constraint_zones.create', archived: true
end
diff --git a/spec/policies/time_table_policy_spec.rb b/spec/policies/time_table_policy_spec.rb
index 1283a9fcf..90e6600ea 100644
--- a/spec/policies/time_table_policy_spec.rb
+++ b/spec/policies/time_table_policy_spec.rb
@@ -1,5 +1,8 @@
RSpec.describe TimeTablePolicy, type: :policy do
+ let( :record ){ build_stubbed :time_table }
+
+
permissions :duplicate? do
it_behaves_like 'permitted policy and same organisation', 'time_tables.create', archived: true
end
diff --git a/spec/support/pundit/policies.rb b/spec/support/pundit/policies.rb
index 56433b2ee..02fea2944 100644
--- a/spec/support/pundit/policies.rb
+++ b/spec/support/pundit/policies.rb
@@ -24,8 +24,8 @@ module Support
into.module_eval do
subject { described_class }
let( :user_context ) { create_user_context(user: user, referential: referential) }
- let( :referentail ) { create :referential }
- let( :user ) { create :user }
+ let( :referential ) { build_stubbed :referential }
+ let( :user ) { build_stubbed :user }
end
end
def with_user_permission(permission, &blk)
diff --git a/spec/support/pundit/shared_examples.rb b/spec/support/pundit/shared_examples.rb
index 4d14c46da..33ed1ffae 100644
--- a/spec/support/pundit/shared_examples.rb
+++ b/spec/support/pundit/shared_examples.rb
@@ -3,11 +3,11 @@ RSpec.shared_examples 'permitted policy and same organisation' do
context 'permission absent → ' do
it "denies a user with a different organisation" do
- expect_it.not_to permit(user_context, referential)
+ expect_it.not_to permit(user_context, record)
end
it 'and also a user with the same organisation' do
- user.update_attribute :organisation, referential.organisation
- expect_it.not_to permit(user_context, referential)
+ user.organisation = referential.organisation
+ expect_it.not_to permit(user_context, record)
end
end
@@ -17,19 +17,19 @@ RSpec.shared_examples 'permitted policy and same organisation' do
end
it 'denies a user with a different organisation' do
- expect_it.not_to permit(user_context, referential)
+ expect_it.not_to permit(user_context, record)
end
it 'but allows it for a user with the same organisation' do
- user.update_attribute :organisation, referential.organisation
- expect_it.to permit(user_context, referential)
+ user.organisation = referential.organisation
+ expect_it.to permit(user_context, record)
end
if archived
it 'removes the permission for archived referentials' do
- user.update_attribute :organisation, referential.organisation
- referential.update_attribute :archived_at, 42.seconds.ago
- expect_it.not_to permit(user_context, referential)
+ user.organisation = referential.organisation
+ referential.archived_at = 42.seconds.ago
+ expect_it.not_to permit(user_context, record)
end
end
end
@@ -39,7 +39,7 @@ RSpec.shared_examples 'permitted policy' do
| permission, archived: false|
context 'permission absent → ' do
it "denies a user with a different organisation" do
- expect_it.not_to permit(user_context, referential)
+ expect_it.not_to permit(user_context, record)
end
end
context 'permission present → ' do
@@ -47,13 +47,13 @@ RSpec.shared_examples 'permitted policy' do
add_permissions(permission, for_user: user)
end
it 'allows a user with a different organisation' do
- expect_it.to permit(user_context, referential)
+ expect_it.to permit(user_context, record)
end
if archived
it 'removes the permission for archived referentials' do
- referential.update_attribute :archived_at, 42.seconds.ago
- expect_it.not_to permit(user_context, referential)
+ referential.archived_at = 42.seconds.ago
+ expect_it.not_to permit(user_context, record)
end
end
end