12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- RSpec.shared_examples 'HasCollectionUpdate' do |collection_factory:|
- describe '#push_collection_to_clients', performs_jobs: true do
- subject { create(collection_factory) }
- context 'creating a record' do
- it 'enqueues a CollectionUpdateJob job' do
- expect { subject }.to have_enqueued_job(CollectionUpdateJob).with(described_class.name)
- end
- end
- context 'record exists' do
- before do
- subject
- clear_jobs
- end
- context 'attribute updated' do
- context 'name' do
- it 'enqueues a CollectionUpdateJob job' do
- expect do
- if subject.respond_to?(:name)
- subject.name = 'New name'
- else
- # EmailAdress has no `name` attribute
- subject.realname = 'New name'
- end
- subject.save!
- end.to have_enqueued_job(CollectionUpdateJob).with(described_class.name)
- end
- end
- context 'updated_at' do
- it 'enqueues a CollectionUpdateJob job' do
- expect { subject.touch }.to have_enqueued_job(CollectionUpdateJob).with(described_class.name)
- end
- end
- end
- context 'record is deleted' do
- it 'enqueues a CollectionUpdateJob job' do
- expect { subject.destroy! }.to have_enqueued_job(CollectionUpdateJob).with(described_class.name)
- end
- end
- end
- end
- end
|