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