otwarchive-symphonyarchive/spec/models/subscription_spec.rb

119 lines
2.7 KiB
Ruby
Raw Normal View History

2026-03-11 22:22:11 +00:00
require 'spec_helper'
describe Subscription do
let(:subscription) { build(:subscription) }
let(:work) { create(:work) }
let(:series) { create(:series) }
let(:user) { create(:user) }
context "to a work" do
before do
subscription.subscribable = work
subscription.save!
end
it "has a name" do
expect(subscription.name).to eq(work.title)
end
describe "when the work is destroyed" do
before do
subscription.subscribable.destroy
end
it "should be destroyed" do
expect { subscription.reload }.to raise_error ActiveRecord::RecordNotFound
end
end
end
context "to a series" do
before do
subscription.subscribable = series
subscription.save!
end
it "has a name" do
expect(subscription.name).to eq(series.title)
end
describe "when the series is destroyed" do
before do
subscription.subscribable.destroy
end
it "should be destroyed" do
expect { subscription.reload }.to raise_error ActiveRecord::RecordNotFound
end
end
end
context "to a user" do
before do
subscription.subscribable = user
subscription.save!
end
it "has a name" do
expect(subscription.name).to eq(user.login)
end
describe "when the user is destroyed" do
before do
subscription.subscribable.destroy
end
it "should be destroyed" do
expect { subscription.reload }.to raise_error ActiveRecord::RecordNotFound
end
end
end
context "when subscribable does not exist" do
before do
work = create(:work)
subscription.subscribable_id = work.id
subscription.subscribable_type = "Work"
work.destroy
end
it "should be invalid" do
expect(subscription.valid?).to be_falsey
end
it "has a name" do
expect(subscription.name).to eq("Deleted item")
end
end
context "when subscribable is not a valid object to subscribe to" do
before do
subscription.subscribable_id = 1
subscription.subscribable_type = "Pseud"
end
it "should be invalid" do
expect(subscription.valid?).to be_falsey
end
end
context "when subscribable_type is not a real model name" do
before do
subscription.subscribable_id = 1
subscription.subscribable_type = "Серия"
end
it "should be invalid" do
expect(subscription.valid?).to be_falsey
end
end
it "can have an id larger than unsigned int" do
subscription = build(:subscription, id: 5_294_967_295, subscribable: work)
expect(subscription).to be_valid
expect(subscription.save).to be_truthy
expect(subscription.name).to eq(work.title)
end
end