41 lines
1.6 KiB
Ruby
41 lines
1.6 KiB
Ruby
require 'rails_helper'
|
|
|
|
RSpec.describe NotificationSetting, type: :model do
|
|
describe "Associations" do
|
|
it { is_expected.to belong_to(:user) }
|
|
it { is_expected.to belong_to(:source) }
|
|
end
|
|
|
|
describe "Validation" do
|
|
subject { NotificationSetting.new(source_id: 1, source_type: 'Project') }
|
|
|
|
it { is_expected.to validate_presence_of(:user) }
|
|
it { is_expected.to validate_presence_of(:level) }
|
|
it { is_expected.to validate_uniqueness_of(:user_id).scoped_to([:source_id, :source_type]).with_message(/already exists in source/) }
|
|
|
|
context "events" do
|
|
let(:user) { create(:user) }
|
|
let(:notification_setting) { NotificationSetting.new(source_id: 1, source_type: 'Project', user_id: user.id) }
|
|
|
|
before do
|
|
notification_setting.level = "custom"
|
|
notification_setting.new_note = "true"
|
|
notification_setting.new_issue = 1
|
|
notification_setting.close_issue = "1"
|
|
notification_setting.merge_merge_request = "t"
|
|
notification_setting.close_merge_request = "nil"
|
|
notification_setting.reopen_merge_request = "false"
|
|
notification_setting.save
|
|
end
|
|
|
|
it "parses boolean before saving" do
|
|
expect(notification_setting.new_note).to eq(true)
|
|
expect(notification_setting.new_issue).to eq(true)
|
|
expect(notification_setting.close_issue).to eq(true)
|
|
expect(notification_setting.merge_merge_request).to eq(true)
|
|
expect(notification_setting.close_merge_request).to eq(false)
|
|
expect(notification_setting.reopen_merge_request).to eq(false)
|
|
end
|
|
end
|
|
end
|
|
end
|