Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'spec/helpers/broadcast_messages_helper_spec.rb')
-rw-r--r--spec/helpers/broadcast_messages_helper_spec.rb85
1 files changed, 80 insertions, 5 deletions
diff --git a/spec/helpers/broadcast_messages_helper_spec.rb b/spec/helpers/broadcast_messages_helper_spec.rb
index 3e8cbdf89a0..e721a3fdc95 100644
--- a/spec/helpers/broadcast_messages_helper_spec.rb
+++ b/spec/helpers/broadcast_messages_helper_spec.rb
@@ -3,6 +3,71 @@
require 'spec_helper'
RSpec.describe BroadcastMessagesHelper do
+ include Gitlab::Routing.url_helpers
+
+ let_it_be(:user) { create(:user) }
+
+ before do
+ allow(helper).to receive(:current_user).and_return(user)
+ end
+
+ shared_examples 'returns role-targeted broadcast message when in project, group, or sub-group URL' do
+ let(:feature_flag_state) { true }
+
+ before do
+ stub_feature_flags(role_targeted_broadcast_messages: feature_flag_state)
+ allow(helper).to receive(:cookies) { {} }
+ end
+
+ context 'when in a project page' do
+ let_it_be(:project) { create(:project) }
+
+ before do
+ project.add_developer(user)
+
+ assign(:project, project)
+ allow(helper).to receive(:controller) { ProjectsController.new }
+ end
+
+ it { is_expected.to eq message }
+
+ context 'when feature flag is disabled' do
+ let(:feature_flag_state) { false }
+
+ it { is_expected.to be_nil }
+ end
+ end
+
+ context 'when in a group page' do
+ let_it_be(:group) { create(:group) }
+
+ before do
+ group.add_developer(user)
+
+ assign(:group, group)
+ allow(helper).to receive(:controller) { GroupsController.new }
+ end
+
+ it { is_expected.to eq message }
+
+ context 'when feature flag is disabled' do
+ let(:feature_flag_state) { false }
+
+ it { is_expected.to be_nil }
+ end
+ end
+
+ context 'when not in a project, group, or sub-group page' do
+ it { is_expected.to be_nil }
+
+ context 'when feature flag is disabled' do
+ let(:feature_flag_state) { false }
+
+ it { is_expected.to be_nil }
+ end
+ end
+ end
+
describe 'current_broadcast_notification_message' do
subject { helper.current_broadcast_notification_message }
@@ -24,16 +89,26 @@ RSpec.describe BroadcastMessagesHelper do
context 'without broadcast notification messages' do
it { is_expected.to be_nil }
end
+
+ describe 'user access level targeted messages' do
+ let_it_be(:message) { create(:broadcast_message, broadcast_type: 'notification', starts_at: Time.now, target_access_levels: [Gitlab::Access::DEVELOPER]) }
+
+ include_examples 'returns role-targeted broadcast message when in project, group, or sub-group URL'
+ end
end
- describe 'broadcast_message' do
- let_it_be(:user) { create(:user) }
+ describe 'current_broadcast_banner_messages' do
+ describe 'user access level targeted messages' do
+ let_it_be(:message) { create(:broadcast_message, broadcast_type: 'banner', starts_at: Time.now, target_access_levels: [Gitlab::Access::DEVELOPER]) }
- let(:current_broadcast_message) { BroadcastMessage.new(message: 'Current Message') }
+ subject { helper.current_broadcast_banner_messages.first }
- before do
- allow(helper).to receive(:current_user).and_return(user)
+ include_examples 'returns role-targeted broadcast message when in project, group, or sub-group URL'
end
+ end
+
+ describe 'broadcast_message' do
+ let(:current_broadcast_message) { BroadcastMessage.new(message: 'Current Message') }
it 'returns nil when no current message' do
expect(helper.broadcast_message(nil)).to be_nil