spec/spec_helper.rb in sms77-0.2.0 vs spec/spec_helper.rb in sms77-0.3.0
- old
+ new
@@ -1,68 +1,53 @@
# frozen_string_literal: true
$LOAD_PATH.unshift File.expand_path('../lib', __dir__)
require 'sms77'
+require 'sms77/resource'
require 'sms77/util'
+require 'matchers'
+require 'EnvKeyStore'
-RSpec::Matchers.define :be_nil_or_lengthy_string do
- match do |val|
- Sms77::Util::nil_or_lengthy_string?(val)
- end
-end
+SMS77_TEST_HTTP = (ENV['SMS77_TEST_HTTP'].nil? ? false : true).freeze
-RSpec::Matchers.define :be_boolean do
- match do |val|
- Sms77::Util::boolean?(val)
+RSpec.configure do |config|
+ SMS77_TEST_HTTP && config.after do
+ sleep(1.125)
end
end
-RSpec::Matchers.define :be_numeric do
- match do |val|
- Sms77::Util::numeric?(val)
- end
-end
+class Helper
+ attr_reader :resource
-RSpec::Matchers.define :be_lengthy_string do
- match do |val|
- Sms77::Util::lengthy_string?(val)
- end
-end
+ IS_HTTP = SMS77_TEST_HTTP
+ VIRTUAL_INBOUNDS = {
+ eplus: '+491771783130',
+ }.freeze
-class EnvKeyStore
- def initialize(key)
- @key = "SMS77_TEST_#{key}"
+ # @param resource [Class<Sms77::Resource>]
+ def initialize(resource)
+ @resource = resource.new(ENV['SMS77_DUMMY_API_KEY'], 'ruby-test')
- @store = ENV[@key]
+ unless Helper::IS_HTTP
+ @stubs = Faraday::Adapter::Test::Stubs.new
+ @resource.conn.builder.adapter(:test, @stubs)
+ end
end
- def get(fallback = nil)
- @store.nil? ? fallback : @store
- end
+ def create_stub(fn_name, stub)
+ http_fn = @resource.http_methods[fn_name]
+ puts "creating stub for #{http_fn} @ #{@resource.class.name}.#{fn_name}"
- def set(val, only_on_nil = false)
- @store = val unless only_on_nil
- end
-end
+ @stubs.method(http_fn).call(Sms77::Resource::BASE_PATH + @resource.endpoint) do
+ puts "stub: " + stub.inspect
-class Helper
- @client = Sms77::Client.new(ENV['SMS77_DUMMY_API_KEY'], 'ruby-test')
- @is_http = ENV['SMS77_TEST_HTTP'].freeze
- @stubs = Faraday::Adapter::Test::Stubs.new
- @virtual_inbound_nr_eplus = '+491771783130'
- Sms77::Client::BUILDER.adapter(:test, @stubs) unless @is_http
-
- Sms77::Client::HTTP_METHODS.each do |method|
- self.class.define_method(method.name) { |*args| request(@stubs.method(method.name.to_sym), *args) }
+ [200, {}, stub]
+ end
end
- def self.request(method, endpoint, stub, params = nil)
- method.call(Sms77::Client::BASE_PATH + endpoint) { || [200, {}, stub] } unless @is_http
+ def request(fn, stub, params = nil)
+ create_stub(fn.name, stub) unless Helper::IS_HTTP
- @client.method(endpoint).call(*[params].compact)
- end
-
- class << self
- attr_reader :is_http, :virtual_inbound_nr_eplus, :client
+ fn.call(*[params].compact)
end
end