Sha256: a3816685ff69f993fa720a43ed4c1f01fa3878dd72f4d312650f9fefb7b99867

Contents?: true

Size: 1.63 KB

Versions: 2

Compression:

Stored size: 1.63 KB

Contents

# frozen_string_literal: true

module TwilioBase
  module Fake
    module Sync
      module Services
        class Map
          cattr_accessor :maps
          self.maps = {}

          attr_accessor :data, :date_expires, :unique_name, :context

          def initialize(data: {}, date_expires: '', unique_name: '')
            self.context = MapContext.new
            self.data = data
            self.date_expires = date_expires
            self.unique_name = unique_name
          end

          def create(data: {}, ttl: 0, unique_name: '')
            map = Map.new(
              data: data,
              date_expires: Time.current + ttl,
              unique_name: unique_name
            )
            self.class.maps << map
            map
          end

          def fetch
            matched_map = self.class.maps.detect do |map|
              map.unique_name == unique_name
            end

            raise ArgumentError if matched_map.blank?

            matched_map
          end

          def maps(unique_name = nil)
            Map.new(unique_name: unique_name || rand(999).to_s)
          end

          def sync_map_items
            context.sync_map_items
          end
        end

        class MapContext
          def sync_map_items(key = :unset)
            if key.nil?
              raise(ArgumentError, 'key cannot be nil')
            end

            if key == :unset
              item_klass.items
            else
              item_klass.find_or_create(key)
            end
          end

          private

          def item_klass
            Fake::Sync::Services::Maps::Item
          end
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
twilio_base-1.11.1101 spec/support/twilio_base/fake/sync/services/map.rb
twilio_base-1.11.11 spec/support/twilio_base/fake/sync/services/map.rb