travis-api/spec/spec_helper.rb

67 lines
1.5 KiB
Ruby

ENV['RACK_ENV'] = ENV['RAILS_ENV'] = ENV['ENV'] = 'test'
require 'rspec'
require 'database_cleaner'
require 'sinatra/test_helpers'
require 'logger'
require 'gh'
require 'multi_json'
require 'travis/api/app'
require 'travis/testing'
require 'travis/testing/scenario'
require 'travis/testing/factories'
require 'travis/testing/matchers'
require 'support/matchers'
require 'support/formats'
Travis.logger = Logger.new(StringIO.new)
Travis::Api::App.setup
Travis.config.client_domain = "www.example.com"
module TestHelpers
include Sinatra::TestHelpers
def custom_endpoints
@custom_endpoints ||= []
end
def add_endpoint(prefix, &block)
endpoint = Sinatra.new(Travis::Api::App::Endpoint, &block)
endpoint.set(prefix: prefix)
set_app Travis::Api::App.new
custom_endpoints << endpoint
end
def parsed_body
MultiJson.decode(body)
end
end
RSpec.configure do |c|
c.mock_framework = :mocha
c.expect_with :rspec, :stdlib
c.include TestHelpers
c.before :suite do
DatabaseCleaner.strategy = :transaction
DatabaseCleaner.clean_with :truncation
Scenario.default
end
c.before :each do
DatabaseCleaner.start
::Redis.connect(url: Travis.config.redis.url).flushdb
Travis.config.oauth2 ||= {}
Travis.config.oauth2.scope = "user:email,public_repo"
set_app Travis::Api::App.new
end
c.after :each do
DatabaseCleaner.clean
custom_endpoints.each do |endpoint|
endpoint.superclass.direct_subclasses.delete(endpoint)
end
end
end