docbrown/spec/models/notification_subscription_spec.rb
rhymes 10efa25c0a
Add missing presence validators to models (#10495)
* Add missing presence validator for Tag

* Add missing presence validators to Follow

* Add missing presence validators to ProfileField

* Add missing presence validators to Comment

* Add missing presence validators to Profile

* Add missing presence validators to Organization

* Add missing presence validators to Badge

* Add missing presence validators to Webhook::Endpoint

* Add missing presence validators to NotificationSubscription

* Add missing presence validators to PodcastEpisode

* Add missing presence validators to Sponsorship

* Add missing presence validators to PollOption

* Add missing presence validators to Poll

* Add missing presence validators to Article

* Add missing presence validators to EmailAuthorization

* Add missing presence validators to AuditLog

* Add missing presence validators to DataUpdateScript

* Add missing presence validators to User

* Add missing presence validators to SiteConfig

* Fix specs
2020-10-01 16:15:32 +02:00

52 lines
1.7 KiB
Ruby

require "rails_helper"
RSpec.describe NotificationSubscription, type: :model do
let(:user) { create(:user) }
let(:article) { create(:article, user: user) }
let(:notification_subscription) { create(:notification_subscription, user: user, notifiable: article) }
describe "validations" do
describe "builtin validations" do
subject(:subscription) { notification_subscription }
it { is_expected.to belong_to(:notifiable) }
it { is_expected.to belong_to(:user) }
it do
expect(subscription).to(
validate_inclusion_of(:config).in_array(%w[all_comments top_level_comments only_author_comments]),
)
end
it { is_expected.to validate_presence_of(:config) }
it { is_expected.to validate_presence_of(:notifiable_id) }
it { is_expected.to validate_presence_of(:notifiable_type) }
it { is_expected.to validate_uniqueness_of(:user_id).scoped_to(%i[notifiable_type notifiable_id]) }
end
describe "#notifiable_type" do
it "is valid if equals to Article" do
notification_subscription.notifiable_type = "Article"
expect(notification_subscription).to be_valid
end
it "is valid if equals to Comment" do
comment = create(:comment)
notification_subscription.notifiable_id = comment.id
notification_subscription.notifiable_type = "Comment"
expect(notification_subscription).to be_valid
end
it "is is invalid with Podcast" do
podcast = create(:podcast)
notification_subscription.notifiable_id = podcast.id
notification_subscription.notifiable_type = "Podcast"
expect(notification_subscription).not_to be_valid
end
end
end
end