Sha256: 4dcb4486f2a6d022210b1b788942a50bc73b697f452c079d8f5aea027917464c

Contents?: true

Size: 1.19 KB

Versions: 7

Compression:

Stored size: 1.19 KB

Contents

# frozen_string_literal: true

module Shark
  module RSpec
    module FakeSubscriptionService
      class ObjectCache
        include Singleton
        attr_accessor :objects

        def initialize
          @objects = []
        end

        def self.clear
          instance.objects = []
        end

        def add(payload_data)
          id = payload_data.delete('id')

          if id && !objects.find { |subscription| subscription['id'] == id }
            object = {
              id: id,
              attributes: payload_data
            }

            objects << object
          else
            objects << {
              id: SecureRandom.uuid,
              attributes: payload_data
            }
          end
          objects.last
        end

        def add_multiple(payload_data)
          added = []
          payload_data.each { |subscription| added << add(subscription) }
          added.compact
        end

        def remove(id)
          objects.delete_if { |subscription| subscription[:id] == id }
        end

        def remove_multiple(payload_data)
          payload_data.each { |subscription| remove(subscription['id']) }
          objects
        end
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
bima-shark-sdk-2.4.4 lib/shark/rspec/fake_subscription_service/object_cache.rb
bima-shark-sdk-2.4.3 lib/shark/rspec/fake_subscription_service/object_cache.rb
bima-shark-sdk-2.4.2 lib/shark/rspec/fake_subscription_service/object_cache.rb
bima-shark-sdk-2.4.1 lib/shark/rspec/fake_subscription_service/object_cache.rb
bima-shark-sdk-2.4.0 lib/shark/rspec/fake_subscription_service/object_cache.rb
bima-shark-sdk-2.3.1 lib/shark/rspec/fake_subscription_service/object_cache.rb
bima-shark-sdk-2.3.0 lib/shark/rspec/fake_subscription_service/object_cache.rb