Sha256: 50b20c2a2ae66aa30ae4efa9d79497b52205c25b6242ee662d32e37eafd94a75

Contents?: true

Size: 1.44 KB

Versions: 3

Compression:

Stored size: 1.44 KB

Contents

module Webhookr
  module ServiceUnderTest
    class Adapter
      SERVICE_NAME = 'service_under_test'

      include Webhookr::Services::Adapter::Base

      class << self
        def process(payload)
          [*payload].collect do |p|
            p = Rack::Utils.parse_nested_query(p)
            validate(payload)
            OpenStruct.new({
              :event_type => p["event"],
              :data => OpenStruct.new(p["data"])
            })
          end
        end

        def validate(payload)
          if payload.nil? || payload == "blort"
            raise Webhookr::InvalidPayloadError.new("'#{payload}' is not valid") 
          end
        end

      end
    end
  end
end

module Webhookr
  module ServiceUnderTest

    def stub(options = {})
      ops = {
        :service_name => "service_under_test",
        :event_type => "test_event",
        :email => "gerry@zoocasa.com"
      }.merge(options)

      OpenStruct.new({
        :payload => "event=#{ops[:event_type]}&data[email]=#{ops[:email]}",
        :service_name => ops[:service_name],
        :event_type => ops[:event_type],
        :email => ops[:email]
       })
    end

  end
end

class PlainOldCallBackClass
  @@call_count = 0
  @@email = nil

  def self.reset!
    @@call_count = 0
    @@email = nil
  end

  def self.call_count
    @@call_count
  end

  def self.email
    @@email
  end

  def on_test_event(payload)
    @@call_count += 1
    @@email = payload.data.email
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
webhookr-0.2.0 test/stubs/service_under_test_stubs.rb
webhookr-0.1.0 test/stubs/service_under_test_stubs.rb
webhookr-0.0.2 test/stubs/service_under_test_stubs.rb