summaryrefslogtreecommitdiff
path: root/qa/spec/resource/reusable_collection_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'qa/spec/resource/reusable_collection_spec.rb')
-rw-r--r--qa/spec/resource/reusable_collection_spec.rb128
1 files changed, 0 insertions, 128 deletions
diff --git a/qa/spec/resource/reusable_collection_spec.rb b/qa/spec/resource/reusable_collection_spec.rb
deleted file mode 100644
index cb2df6931d0..00000000000
--- a/qa/spec/resource/reusable_collection_spec.rb
+++ /dev/null
@@ -1,128 +0,0 @@
-# frozen_string_literal: true
-
-RSpec.describe QA::Resource::ReusableCollection do
- let(:reusable_resource_class) do
- Class.new do
- prepend QA::Resource::Reusable
-
- attr_reader :removed
-
- def self.name
- 'FooReusableResource'
- end
-
- def comparable
- self.class.name
- end
-
- def remove_via_api!
- @removed = true
- end
-
- def exists?() end
-
- def reload!
- Struct.new(:api_resource).new({ marked_for_deletion_on: false })
- end
- end
- end
-
- let(:another_reusable_resource_class) do
- Class.new(reusable_resource_class) do
- def self.name
- 'BarReusableResource'
- end
- end
- end
-
- let(:a_resource_instance) { reusable_resource_class.new }
- let(:another_resource_instance) { another_reusable_resource_class.new }
-
- it 'is a singleton class' do
- expect { described_class.new }.to raise_error(NoMethodError)
- end
-
- subject(:collection) do
- described_class.instance
- end
-
- before do
- described_class.register_resource_classes do |c|
- reusable_resource_class.register(c)
- another_reusable_resource_class.register(c)
- end
-
- collection.resource_classes = {
- 'FooReusableResource' => {
- reuse_as_identifier: {
- resource: a_resource_instance
- }
- },
- 'BarReusableResource' => {
- another_reuse_as_identifier: {
- resource: another_resource_instance
- }
- }
- }
-
- allow(a_resource_instance).to receive(:validate_reuse)
- allow(another_resource_instance).to receive(:validate_reuse)
- end
-
- after do
- collection.resource_classes = {}
- end
-
- describe '#each_resource' do
- it 'yields each resource and reuse_as identifier in the collection' do
- expect { |blk| collection.each_resource(&blk) }
- .to yield_successive_args(
- [:reuse_as_identifier, a_resource_instance],
- [:another_reuse_as_identifier, another_resource_instance]
- )
- end
- end
-
- describe '.remove_all_via_api!' do
- before do
- allow(a_resource_instance).to receive(:exists?).and_return(true)
- allow(another_resource_instance).to receive(:exists?).and_return(true)
- end
-
- it 'removes each instance of each resource class' do
- described_class.remove_all_via_api!
-
- expect(a_resource_instance.removed).to be_truthy
- expect(another_resource_instance.removed).to be_truthy
- end
-
- context 'when a resource is marked for deletion' do
- before do
- marked_for_deletion = Struct.new(:api_resource).new({ marked_for_deletion_on: true })
-
- allow(a_resource_instance).to receive(:reload!).and_return(marked_for_deletion)
- allow(another_resource_instance).to receive(:reload!).and_return(marked_for_deletion)
- end
-
- it 'does not remove the resource' do
- expect(a_resource_instance.removed).to be_falsey
- expect(another_resource_instance.removed).to be_falsy
- end
- end
- end
-
- describe '.validate_resource_reuse' do
- it 'validates each instance of each resource class' do
- expect(a_resource_instance).to receive(:validate_reuse)
- expect(another_resource_instance).to receive(:validate_reuse)
-
- described_class.validate_resource_reuse
- end
- end
-
- describe '.register_resource_classes' do
- it 'yields the hash of resource classes in the collection' do
- expect { |blk| described_class.register_resource_classes(&blk) }.to yield_with_args(collection.resource_classes)
- end
- end
-end