spec_helper.rb revision 297d4dd3c6e0819eebb2ba39e04536053691c0fe
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainen# This file is copied to spec/ when you run 'rails generate rspec:install'
a64adf62fa33f2463a86f990217b0c9078531a40Timo SirainenENV["RAILS_ENV"] ||= 'test'
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainen
2615df45a8027948a474abe5e817b34b0499c171Timo Sirainenrequire File.expand_path("../../spec/shared_helper", __FILE__)
b780aa272b742a43579cdb523cc79cc8d4521306Timo Sirainen
2615df45a8027948a474abe5e817b34b0499c171Timo Siraineninclude SharedHelper
2fb9ae42f9e36388ec6db24188b9108434043fd0Timo Sirainenuse_simplecov if ENV['COVERAGE']
2fb9ae42f9e36388ec6db24188b9108434043fd0Timo Sirainen
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainenrequire File.expand_path("../../config/environment", __FILE__)
46e917c9fa05cbe7bddf805d3a9838b61e3960e1Timo Sirainenrequire File.expand_path("../hets_helper", __FILE__)
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainenrequire 'rspec/rails'
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainenrequire 'rspec/autorun'
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainenrequire Rails.root.join('config', 'database_cleaner.rb')
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainenrequire 'addressable/template'
b9f564d00b7a115f465ffd6840341c7b8f9bfc8aTimo Sirainenrequire 'webmock/rspec'
b9f564d00b7a115f465ffd6840341c7b8f9bfc8aTimo Sirainen
b9f564d00b7a115f465ffd6840341c7b8f9bfc8aTimo SirainenWebMock.disable_net_connect!(allow_localhost: true)
b9f564d00b7a115f465ffd6840341c7b8f9bfc8aTimo Sirainenelasticsearch_port = ENV['ELASTIC_TEST_PORT'].present? ? ENV['ELASTIC_TEST_PORT'] : '9250'
62041dfb7d6ac6e9c633a557075999cdfcff7bd5Timo SirainenElasticsearch::Model.client = Elasticsearch::Client.new host: "localhost:#{elasticsearch_port}"
e15b305e90c9834734ccf35ed78f0ad29d570ee9Timo Sirainen
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainen# Requires supporting ruby files with custom matchers and macros, etc,
872d122a6f570e462f40341b7dd581dbd7d59f90Timo Sirainen# in spec/support/ and its subdirectories.
a64adf62fa33f2463a86f990217b0c9078531a40Timo SirainenDir[Rails.root.join("spec/support/**/*.rb")].each { |f| require f }
186c198e258401b0d2d9374d7ac7e248dc4d7377Stephan Bosch
186c198e258401b0d2d9374d7ac7e248dc4d7377Stephan Boschclass ActionController::TestRequest
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainen
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainen attr_writer :query_string
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainen
036626b19f14bef582f96e556913ae91b1d67881Timo Sirainen def query_string
68b5e132f1f8bb2528482310daffcc06c2f019d3Timo Sirainen @query_string.to_s
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainen end
b780aa272b742a43579cdb523cc79cc8d4521306Timo Sirainen
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainenend
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainen
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainenrequire Rails.root.join('spec', 'support', 'common_helper_methods.rb')
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainen
dc53fff3700362b544dcba166ff81420db227a60Timo Sirainendef stub_cp_keys
53cc097d3f8cd789f3c8fa0dfdd02bcda776230eTimo Sirainen allow(AuthorizedKeysManager).to receive(:copy_authorized_keys_to_git_home)
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainenend
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainen
dca6d617a23e3f93af3b8df59acb46478179fe55Timo Sirainendef current_full_description
0bd259973f98837cf0e41fdee3e2a578e51ad09eTimo Sirainen RSpec.configuration.current_full_description
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainenend
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainen
2615df45a8027948a474abe5e817b34b0499c171Timo Sirainendef current_description
16cb5d65265dd0b216542803fd80c4b999ae118eTimo Sirainen RSpec.configuration.current_description
56d1345c43bbd28c36b7faa85e4163bd9e874290Timo Sirainenend
16cb5d65265dd0b216542803fd80c4b999ae118eTimo Sirainen
16cb5d65265dd0b216542803fd80c4b999ae118eTimo Sirainendef current_file_path
2615df45a8027948a474abe5e817b34b0499c171Timo Sirainen prefix = 'spec/'
b780aa272b742a43579cdb523cc79cc8d4521306Timo Sirainen full_path = RSpec.configuration.current_file_path
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainen full_path.match(/#{prefix}(?<path>.*)\.rb$/)[:path]
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainenend
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainen
f330867f937b7a8505807a02edd21524600822eeTimo Sirainen# Generate a generic cassette name for any example or context.
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainendef generate_cassette_name
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainen "specs/#{current_file_path}/#{current_full_description}"
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainenend
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainen
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainen# Recording HTTP Requests
a64adf62fa33f2463a86f990217b0c9078531a40Timo SirainenVCR.configure do |c|
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainen c.cassette_library_dir = 'spec/fixtures/vcr'
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainen c.hook_into :webmock
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainen c.ignore_localhost = true
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainen c.ignore_request do |request|
de83c1e095ba081ef80f630bcd933e5e28aff94bTimo Sirainen # ignore elasticsearch requests
57b819d3aa978b88ef478e4f2397c32db231ebb7Timo Sirainen URI(request.uri).host == 'localhost' &&
50053223085da761ce3f9491f428381503ce3ec9Timo Sirainen URI(request.uri).port == elasticsearch_port.to_i
b215a8a123623782554a83f3025ef4e771bd8f01Timo Sirainen end
4ee00532a265bdfb38539d811fcd12d51210ac35Timo Sirainenend
b215a8a123623782554a83f3025ef4e771bd8f01Timo Sirainen
a64adf62fa33f2463a86f990217b0c9078531a40Timo SirainenRSpec.configure do |config|
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainen config.add_setting :current_full_description
eb1572d7c44ebc7b0b039d085c3dbab2ef7043ddTimo Sirainen config.add_setting :current_description
eb1572d7c44ebc7b0b039d085c3dbab2ef7043ddTimo Sirainen config.add_setting :current_file_path
eb1572d7c44ebc7b0b039d085c3dbab2ef7043ddTimo Sirainen # ## Mock Framework
eb1572d7c44ebc7b0b039d085c3dbab2ef7043ddTimo Sirainen # config.mock_with :mocha
eb1572d7c44ebc7b0b039d085c3dbab2ef7043ddTimo Sirainen # config.mock_with :flexmock
eb1572d7c44ebc7b0b039d085c3dbab2ef7043ddTimo Sirainen # config.mock_with :rr
eb1572d7c44ebc7b0b039d085c3dbab2ef7043ddTimo Sirainen config.mock_with :rspec
eb1572d7c44ebc7b0b039d085c3dbab2ef7043ddTimo Sirainen
ed354926406e28254b581f821bb052f38d9c14e8Timo Sirainen config.tty ||= ENV["SPEC_OPTS"].include?('--color') if ENV["SPEC_OPTS"]
d2e74f2af690b8e2d536400f02f397cbed1334b7Timo Sirainen
186c198e258401b0d2d9374d7ac7e248dc4d7377Stephan Bosch config.before(:suite) do
1ae5d61ec366fdb2f3c5b150ca378d6141b0f4bdTimo Sirainen FactoryGirl.create :proof_statuses
8f0503ea115c4bb1eb1857023cc5051cf4bed807Baofeng Wang end
eb1572d7c44ebc7b0b039d085c3dbab2ef7043ddTimo Sirainen
eb1572d7c44ebc7b0b039d085c3dbab2ef7043ddTimo Sirainen config.before(:each) do |example|
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainen redis = WrappingRedis::RedisWrapper.new
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainen redis.del redis.keys if redis.keys.any?
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainen config.current_full_description =
55a14bce15b9f44441b5f56616d73651a294d770Timo Sirainen example.metadata[:example_group][:full_description]
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainen config.current_description = example.description
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainen config.current_file_path = example.file_path
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainen end
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainen
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainen config.after(:each) do
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainen end
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainen
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainen config.expose_current_running_example_as :example
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainen
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainen config.infer_spec_type_from_file_location!
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainen
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainen config.infer_base_class_for_anonymous_controllers = true
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainen
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainen config.include Devise::TestHelpers, type: :controller
8d3278a82b964217d95c340ec6f82037cdc59d19Timo Sirainen
d1fff80640050631b06bfab904a34b2ad24601e8Timo Sirainen # The following option is already set in the database_cleaner.rb:
d1fff80640050631b06bfab904a34b2ad24601e8Timo Sirainen # config.treat_symbols_as_metadata_keys_with_true_values = true
4ee00532a265bdfb38539d811fcd12d51210ac35Timo Sirainen
4ee00532a265bdfb38539d811fcd12d51210ac35Timo Sirainen # Run specs in random order to surface order dependencies. If you find an
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainen # order dependency and want to debug it, you can fix the order by providing
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainen # the seed, which is printed after each run.
7744586e3e0fd60158abfbb03a233d3bd8d6c48bTimo Sirainen # --seed 1234
7744586e3e0fd60158abfbb03a233d3bd8d6c48bTimo Sirainen config.order = "random"
7744586e3e0fd60158abfbb03a233d3bd8d6c48bTimo Sirainen
7744586e3e0fd60158abfbb03a233d3bd8d6c48bTimo Sirainen config.mock_with :rspec do |mocks|
eb1572d7c44ebc7b0b039d085c3dbab2ef7043ddTimo Sirainen mocks.yield_receiver_to_any_instance_implementation_blocks = false
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainen end
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainenend
2fb9ae42f9e36388ec6db24188b9108434043fd0Timo Sirainen