def use_fanforce_test_helpers(browser_method) include Fanforce::Test::RakeHelpers load_helper_methods(browser_method) end def enable_fanforce_test(base_dir) Fanforce::Test.setup_env(base_dir) end module Fanforce::Test::RakeHelpers def load_helper_methods(browser_method) @@api_browser_method = browser_method end def api_browser method(@@api_browser_method).call end def last_api_response(response) @last_api_response = response end def reset_fanforce_db @supercore_api_key = api_post('/test/clean_dbs', show_error_details: 'text')[:supercore_api_key] end def reset_fanforce_db_with_plugins reset_fanforce_db api_post('/test/setup_plugins', show_error_details: 'text') end def supercore_api_key @supercore_api_key end def ff @ff ||= Fanforce::API.new end def api_get(path, query={}, rack_env={}) query.update(api_key: supercore_api_key) if rack_env[:access_type] == :supercore last_api_response ff.get(path, query) end def api_post(path, query={}, rack_env={}) query.update(api_key: supercore_api_key) if rack_env[:access_type] == :supercore last_api_response ff.post path, query end def api_put(path, query={}, rack_env={}) query.update(api_key: supercore_api_key) if rack_env[:access_type] == :supercore last_api_response ff.put path, query end def api_delete(path, query={}, rack_env={}) query.update(api_key: supercore_api_key) if rack_env[:access_type] == :supercore last_api_response ff.delete path, query end def method_missing(method, *args, &block) return @last_api_response if method == :last_response super end end ######################################################################################################################## class Rack::MockResponse def to_hash @hash ||= MultiJson.load(body, :symbolize_keys => true) end def to_json body.to_s end def to_s body.to_s end def [](key) to_hash[key] end end