RSpec.configure do |config|
  config.before(:each) do
    # Clear any mail deliveries
    # This happens automatically for :mailer specs
    ActionMailer::Base.delivery_method = :test
    ActionMailer::Base.deliveries.clear

    RequestStore.clear!
  end

  config.append_after(:each) do
    # Cleanup after specs changing locale explicitly or
    # by calling code in the app setting changing the locale.
    I18n.locale = :en unless I18n.locale == :en

    # Set the class instance variable @current_user to nil
    # to avoid having users from one spec present in the next
    ::User.instance_variable_set(:@current_user, nil)
  end

  # We don't want this to be reported on CI as it breaks the build
  unless ENV['CI']
    config.after(:suite) do
      [User, Project, WorkPackage].each do |cls|
        next if cls.count == 0
        raise <<-EOS
          Your specs left a #{cls} in the DB
          Did you use before(:all) instead of before
          or forget to kill the instances in a after(:all)?
        EOS
      end
    end
  end
end
