2023-02-22 11:55:31 +11:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
2018-05-10 00:59:58 +10:00
|
|
|
if ENV['DISABLE_SIMPLECOV'] != 'true'
|
|
|
|
require 'simplecov'
|
2023-11-15 20:11:02 +11:00
|
|
|
|
|
|
|
if ENV['CI']
|
|
|
|
require 'simplecov-lcov'
|
|
|
|
SimpleCov::Formatter::LcovFormatter.config.report_with_single_file = true
|
|
|
|
SimpleCov.formatter = SimpleCov::Formatter::LcovFormatter
|
|
|
|
else
|
|
|
|
SimpleCov.formatter = SimpleCov::Formatter::HTMLFormatter
|
|
|
|
end
|
2018-05-10 00:59:58 +10:00
|
|
|
SimpleCov.start 'rails' do
|
2023-11-15 03:53:38 +11:00
|
|
|
enable_coverage :branch
|
|
|
|
enable_coverage_for_eval
|
|
|
|
|
2023-07-12 17:51:59 +10:00
|
|
|
add_filter 'lib/linter'
|
2023-02-28 02:35:47 +11:00
|
|
|
add_group 'Policies', 'app/policies'
|
2018-05-10 00:59:58 +10:00
|
|
|
add_group 'Presenters', 'app/presenters'
|
2023-02-28 02:35:47 +11:00
|
|
|
add_group 'Serializers', 'app/serializers'
|
|
|
|
add_group 'Services', 'app/services'
|
2018-05-10 00:59:58 +10:00
|
|
|
add_group 'Validators', 'app/validators'
|
2023-11-15 03:53:38 +11:00
|
|
|
|
|
|
|
add_group 'Libraries', 'lib'
|
2018-05-10 00:59:58 +10:00
|
|
|
end
|
2016-02-25 10:17:01 +11:00
|
|
|
end
|
|
|
|
|
|
|
|
RSpec.configure do |config|
|
2023-02-19 09:38:14 +11:00
|
|
|
config.example_status_persistence_file_path = 'tmp/rspec/examples.txt'
|
2016-02-25 10:17:01 +11:00
|
|
|
config.expect_with :rspec do |expectations|
|
|
|
|
expectations.include_chain_clauses_in_custom_matcher_descriptions = true
|
|
|
|
end
|
|
|
|
|
|
|
|
config.mock_with :rspec do |mocks|
|
|
|
|
mocks.verify_partial_doubles = true
|
2017-04-16 11:40:33 +10:00
|
|
|
|
|
|
|
config.around(:example, :without_verify_partial_doubles) do |example|
|
|
|
|
mocks.verify_partial_doubles = false
|
|
|
|
example.call
|
|
|
|
mocks.verify_partial_doubles = true
|
|
|
|
end
|
2016-02-25 10:17:01 +11:00
|
|
|
end
|
2016-09-06 01:46:36 +10:00
|
|
|
|
2018-02-10 09:04:47 +11:00
|
|
|
config.before :suite do
|
2019-07-19 09:44:42 +10:00
|
|
|
Rails.application.load_seed
|
2018-02-10 09:04:47 +11:00
|
|
|
Chewy.strategy(:bypass)
|
|
|
|
end
|
|
|
|
|
2017-01-29 22:25:10 +11:00
|
|
|
config.after :suite do
|
2023-05-04 13:50:40 +10:00
|
|
|
FileUtils.rm_rf(Dir[Rails.root.join('spec', 'test_files')])
|
2016-09-06 01:46:36 +10:00
|
|
|
end
|
2023-10-18 03:28:09 +11:00
|
|
|
|
|
|
|
# Use the GitHub Annotations formatter for CI
|
2023-10-18 19:18:34 +11:00
|
|
|
if ENV['GITHUB_ACTIONS'] == 'true' && ENV['GITHUB_RSPEC'] == 'true'
|
2023-10-18 03:28:09 +11:00
|
|
|
require 'rspec/github'
|
|
|
|
config.add_formatter RSpec::Github::Formatter
|
|
|
|
end
|
2016-09-06 01:46:36 +10:00
|
|
|
end
|
|
|
|
|
|
|
|
def body_as_json
|
|
|
|
json_str_to_hash(response.body)
|
|
|
|
end
|
|
|
|
|
|
|
|
def json_str_to_hash(str)
|
2016-09-22 06:07:18 +10:00
|
|
|
JSON.parse(str, symbolize_names: true)
|
2016-02-25 10:17:01 +11:00
|
|
|
end
|
2022-02-11 05:42:45 +11:00
|
|
|
|
2023-11-08 02:20:24 +11:00
|
|
|
def serialized_record_json(record, serializer, adapter: nil)
|
|
|
|
options = { serializer: serializer }
|
|
|
|
options[:adapter] = adapter if adapter.present?
|
|
|
|
JSON.parse(
|
|
|
|
ActiveModelSerializers::SerializableResource.new(
|
|
|
|
record,
|
|
|
|
options
|
|
|
|
).to_json
|
|
|
|
)
|
|
|
|
end
|
|
|
|
|
2022-02-11 05:42:45 +11:00
|
|
|
def expect_push_bulk_to_match(klass, matcher)
|
2023-11-07 20:46:28 +11:00
|
|
|
allow(Sidekiq::Client).to receive(:push_bulk)
|
|
|
|
yield
|
|
|
|
expect(Sidekiq::Client).to have_received(:push_bulk).with(hash_including({
|
2023-02-19 09:38:14 +11:00
|
|
|
'class' => klass,
|
|
|
|
'args' => matcher,
|
2022-02-11 05:42:45 +11:00
|
|
|
}))
|
|
|
|
end
|