docbrown/spec/services/audit/notification_spec.rb
rhymes 5d4f24c4ae
Remove Audit::Event::Util (#8704)
* Remove Audit::Event::Util

* Fix flaky spec
2020-06-16 12:50:53 -04:00

53 lines
1.3 KiB
Ruby

require "rails_helper"
RSpec.describe Audit::Notification, type: :service do
let!(:listener) { Faker::Alphanumeric.alpha(number: 10) }
let(:user) { build(:user, :admin) }
before do
Audit::Subscribe.listen listener
end
after do
Audit::Subscribe.forget listener
end
def notify
described_class.notify(listener) do |payload|
payload.user_id = user.id
payload.roles = user.roles.pluck(:name)
payload.data = build(:activesupport_event)
end
end
describe "Publishing and receiving events" do
context "when payload is missing" do
it "event is not created" do
allow(described_class).to receive(:listen)
described_class.notify(listener)
expect(described_class).not_to have_received(:listen)
end
end
context "when payload is present" do
it "receives an event" do
allow(described_class).to receive(:listen)
notify
expect(described_class).to have_received(:listen)
end
end
end
describe "Saving to database" do
it "creates an AuditLog record" do
user.save
notify
event_record = AuditLog.find_by(user_id: user.id)
expect(event_record.user).to eq(user)
expect(event_record.roles).to eq(user.roles.pluck(:name))
end
end
end