lib/snov/fake_client.rb in snov-0.2.4 vs lib/snov/fake_client.rb in snov-0.3.0
- old
+ new
@@ -1,14 +1,52 @@
module Snov
class FakeClient
- def get(path)
- data = File.read("#{__dir__}/fake_client/get#{path.tr("/", "_")}.json")
+ def self.folder=(val)
+ @folder = val
+ FileUtils.mkdir_p(@folder)
+ ["post_v1_get-profile-by-email", "get_v2_domain-emails-with-info",
+ "post_v1_get-prospects-by-email", "post_v1_prospect-list", "get_v1_get-user-lists"].each do |sub_folder|
+ FileUtils.cp_r "#{default_folder}/#{sub_folder}", @folder
+ end
+ end
+
+ def self.folder
+ @folder || default_folder
+ end
+
+ def self.reset_folder
+ @folder = nil
+ end
+
+ def self.default_folder
+ "#{__dir__}/fake_client"
+ end
+
+ def get(path, payload_hash = {})
+ data = File.read(filename("get", path, payload_hash))
MultiJson.load(data)
+ rescue Errno::ENOENT
+ data = File.read(filename("get", path, 'not_found' => 'true'))
+ MultiJson.load(data)
end
- def post(path, params = {})
- params.to_a.map(&:join).join("&")
- data = File.read("#{__dir__}/fake_client/post#{path.tr("/", "_")}.json")
+ def post(path, payload_hash = {})
+ data = File.read(filename("post", path, payload_hash))
MultiJson.load(data)
+ rescue Errno::ENOENT => e
+ file = filename("post", path, 'not_found' => 'true')
+ if File.exist?(file)
+ MultiJson.load(File.read(file))
+ else
+ raise Snov::Client::BadRequest, e.message
+ end
+ end
+
+ private
+
+ def filename(method, path, payload_hash)
+ add = payload_hash.to_a.map { |v| v.join("=") }.join("&").tr(".", "_")
+ add = "default" if add == ""
+ "#{self.class.folder}/#{method}#{path.tr("/", "_")}/#{add}.json"
end
end
end