travis-api/spec/spec_helper.rb
2012-10-02 16:39:38 +02:00

76 lines
1.6 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/scenario'
require 'travis/testing/factories'
RSpec::Matchers.define :deliver_json_for do |resource, options = {}|
match do |response|
actual = parse(response.body)
expected = Travis::Api.data(resource, options)
failure_message_for_should do
"expected\n\n#{actual}\n\nto equal\n\n#{expected}"
end
actual == expected
end
def parse(body)
MultiJson.decode(body)
end
end
Travis.logger = Logger.new(StringIO.new)
Travis::Api::App.setup
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 :transaction
end
c.before :each do
DatabaseCleaner.start
::Redis.connect(url: Travis.config.redis.url).flushdb
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