summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorM. Ricketts <rickettm@uk.ibm.com>2017-05-05 10:49:58 +0100
committerAdam Niedzielski <adamsunday@gmail.com>2017-06-12 16:04:32 +0200
commit2bb763c503c081a8d242daf9438759c1530d1a31 (patch)
tree4496d4ad871892b09f5a6eb23b8d5d928ae7ff37
parent5478ff6dc2ad59a7c7d91f61339e8acee9bbb434 (diff)
downloadgitlab-ce-rickettm/gitlab-ce-13336-multiple-broadcast-messages.tar.gz
Show all active broadcast messages, rather than just the last onerickettm/gitlab-ce-13336-multiple-broadcast-messages
-rw-r--r--app/helpers/broadcast_messages_helper.rb2
-rw-r--r--app/models/broadcast_message.rb2
-rw-r--r--app/views/layouts/_broadcast.html.haml3
-rw-r--r--changelogs/unreleased/13336-multiple-broadcast-messages.yml4
-rw-r--r--spec/models/broadcast_message_spec.rb19
-rw-r--r--spec/requests/api/internal_spec.rb2
6 files changed, 22 insertions, 10 deletions
diff --git a/app/helpers/broadcast_messages_helper.rb b/app/helpers/broadcast_messages_helper.rb
index eb03ced67eb..0a15c29cfb5 100644
--- a/app/helpers/broadcast_messages_helper.rb
+++ b/app/helpers/broadcast_messages_helper.rb
@@ -1,5 +1,5 @@
module BroadcastMessagesHelper
- def broadcast_message(message = BroadcastMessage.current)
+ def broadcast_message(message)
return unless message.present?
content_tag :div, class: 'broadcast-message', style: broadcast_message_style(message) do
diff --git a/app/models/broadcast_message.rb b/app/models/broadcast_message.rb
index cb40f33932a..bb01b348a09 100644
--- a/app/models/broadcast_message.rb
+++ b/app/models/broadcast_message.rb
@@ -16,7 +16,7 @@ class BroadcastMessage < ActiveRecord::Base
def self.current
Rails.cache.fetch("broadcast_message_current", expires_in: 1.minute) do
- where("ends_at > :now AND starts_at <= :now", now: Time.zone.now).last
+ where('ends_at > :now AND starts_at <= :now', now: Time.zone.now)
end
end
diff --git a/app/views/layouts/_broadcast.html.haml b/app/views/layouts/_broadcast.html.haml
index 3a7e0929c16..bcd2f03e83c 100644
--- a/app/views/layouts/_broadcast.html.haml
+++ b/app/views/layouts/_broadcast.html.haml
@@ -1 +1,2 @@
-= broadcast_message
+- BroadcastMessage.current.each do |message|
+ = broadcast_message(message)
diff --git a/changelogs/unreleased/13336-multiple-broadcast-messages.yml b/changelogs/unreleased/13336-multiple-broadcast-messages.yml
new file mode 100644
index 00000000000..7dc73e1c6ea
--- /dev/null
+++ b/changelogs/unreleased/13336-multiple-broadcast-messages.yml
@@ -0,0 +1,4 @@
+---
+title: Display all current broadcast messages, not just the last one
+merge_request: 11113
+author: rickettm
diff --git a/spec/models/broadcast_message_spec.rb b/spec/models/broadcast_message_spec.rb
index 219db365a91..333f4139a96 100644
--- a/spec/models/broadcast_message_spec.rb
+++ b/spec/models/broadcast_message_spec.rb
@@ -21,22 +21,29 @@ describe BroadcastMessage, models: true do
end
describe '.current' do
- it "returns last message if time match" do
+ it 'returns message if time match' do
message = create(:broadcast_message)
- expect(BroadcastMessage.current).to eq message
+ expect(BroadcastMessage.current).to include(message)
end
- it "returns nil if time not come" do
+ it 'returns multiple messages if time match' do
+ message1 = create(:broadcast_message)
+ message2 = create(:broadcast_message)
+
+ expect(BroadcastMessage.current).to contain_exactly(message1, message2)
+ end
+
+ it 'returns empty list if time not come' do
create(:broadcast_message, :future)
- expect(BroadcastMessage.current).to be_nil
+ expect(BroadcastMessage.current).to be_empty
end
- it "returns nil if time has passed" do
+ it 'returns empty list if time has passed' do
create(:broadcast_message, :expired)
- expect(BroadcastMessage.current).to be_nil
+ expect(BroadcastMessage.current).to be_empty
end
end
diff --git a/spec/requests/api/internal_spec.rb b/spec/requests/api/internal_spec.rb
index cf232e7ff69..6ea1a3ffd9c 100644
--- a/spec/requests/api/internal_spec.rb
+++ b/spec/requests/api/internal_spec.rb
@@ -23,7 +23,7 @@ describe API::Internal do
get api("/internal/broadcast_message"), secret_token: secret_token
expect(response).to have_http_status(200)
- expect(json_response["message"]).to eq(broadcast_message.message)
+ expect(json_response[0]['message']).to eq(broadcast_message.message)
end
end