Skip to content

Commit

Permalink
Add specs
Browse files Browse the repository at this point in the history
  • Loading branch information
dombesz committed Jun 13, 2024
1 parent 949b3c2 commit 294a8cb
Show file tree
Hide file tree
Showing 3 changed files with 120 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
#-- copyright
# OpenProject is an open source project management software.
# Copyright (C) 2012-2024 the OpenProject GmbH
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:
# Copyright (C) 2006-2013 Jean-Philippe Lang
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
# See COPYRIGHT and LICENSE files for more details.
#++

require "spec_helper"

RSpec.describe "Custom actions link cf value", :js, :with_cuprite, with_ee: %i[custom_actions] do
shared_let(:admin) { create(:admin) }

let(:permissions) { %i(view_work_packages edit_work_packages) }
let(:role) { create(:project_role, permissions:) }
let(:user) do
create(:user, member_with_roles: { project => role })
end
let(:type) { create(:type_task) }
let(:project) { create(:project, types: [type], name: "This project") }
let!(:custom_field) { create(:link_wp_custom_field, types: [type], projects: [project]) }
let!(:work_package) do
create(:work_package,
type:,
project:)
end

let(:wp_page) { Pages::FullWorkPackage.new(work_package) }
let(:default_priority) do
create(:default_priority, name: "Normal")
end
let(:new_ca_page) { Pages::Admin::CustomActions::New.new }

before do
login_as(admin)
end

it "can set link field value" do
new_ca_page.visit!

new_ca_page.set_name("Set Link CF")
new_ca_page.add_action(custom_field.name, "https://example.com")

new_ca_page.create

assign = CustomAction.last
expect(assign.actions.length).to eq(1)
expect(assign.conditions.length).to eq(0)
expect(assign.actions.first.values).to eq(["https://example.com"])

login_as user
wp_page.visit!

wp_page.expect_custom_action("Set Link CF")
wp_page.click_custom_action("Set Link CF")
wp_page.expect_attributes "customField#{custom_field.id}": "https://example.com"
end
end
25 changes: 25 additions & 0 deletions spec/models/custom_actions/actions/custom_field_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,9 @@
let(:string_custom_field) do
build_stubbed(:string_wp_custom_field)
end
let(:link_custom_field) do
build_stubbed(:link_wp_custom_field)
end
let(:date_custom_field) do
build_stubbed(:date_wp_custom_field)
end
Expand All @@ -77,6 +80,7 @@
float_custom_field,
text_custom_field,
string_custom_field,
link_custom_field,
date_custom_field]
end
let(:klass) do
Expand Down Expand Up @@ -164,6 +168,12 @@
it_behaves_like "string values transformation"
end

context "for a link custom field" do
let(:custom_field) { link_custom_field }

it_behaves_like "string values transformation"
end

context "for a text custom field" do
let(:custom_field) { text_custom_field }

Expand Down Expand Up @@ -219,6 +229,15 @@
end
end

context "for a link custom field" do
let(:custom_field) { link_custom_field }

it "is :link_property" do
expect(instance.type)
.to be(:link_property)
end
end

context "for a version custom field" do
let(:custom_field) { version_custom_field }

Expand Down Expand Up @@ -566,6 +585,12 @@
it_behaves_like "string custom action validations"
end

context "for a link custom field" do
let(:custom_field) { link_custom_field }

it_behaves_like "link custom action validations"
end

context "for a date custom field" do
let(:custom_field) { date_custom_field }

Expand Down
17 changes: 17 additions & 0 deletions spec/models/custom_actions/shared_expectations.rb
Original file line number Diff line number Diff line change
Expand Up @@ -346,6 +346,23 @@
it_behaves_like "string custom action validations"
end

RSpec.shared_examples_for "link custom action validations" do
it_behaves_like "string custom action validations"

let(:errors) do
build_stubbed(:custom_action).errors
end

it "adds an error on actions if value an invalid url" do
instance.values = ["invalid_link"]

instance.validate(errors)

expect(errors.symbols_for(instance.human_name.to_sym))
.to eql [:invalid_url]
end
end

RSpec.shared_examples_for "date custom action validations" do
describe "#validate" do
let(:errors) do
Expand Down

0 comments on commit 294a8cb

Please sign in to comment.