require 'rubypitaya/core/setup' require 'rubypitaya/core/handler_router' require 'rubypitaya/core/redis_connector' require 'rubypitaya/core/spec-helpers/setup_spec_helper' require 'rubypitaya/core/spec-helpers/config_spec_helper' require 'rubypitaya/core/spec-helpers/postman_spec_helper' module RubyPitaya module HandlerSpecHelper def initialize(context) @@context = context @@log = Logger.new('/dev/null') @@setup = SetupSpecHelper.new @@config = ConfigSpecHelper.new @@session = Session.new @@postman = PostmanSpecHelper.new @@response = {} initialize_redis initialize_mongo is_cheats_enabled = @@setup.fetch('rubypitaya.server.cheats', false) @@handler_router ||= HandlerRouter.new(is_cheats_enabled) @@initializer_content = InitializerContent.new(@@log, @@redis_connector.redis, @@mongo_connector.mongo, @@setup, @@config) @@initializer_broadcast = InitializerBroadcast.new @@initializer_broadcast.run(@@initializer_content) end def request(route, params = {}) handler_name, action_name = route.split('.')[1..-1] @@response = @@handler_router.call(handler_name, action_name, @@session, @@postman, @@redis_connector.redis, @@mongo_connector.mongo, @@setup, @@config, @@log, params) end def response @@response end def authenticate(user_id) @@session.uid = user_id end def set_config(config) @@config.config_mock = config end def set_setup(setup) @@setup.setup_mock = setup end def set_postman(postman) @@postman.postman_mock = postman end def add_config(*keys, value) @@config.add(*keys, value) end def add_setup(*keys, value) @@setup.add(*keys, value) end def log @@log end def session @@session end def postman @@postman end def redis @@redis_connector.redis end private def initialize_redis @@redis_connector ||= nil if @@redis_connector.nil? @@core_setup ||= Setup.new redis_address = @@core_setup['rubypitaya.redis.url'] @@redis_connector = RedisConnector.new(redis_address) @@redis_connector.connect end @@redis_connector.redis.flushall end def initialize_mongo @@mongo_connector ||= nil if @@mongo_connector.nil? @@core_setup ||= Setup.new mongo_address = @@core_setup['rubypitaya.mongo.url'] mongo_user = @@core_setup['rubypitaya.mongo.user'] mongo_password = @@core_setup['rubypitaya.mongo.pass'] mongo_database_name = @@core_setup['rubypitaya.mongo.database'] @@mongo_connector = MongoConnector.new(mongo_address, mongo_user, mongo_password, mongo_database_name) @@mongo_connector.connect end @@mongo_connector.mongo.collections.map(&:drop) end end end