From d78bb3d00c2a4e2f867089813ce18bec6b1826b2 Mon Sep 17 00:00:00 2001
From: Marcela Ribeiro de Oliveira <mro15@inf.ufpr.br>
Date: Thu, 6 Jul 2017 15:09:59 -0300
Subject: [PATCH] support to role partner

---
 app/models/role.rb                     |  6 +++++-
 app/models/user.rb                     |  7 +++++++
 app/policies/learning_object_policy.rb |  6 +++---
 spec/shared/contexts.rb                | 13 +++++++++++++
 4 files changed, 28 insertions(+), 4 deletions(-)

diff --git a/app/models/role.rb b/app/models/role.rb
index 4beb5f5c..4d4af879 100644
--- a/app/models/role.rb
+++ b/app/models/role.rb
@@ -64,5 +64,9 @@ class Role < ApplicationRecord
   def self.submitter
     find_by(name: 'submitter') || create!(name: 'submitter')
   end
-  
+
+  def self.partner
+    find_by(name: 'partner') || create!(name: 'partner')
+  end
+
 end
diff --git a/app/models/user.rb b/app/models/user.rb
index b3036386..d603fdd3 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -155,6 +155,13 @@ class User < ApplicationRecord
     false
   end
 
+  def is_partner?
+    roles.each do |role|
+      return true if role.name == 'partner'
+    end
+    false
+  end
+
   def can_edit?
     self.is_admin? || self.is_editor?
   end
diff --git a/app/policies/learning_object_policy.rb b/app/policies/learning_object_policy.rb
index e0044b49..ff55dfce 100644
--- a/app/policies/learning_object_policy.rb
+++ b/app/policies/learning_object_policy.rb
@@ -38,15 +38,15 @@ class LearningObjectPolicy < ApplicationPolicy
   end
 
   def create?
-    record if user_exists? && user.is_submitter?
+    record if (user_exists? && user.is_submitter?) || (user_exists? && user.is_partner?)
   end
 
   def update?
-    record if owns? && user.is_submitter?
+    record if (owns? && user.is_submitter?) || (owns? && user.is_partner?)
   end
 
   def publish?
-    record if user_can_curate? && record.submitted?
+    record if (user_can_curate? && record.submitted?) || user.is_partner?
   end
 
   def destroy?
diff --git a/spec/shared/contexts.rb b/spec/shared/contexts.rb
index e972b801..90ba69ca 100644
--- a/spec/shared/contexts.rb
+++ b/spec/shared/contexts.rb
@@ -112,3 +112,16 @@ RSpec.shared_context "authenticate_user_supervisor", shared_context: :metadata d
   end
 
 end
+
+RSpec.shared_context "authenticate_user_partner", shared_context: :metadata do
+  let(:auth_client) { @auth_headers['client'] }
+  let(:uid) { @auth_headers['uid'] }
+  let(:access_token) { @auth_headers['access-token'] }
+  let(:role) { Role.all }
+
+  before do
+    @user = create(:user, roles: [role.find_by(name: 'partner')])
+    @auth_headers = @user.create_new_auth_token
+  end
+
+end
-- 
GitLab