mirror of
https://github.com/opf/openproject.git
synced 2026-06-14 03:30:14 +00:00
Fix more specs
This commit is contained in:
@@ -45,7 +45,7 @@ class ProjectCustomField < CustomField
|
||||
def self.visible(user = User.current)
|
||||
if user.admin?
|
||||
all
|
||||
elsif user.allowed_in_any_project?(:select_project_custom_fields)
|
||||
elsif user.allowed_in_any_project?(:select_project_custom_fields) || user.allowed_globally?(:add_project)
|
||||
where(visible: true)
|
||||
else
|
||||
allowed_project_ids = Project.allowed_to(user, :view_project_attributes).select(:id).arel
|
||||
|
||||
@@ -63,7 +63,7 @@ RSpec.describe ProjectCustomFieldProjectMappings::BaseContract do
|
||||
let(:project_custom_field) { build_stubbed(:project_custom_field, visible: false) }
|
||||
|
||||
before do
|
||||
allow(ProjectCustomField).to receive(:where).with(visible: true).and_return([project_custom_field])
|
||||
allow(ProjectCustomField).to receive(:visible).and_return([project_custom_field])
|
||||
end
|
||||
|
||||
it_behaves_like "contract is invalid"
|
||||
|
||||
@@ -31,6 +31,10 @@ require "spec_helper"
|
||||
RSpec.describe API::V3::Projects::ProjectEagerLoadingWrapper do
|
||||
shared_let(:projects) { create_list(:project, 3) }
|
||||
|
||||
before do
|
||||
allow(User).to receive(:current).and_return build_stubbed(:admin)
|
||||
end
|
||||
|
||||
describe ".wrap" do
|
||||
subject(:loaded_projects) { described_class.wrap(projects) }
|
||||
|
||||
|
||||
@@ -102,9 +102,7 @@ RSpec.describe CustomValue do
|
||||
shared_let(:project) { create(:project) }
|
||||
|
||||
before do
|
||||
allow(ProjectCustomField)
|
||||
.to receive(:visible)
|
||||
.and_return(ProjectCustomField.all)
|
||||
allow(User).to receive(:current).and_return build_stubbed(:admin)
|
||||
end
|
||||
|
||||
RSpec::Matchers.define_negated_matcher :not_be_default, :be_default
|
||||
|
||||
@@ -41,9 +41,7 @@ RSpec.describe Project, "customizable" do
|
||||
end
|
||||
|
||||
before do
|
||||
allow(ProjectCustomField)
|
||||
.to receive(:visible)
|
||||
.and_return(ProjectCustomField.all)
|
||||
allow(User).to receive(:current).and_return build_stubbed(:admin)
|
||||
end
|
||||
|
||||
context "when not persisted" do
|
||||
|
||||
@@ -32,6 +32,10 @@ RSpec.describe Queries::Projects::Orders::CustomFieldOrder do
|
||||
let!(:cf_text) { FactoryBot.create(:text_project_custom_field) }
|
||||
let!(:cf_int) { FactoryBot.create(:integer_project_custom_field) }
|
||||
|
||||
before do
|
||||
allow(User).to receive(:current).and_return build_stubbed(:admin)
|
||||
end
|
||||
|
||||
it "does not allow to sort by the text field" do
|
||||
cf = described_class.new("cf_#{cf_text.id}")
|
||||
expect(cf).not_to be_available
|
||||
|
||||
@@ -83,7 +83,7 @@ RSpec.describe WorkPackage::PDFExport::WorkPackageToPdf do
|
||||
end
|
||||
let(:user) do
|
||||
create(:user,
|
||||
member_with_permissions: { project => %w[view_work_packages export_work_packages] })
|
||||
member_with_permissions: { project => %w[view_work_packages export_work_packages view_project_attributes] })
|
||||
end
|
||||
let(:another_user) do
|
||||
create(:user, firstname: "Secret User")
|
||||
|
||||
@@ -49,7 +49,10 @@ RSpec.describe API::V3::Projects::Copy::CreateFormAPI, content_type: :json do
|
||||
|
||||
shared_let(:current_user) do
|
||||
create(:user,
|
||||
member_with_permissions: { source_project => %i[copy_projects view_project view_work_packages] })
|
||||
member_with_permissions: { source_project => %i[copy_projects
|
||||
view_project
|
||||
view_work_packages
|
||||
view_project_attributes] })
|
||||
end
|
||||
|
||||
let(:path) { api_v3_paths.project_copy_form(source_project.id) }
|
||||
|
||||
@@ -55,7 +55,10 @@ RSpec.describe "API::V3::Projects::Copy::CopyAPI", content_type: :json, with_goo
|
||||
|
||||
shared_let(:current_user) do
|
||||
create(:user,
|
||||
member_with_permissions: { source_project => %i[copy_projects view_project view_work_packages] })
|
||||
member_with_permissions: { source_project => %i[copy_projects
|
||||
view_project
|
||||
view_work_packages
|
||||
view_project_attributes] })
|
||||
end
|
||||
|
||||
let(:path) { api_v3_paths.project_copy(source_project.id) }
|
||||
|
||||
@@ -44,7 +44,7 @@ RSpec.describe "API v3 Project resource show", content_type: :json do
|
||||
let(:other_project) do
|
||||
create(:project, public: false)
|
||||
end
|
||||
let(:role) { create(:project_role) }
|
||||
let(:role) { create(:project_role, permissions: [:view_project_attributes]) }
|
||||
let(:custom_field) do
|
||||
create(:text_project_custom_field)
|
||||
end
|
||||
|
||||
@@ -57,8 +57,8 @@ RSpec.describe API::V3::Projects::UpdateFormAPI, content_type: :json do
|
||||
let(:parent_project_role) do
|
||||
create(:project_role, permissions: parent_project_permissions)
|
||||
end
|
||||
# This is just temporary, the goal is to not return any custom fields if the
|
||||
# view_project_attributes permission is present
|
||||
# This is just temporary, the goal is to add a spec where no custom fields are returned if the
|
||||
# view_project_attributes permission is missing
|
||||
let(:permissions) { %i[edit_project view_project_attributes edit_project_attributes] }
|
||||
let(:parent_project_permissions) { [:add_subprojects] }
|
||||
let(:path) { api_v3_paths.project_form(project.id) }
|
||||
|
||||
@@ -47,7 +47,7 @@ RSpec.describe "API v3 Project resource update", content_type: :json do
|
||||
let(:invisible_custom_field) do
|
||||
create(:text_project_custom_field, visible: false)
|
||||
end
|
||||
let(:permissions) { [:edit_project] }
|
||||
let(:permissions) { %i[edit_project view_project_attributes edit_project_attributes] }
|
||||
let(:path) { api_v3_paths.project(project.id) }
|
||||
let(:body) do
|
||||
{
|
||||
|
||||
@@ -37,7 +37,7 @@ RSpec.describe Projects::UpdateService, "integration", type: :model do
|
||||
permissions:)
|
||||
end
|
||||
let(:permissions) do
|
||||
%i(edit_project)
|
||||
%i(edit_project view_project_attributes edit_project_attributes)
|
||||
end
|
||||
|
||||
let!(:project) do
|
||||
|
||||
Reference in New Issue
Block a user