Skip to content

Commit

Permalink
Hide send mail action menu in meetings when closed
Browse files Browse the repository at this point in the history
  • Loading branch information
oliverguenther committed Oct 10, 2024
1 parent d9f275d commit 5fad22c
Show file tree
Hide file tree
Showing 2 changed files with 81 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -49,8 +49,7 @@
item.with_leading_visual_icon(icon: :download)
end

if User.current.allowed_in_project?(:send_meeting_agendas_notification, @meeting.project
)
if @meeting.open? && User.current.allowed_in_project?(:send_meeting_agendas_notification, @meeting.project)
menu.with_item(label: t('meeting.label_mail_all_participants'),
href: notify_meeting_path(@meeting),
form_arguments: { method: :post, data: { turbo: 'false' } }) do |item|
Expand Down
80 changes: 80 additions & 0 deletions modules/meeting/spec/components/meetings/header_component_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
# frozen_string_literal: true

#-- copyright
# OpenProject is an open source project management software.
# Copyright (C) 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 "rails_helper"

RSpec.describe Meetings::HeaderComponent, type: :component do
let(:project) { build_stubbed(:project) }
let(:meeting) { build_stubbed(:meeting, project:) }
let(:user) { build_stubbed(:user) }

subject do
render_inline(described_class.new(meeting:, project:))
page
end

before do
login_as(user)
end

describe "send mail invitation" do
context "when allowed" do
before do
mock_permissions_for(user) do |mock|
mock.allow_in_project(:send_meeting_agendas_notification, project:)
end
end

context 'when open' do

Check notice on line 55 in modules/meeting/spec/components/meetings/header_component_spec.rb

View workflow job for this annotation

GitHub Actions / rubocop

[rubocop] modules/meeting/spec/components/meetings/header_component_spec.rb#L55 <Style/StringLiterals>

Prefer double-quoted strings unless you need single quotes to avoid extra backslashes for escaping.
Raw output
modules/meeting/spec/components/meetings/header_component_spec.rb:55:15: C: Style/StringLiterals: Prefer double-quoted strings unless you need single quotes to avoid extra backslashes for escaping.
let(:meeting) { build_stubbed(:meeting, project:, state: :open) }

it "renders the mail invitation" do
expect(subject).to have_text I18n.t('meeting.label_mail_all_participants')

Check notice on line 59 in modules/meeting/spec/components/meetings/header_component_spec.rb

View workflow job for this annotation

GitHub Actions / rubocop

[rubocop] modules/meeting/spec/components/meetings/header_component_spec.rb#L59 <Style/StringLiterals>

Prefer double-quoted strings unless you need single quotes to avoid extra backslashes for escaping.
Raw output
modules/meeting/spec/components/meetings/header_component_spec.rb:59:47: C: Style/StringLiterals: Prefer double-quoted strings unless you need single quotes to avoid extra backslashes for escaping.
end
end

context 'when closed' do

Check notice on line 63 in modules/meeting/spec/components/meetings/header_component_spec.rb

View workflow job for this annotation

GitHub Actions / rubocop

[rubocop] modules/meeting/spec/components/meetings/header_component_spec.rb#L63 <Style/StringLiterals>

Prefer double-quoted strings unless you need single quotes to avoid extra backslashes for escaping.
Raw output
modules/meeting/spec/components/meetings/header_component_spec.rb:63:15: C: Style/StringLiterals: Prefer double-quoted strings unless you need single quotes to avoid extra backslashes for escaping.
let(:meeting) { build_stubbed(:meeting, project:, state: :closed) }

it "does not render the mail invitation" do
expect(subject).not_to have_text I18n.t('meeting.label_mail_all_participants')

Check notice on line 67 in modules/meeting/spec/components/meetings/header_component_spec.rb

View workflow job for this annotation

GitHub Actions / rubocop

[rubocop] modules/meeting/spec/components/meetings/header_component_spec.rb#L67 <Capybara/NegationMatcher>

Use `expect(...).to have_no_text`.
Raw output
modules/meeting/spec/components/meetings/header_component_spec.rb:67:27: C: Capybara/NegationMatcher: Use `expect(...).to have_no_text`.

Check notice on line 67 in modules/meeting/spec/components/meetings/header_component_spec.rb

View workflow job for this annotation

GitHub Actions / rubocop

[rubocop] modules/meeting/spec/components/meetings/header_component_spec.rb#L67 <Style/StringLiterals>

Prefer double-quoted strings unless you need single quotes to avoid extra backslashes for escaping.
Raw output
modules/meeting/spec/components/meetings/header_component_spec.rb:67:51: C: Style/StringLiterals: Prefer double-quoted strings unless you need single quotes to avoid extra backslashes for escaping.
end
end
end

context "when not allowed" do
let(:meeting) { build_stubbed(:meeting, project:, state: :open) }

it "does not render the mail invitation" do
expect(subject).not_to have_text I18n.t('meeting.label_mail_all_participants')

Check notice on line 76 in modules/meeting/spec/components/meetings/header_component_spec.rb

View workflow job for this annotation

GitHub Actions / rubocop

[rubocop] modules/meeting/spec/components/meetings/header_component_spec.rb#L76 <Capybara/NegationMatcher>

Use `expect(...).to have_no_text`.
Raw output
modules/meeting/spec/components/meetings/header_component_spec.rb:76:25: C: Capybara/NegationMatcher: Use `expect(...).to have_no_text`.

Check notice on line 76 in modules/meeting/spec/components/meetings/header_component_spec.rb

View workflow job for this annotation

GitHub Actions / rubocop

[rubocop] modules/meeting/spec/components/meetings/header_component_spec.rb#L76 <Style/StringLiterals>

Prefer double-quoted strings unless you need single quotes to avoid extra backslashes for escaping.
Raw output
modules/meeting/spec/components/meetings/header_component_spec.rb:76:49: C: Style/StringLiterals: Prefer double-quoted strings unless you need single quotes to avoid extra backslashes for escaping.
end
end
end
end

0 comments on commit 5fad22c

Please sign in to comment.