docbrown/spec/models/application_record_spec.rb
Mac Siri 842e6880b8
Routine rubocop fix on /spec (#19217)
* Softrun rubocop

* Hardrun rubocop (-A)

* Change a rubocop rule

* Add missing cops

* Undo & redo rubocop -A
2023-03-21 09:55:26 -04:00

66 lines
1.8 KiB
Ruby

require "rails_helper"
# ApplicationRecord is an abstract class, tests will use one of the core models
RSpec.describe ApplicationRecord do
describe ".estimated_count" do
it "does not raise errors if there are no rows" do
expect { User.estimated_count }.not_to raise_error
end
end
describe "#class_name" do
it "is expected to be a string" do
user = User.new
expect(user.class_name).to eq("User")
end
end
describe "#decorate" do
it "decorates an object that has a decorator" do
article = build(:article)
expect(article.decorate).to be_a(ArticleDecorator)
end
it "raises an error if an object has no decorator" do
badge = build(:badge)
expect { badge.decorate }.to raise_error(UninferrableDecoratorError)
end
end
describe "#decorated?" do
it "returns false" do
article = build(:article)
expect(article.decorated?).to be(false)
end
end
describe ".decorate" do
before do
create(:article, approved: true)
end
it "decorates a relation" do
decorated_collection = Article.approved.decorate
expect(decorated_collection.size).to eq(Article.approved.size)
expect(decorated_collection.first).to be_a(ArticleDecorator)
end
end
describe ".with_statement_timeout" do
it "sets the SQL statement timeout to the specified duration" do
original_timeout = described_class.statement_timeout
described_class.with_statement_timeout 1.second do
expect(described_class.statement_timeout).to eq 1.second
described_class.with_statement_timeout 10.seconds do
expect(described_class.statement_timeout).to eq 10.seconds
end
expect(described_class.statement_timeout).to eq 1.second
end
expect(described_class.statement_timeout).to eq original_timeout
end
end
end