FIX: Incorrect notification state being published.

This commit is contained in:
Guo Xiang Tan 2017-09-15 16:18:30 +08:00
parent 23b787e0a6
commit e542884b00
2 changed files with 21 additions and 3 deletions

View File

@ -405,9 +405,11 @@ class User < ActiveRecord::Base
) AS y ) AS y
" "
recent = User.exec_sql(sql, user_id: id, recent = User.exec_sql(sql,
type: Notification.types[:private_message]).values.map do |id, read| user_id: id,
[id.to_i, read == 't'.freeze] type: Notification.types[:private_message]
).values.map! do |id, read|
[id.to_i, read]
end end
MessageBus.publish("/notification/#{id}", MessageBus.publish("/notification/#{id}",

View File

@ -2,6 +2,7 @@ require 'rails_helper'
require_dependency 'user' require_dependency 'user'
describe User do describe User do
let(:user) { Fabricate(:user) }
context 'validations' do context 'validations' do
it { is_expected.to validate_presence_of :username } it { is_expected.to validate_presence_of :username }
@ -1520,4 +1521,19 @@ describe User do
expect(User.human_users).to eq([user]) expect(User.human_users).to eq([user])
end end
end end
describe '#publish_notifications_state' do
it 'should publish the right message' do
notification = Fabricate(:notification, user: user)
notification2 = Fabricate(:notification, user: user, read: true)
message = MessageBus.track_publish do
user.publish_notifications_state
end.find { |m| m.channel = "/notification/#{user.id}" }
expect(message.data[:recent]).to eq([
[notification2.id, true], [notification.id, false]
])
end
end
end end