Sha256: 59ff8ce9482e8a39651e1d93a759b4f4dc36640b98491212af2fb5ed69c398bd
Contents?: true
Size: 1.59 KB
Versions: 11
Compression:
Stored size: 1.59 KB
Contents
# frozen_string_literal: true require 'webmock/rspec' module Shark module RSpec module FakeSurveyService class Request include Singleton attr_accessor :cache def self.setup instance = self.instance instance.stub_requests instance.cache = ObjectCache.instance end def stub_requests WebMock.stub_request(:post, %r{^#{host}/.*$}).to_return do |request| log "POST #{request.uri}" log "Body #{request.body}" payload = JSON.parse(request.body)['data'] object = cache.add(payload) SharkSpec.fake_response(201, data: object) end WebMock.stub_request(:delete, %r{^#{host}/.+/.+}).to_return do |request| log "DELETE #{request.uri}" id = request.uri.path.split('/')[2] ObjectCache.instance.remove(id) SharkSpec.fake_response(204, nil) end WebMock.stub_request(:get, %r{^#{host}/.+/.+}).to_return do |request| log "GET #{request.uri}" type = request.uri.path.split('/')[4] id = request.uri.path.split('/')[5] object = cache.find(id, type) if object.present? SharkSpec.fake_response(200, data: object) else SharkSpec.fake_response(404, errors: []) end end end def host Shark.configuration.survey_service.site end def log(message) Shark.logger.info "[Shark] #{message}" end end end end end
Version data entries
11 entries across 11 versions & 1 rubygems