Initial commit
This commit is contained in:
120
spec/spec_helper.rb
Normal file
120
spec/spec_helper.rb
Normal file
@@ -0,0 +1,120 @@
|
||||
# encoding: UTF-8
|
||||
# frozen_string_literal: true
|
||||
|
||||
require 'base64'
|
||||
require 'openssl'
|
||||
|
||||
# This file is copied to spec/ when you run 'rails generate rspec:install'
|
||||
ENV['RAILS_ENV'] ||= 'test'
|
||||
ENV['EVENT_API_JWT_PRIVATE_KEY'] ||= Base64.urlsafe_encode64(OpenSSL::PKey::RSA.generate(2048).to_pem)
|
||||
ENV['PEATIO_JWT_PRIVATE_KEY'] ||= Base64.urlsafe_encode64(OpenSSL::PKey::RSA.generate(2048).to_pem)
|
||||
ENV['WITHDRAW_ADMIN_APPROVE'] = 'true'
|
||||
|
||||
# We remove lib/peatio.rb from LOAD_PATH because of conflict with peatio gem.
|
||||
# lib/peatio.rb is added to LOAD_PATH later after requiring gems.
|
||||
# https://relishapp.com/rspec/rspec-core/v/2-6/docs/command-line
|
||||
$LOAD_PATH.delete_if { |p| File.expand_path(p) == File.expand_path('./lib') }
|
||||
|
||||
require File.expand_path('../../config/environment', __FILE__)
|
||||
require 'rspec/rails'
|
||||
require 'rspec/retry'
|
||||
require 'webmock/rspec'
|
||||
require 'cancan/matchers'
|
||||
|
||||
WebMock.allow_net_connect!
|
||||
|
||||
# Requires supporting ruby files with custom matchers and macros, etc,
|
||||
# in spec/support/ and its subdirectories.
|
||||
Dir[Rails.root.join('spec/support/**/*.rb')].each { |f| require f }
|
||||
|
||||
# Checks for pending migrations before tests are run.
|
||||
# If you are not using ActiveRecord, you can remove this line.
|
||||
ActiveRecord::Migration.check_pending! if defined?(ActiveRecord::Migration)
|
||||
|
||||
Rails.application.load_tasks
|
||||
|
||||
RSpec.configure do |config|
|
||||
# ## Mock Framework
|
||||
#
|
||||
# If you prefer to use mocha, flexmock or RR, uncomment the appropriate line:
|
||||
#
|
||||
config.mock_with :mocha
|
||||
# config.mock_with :flexmock
|
||||
# config.mock_with :rr
|
||||
|
||||
# Remove this line if you're not using ActiveRecord or ActiveRecord fixtures
|
||||
# config.fixture_path = "#{::Rails.root}/spec/fixtures"
|
||||
|
||||
# If you're not using ActiveRecord, or you'd prefer not to run each of your
|
||||
# examples within a transaction, remove the following line or assign false
|
||||
# instead of true.
|
||||
config.use_transactional_fixtures = false
|
||||
|
||||
# If true, the base class of anonymous controllers will be inferred
|
||||
# automatically. This will be the default behavior in future versions of
|
||||
# rspec-rails.
|
||||
config.infer_base_class_for_anonymous_controllers = false
|
||||
|
||||
# Run specs in random order to surface order dependencies. If you find an
|
||||
# order dependency and want to debug it, you can fix the order by providing
|
||||
# the seed, which is printed after each run.
|
||||
# --seed 1234
|
||||
config.order = 'random'
|
||||
|
||||
config.filter_run_when_matching :focus
|
||||
|
||||
config.include FactoryBot::Syntax::Methods
|
||||
config.include Rails.application.routes.url_helpers
|
||||
|
||||
# See https://github.com/DatabaseCleaner/database_cleaner#rspec-with-capybara-example
|
||||
config.before(:suite) do
|
||||
FileUtils.rm_rf(File.join(__dir__, 'tmp', 'cache'))
|
||||
DatabaseCleaner.clean_with(:truncation)
|
||||
end
|
||||
|
||||
config.before(:each) do
|
||||
DatabaseCleaner.strategy = :transaction
|
||||
end
|
||||
|
||||
config.before(:each, clean_database_with_truncation: true) do
|
||||
DatabaseCleaner.strategy = :truncation, { only: %w[orders trades] }
|
||||
end
|
||||
|
||||
config.append_after(:each) do
|
||||
DatabaseCleaner.clean
|
||||
end
|
||||
|
||||
config.before(:each) do
|
||||
DatabaseCleaner.start
|
||||
AMQP::Queue.stubs(:publish)
|
||||
KlineDB.stubs(:kline).returns([])
|
||||
Currency.any_instance.stubs(:price).returns(1.to_d)
|
||||
%w[eth-kovan eth-rinkeby btc-testnet].each { |blockchain| FactoryBot.create(:blockchain, blockchain) }
|
||||
%i[usd eur btc eth trst ring].each { |ccy| FactoryBot.create(:currency, ccy) }
|
||||
|
||||
%i[ eth_deposit eth_hot eth_warm eth_fee
|
||||
trst_deposit trst_hot
|
||||
btc_hot btc_deposit ].each { |ccy| FactoryBot.create(:wallet, ccy) }
|
||||
%i[btcusd btceth].each { |market| FactoryBot.create(:market, market) }
|
||||
%w[101 102 201 202 211 212 301 302 401 402].each { |ac_code| FactoryBot.create(:operations_account, ac_code)}
|
||||
FactoryBot.create(:trading_fee, market_id: :any, group: :any, maker: 0.0015, taker: 0.0015)
|
||||
FactoryBot.create(:withdraw_limit)
|
||||
end
|
||||
|
||||
config.after(:each) do
|
||||
DatabaseCleaner.clean
|
||||
end
|
||||
|
||||
config.verbose_retry = true
|
||||
config.default_retry_count = 3
|
||||
config.display_try_failure_messages = true
|
||||
config.exceptions_to_retry = [Net::ReadTimeout]
|
||||
|
||||
if Bullet.enable?
|
||||
config.before(:each) { Bullet.start_request }
|
||||
config.after :each do
|
||||
Bullet.perform_out_of_channel_notifications if Bullet.notification?
|
||||
Bullet.end_request
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user