# frozen_string_literal: true

# This file was generated by the `rails generate rspec:install` command. Conventionally, all
# specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
# The generated `.rspec` file contains `--require spec_helper` which will cause
# this file to always be loaded, without a need to explicitly require it in any
# files.
#
# Given that it is always loaded, you are encouraged to keep this file as
# light-weight as possible. Requiring heavyweight dependencies from this file
# will add to the boot time of your test suite on EVERY test run, even for an
# individual file that may not need all of that loaded. Instead, consider making
# a separate helper file that requires the additional dependencies and performs
# the additional setup, and require it from the spec files that actually need
# it.
#

require "faker"
require "factory_bot"
require "app_packages_catalog"

# require 'shoulda'
# require 'shoulda-matchers'

ENV["ENABLED_AUDITS"] = "true"
ENV["DEFAULT_OUTGOING_EMAIL_DOMAIN"] = "mail.chaskiq.test"

def inline_job(&block)
  ActiveJob::Base.queue_adapter = :inline
  block.call
  ActiveJob::Base.queue_adapter = :test
end

def last_email
  ActionMailer::Base.deliveries.last
end

def reset_email
  ActionMailer::Base.deliveries = []
end

# Require files in spec/support
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
# Dir["#{File.dirname(__FILE__)}/factories/**/*.rb"].each { |f| require f }

def request_fixture(name)
  Rails.root.join("spec", "fixtures", "requests", name).read
end

RSpec.configure do |config|
  config.before(:suite) do
    # reindex models
    # Product.reindex

    # and disable callbacks
    Searchkick.disable_callbacks
  end

  # config.around(:each, search: true) do |example|
  #  Searchkick.callbacks(nil) do
  #    example.run
  #  end
  # end
end

#
#
# See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
# RSpec.configure do |config|
#
#   # rspec-expectations config goes here. You can use an alternate
#   # assertion/expectation library such as wrong or the stdlib/minitest
#   # assertions if you prefer.
#   config.expect_with :rspec do |expectations|
#     # This option will default to `true` in RSpec 4. It makes the `description`
#     # and `failure_message` of custom matchers include text for helper methods
#     # defined using `chain`, e.g.:
#     #     be_bigger_than(2).and_smaller_than(4).description
#     #     # => "be bigger than 2 and smaller than 4"
#     # ...rather than:
#     #     # => "be bigger than 2"
#     expectations.include_chain_clauses_in_custom_matcher_descriptions = true
#   end
#
#   # rspec-mocks config goes here. You can use an alternate test double
#   # library (such as bogus or mocha) by changing the `mock_with` option here.
#   config.mock_with :rspec do |mocks|
#     # Prevents you from mocking or stubbing a method that does not exist on
#     # a real object. This is generally recommended, and will default to
#     # `true` in RSpec 4.
#     mocks.verify_partial_doubles = true
#   end
#
#   # This option will default to `:apply_to_host_groups` in RSpec 4 (and will
#   # have no way to turn it off -- the option exists only for backwards
#   # compatibility in RSpec 3). It causes shared context metadata to be
#   # inherited by the metadata hash of host groups and examples, rather than
#   # triggering implicit auto-inclusion in groups with matching metadata.
#   config.shared_context_metadata_behavior = :apply_to_host_groups
#
# end
