Sha256: b9bf2e3a7c47acf9f59f7454e5a1964d1f3e3dc59ed8f534ca1ab7abbee5ccd3

Contents?: true

Size: 1.34 KB

Versions: 2

Compression:

Stored size: 1.34 KB

Contents

# frozen_string_literal: true

module TwilioBase
  module Fake
    module Chat
      class Channel
        Channel = Struct.new(:attrs) do
          def friendly_name
            attrs[:friendly_name]
          end

          def attributes
            attrs.dig(:attributes)
          end

          def messages
            TwilioBase::Fake::Chat::Message.new
          end

          def members
            TwilioBase::Fake::Chat::Member.new
          end

          def sid
            @sid ||= FactoryBot.generate(:channel_sid)
          end

          def delete
            TwilioBase::Fake::Chat::Channel.channels.pop
          end

          def update(update_attrs)
            attrs.merge! update_attrs
          end
        end

        cattr_accessor :channels
        self.channels = []

        def initialize(channel_sid = nil)
          self.channel_sid = channel_sid
        end

        def create(attrs)
          self.class.channels << Channel.new(attrs)
          channels.last
        end

        def fetch
          raise ArgumentError unless matched_channel?

          self.class.channels.last
        end

        private

        attr_accessor :channel_sid

        def matched_channel?
          self.class.channels.detect do |channel|
            channel.sid == channel_sid
          end.present?
        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/chat/channel.rb
twilio_base-1.11.11 spec/support/twilio_base/fake/chat/channel.rb