docbrown/spec/models/concerns/purgeable_spec.rb
Alex 7dfffac3db
[deploy] Copy ActiveRecord methods from fastly-rails (#7145)
* Add comment referencing Fastly gem

* Create purgable concern and include it

* Typo: deprecate --> deprecated

* Include Purgable on the Tag model

* Rename Purgable to Purgeable

* Reorganize fastly and service methods in Purgeable

* Add and fix specs

* Add development env guards
2020-04-13 10:46:15 -04:00

101 lines
3 KiB
Ruby

require "rails_helper"
class PurgeableModel
include Purgeable
def self.table_name
"purgeables"
end
def id
1
end
end
RSpec.describe Purgeable do
let(:model_class) { PurgeableModel }
let(:purgeable_model) { model_class.new }
let(:fastly_service) { instance_double(Fastly::Service) }
before do
allow(Fastly::Service).to receive(:new).and_return(fastly_service)
end
describe "class methods" do
it "calls .purge_by_key with table_key in purge_all" do
allow(fastly_service).to receive(:purge_by_key)
model_class.purge_all
expect(fastly_service).to have_received(:purge_by_key).with(model_class.table_key)
end
it "calls .purge_by_key with table_key and true in soft_purge_all" do
allow(fastly_service).to receive(:purge_by_key)
model_class.soft_purge_all
expect(fastly_service).to have_received(:purge_by_key).with(model_class.table_key, true)
end
it "returns table_name with table_key" do
expect(model_class.table_key).to eq(model_class.table_name)
end
it "returns a Fastly object" do
fastly = instance_double(Fastly)
allow(Fastly).to receive(:new).and_return(fastly)
model_class.fastly
expect(Fastly).to have_received(:new)
end
it "returns a Fastly::Service object" do
model_class.service
expect(Fastly::Service).to have_received(:new)
end
end
describe "instance methods" do
it "returns a record key" do
expect(purgeable_model.record_key).to eq("purgeables/1")
end
it "returns a table_key" do
allow(model_class).to receive(:table_key).and_return(model_class.table_name)
expect(purgeable_model.table_key).to eq(model_class.table_name)
expect(model_class).to have_received(:table_key)
end
it "calls .purge_by_key with record_key in purge" do
allow(fastly_service).to receive(:purge_by_key)
purgeable_model.purge
expect(fastly_service).to have_received(:purge_by_key).with(purgeable_model.record_key)
end
it "calls .purge_by_key with record_key and true in soft_purge" do
allow(fastly_service).to receive(:purge_by_key)
purgeable_model.soft_purge
expect(fastly_service).to have_received(:purge_by_key).with(purgeable_model.record_key, true)
end
it "calls purge_all class method" do
allow(model_class).to receive(:purge_all)
purgeable_model.purge_all
expect(model_class).to have_received(:purge_all)
end
it "calls soft_purge_all class method" do
allow(model_class).to receive(:soft_purge_all)
purgeable_model.soft_purge_all
expect(model_class).to have_received(:soft_purge_all)
end
it "calls the fastly class method" do
allow(model_class).to receive(:fastly)
purgeable_model.fastly
expect(model_class).to have_received(:fastly)
end
it "calls the service class method" do
allow(model_class).to receive(:service)
purgeable_model.service
expect(model_class).to have_received(:service)
end
end
end