# frozen_string_literal: true

shared_examples 'logs kubernetes errors' do
  let(:error_hash) do
    {
      service: service.class.name,
      app_id: application.id,
      project_ids: application.cluster.project_ids,
      group_ids: [],
      error_code: error_code
    }
  end

  let(:logger_hash) do
    error_hash.merge(
      exception: error_name,
      message: error_message,
      backtrace: instance_of(Array)
    )
  end

  it 'logs into kubernetes.log and Sentry' do
    expect(service.send(:logger)).to receive(:error).with(hash_including(logger_hash))

    expect(Gitlab::Sentry).to receive(:track_acceptable_exception).with(
      error,
      extra: hash_including(error_hash)
    )

    service.execute
  end
end
