diff options
author | M. Ricketts <rickettm@uk.ibm.com> | 2017-05-05 10:49:58 +0100 |
---|---|---|
committer | Adam Niedzielski <adamsunday@gmail.com> | 2017-06-12 16:04:32 +0200 |
commit | 2bb763c503c081a8d242daf9438759c1530d1a31 (patch) | |
tree | 4496d4ad871892b09f5a6eb23b8d5d928ae7ff37 | |
parent | 5478ff6dc2ad59a7c7d91f61339e8acee9bbb434 (diff) | |
download | gitlab-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.rb | 2 | ||||
-rw-r--r-- | app/models/broadcast_message.rb | 2 | ||||
-rw-r--r-- | app/views/layouts/_broadcast.html.haml | 3 | ||||
-rw-r--r-- | changelogs/unreleased/13336-multiple-broadcast-messages.yml | 4 | ||||
-rw-r--r-- | spec/models/broadcast_message_spec.rb | 19 | ||||
-rw-r--r-- | spec/requests/api/internal_spec.rb | 2 |
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 |