# frozen_string_literal: true

require 'test_helper'
require 'minitest/autorun'
require 'sidekiq/testing'

class AccountingWorkerTest < ActiveSupport::TestCase
  setup do
    Sidekiq::Testing.inline!
    @worker = AccountingWorker.new
  end

  teardown do
    Sidekiq::Testing.fake!
  end

  test 'build accounting lines for yesterday by default' do
    date = Time.current.midnight
    travel_to(date)
    @worker.perform
    assert_match(/^yesterday:/, @worker.performed)
    assert_match(date.yesterday.to_date.iso8601, @worker.performed)
  end

  test 'build accounting lines for today' do
    @worker.perform(:today)
    assert_match(/^today:/, @worker.performed)
    assert_match(Time.current.to_date.iso8601, @worker.performed)
  end

  test 'build specified invoices selection' do
    ids = [5820, 5821, 5822]
    @worker.perform(:invoices, ids)
    assert_match(/^invoices:/, @worker.performed)
    assert_match(ids.to_s, @worker.performed)
  end

  test 'build all invoices' do
    @worker.perform(:all)
    assert_match(/^all:/, @worker.performed)
    assert_match(Invoice.all.map(&:id).to_s, @worker.performed)
  end
end
