. */ declare(strict_types=1); namespace Tests\Unit\Helpers; use Carbon\Carbon; use FireflyIII\Helpers\FiscalHelper; use FireflyIII\Models\Preference; use Log; use Preferences; use Tests\TestCase; /** * * Class FiscalHelperTest */ class FiscalHelperTest extends TestCase { /** * */ public function setUp(): void { parent::setUp(); Log::info(sprintf('Now in %s.', \get_class($this))); } /** * Fiscal year starts on April 1st. * Current date is June 6th. * * Fiscal year ends next year on Mar 31. * * @covers \FireflyIII\Helpers\FiscalHelper */ public function testEndOfFiscalYear(): void { $pref = new Preference; $pref->data = true; $datePref = new Preference; $datePref->data = '04-01'; Preferences::shouldReceive('get')->withArgs(['customFiscalYear', false])->andReturn($pref)->once(); Preferences::shouldReceive('get')->withArgs(['fiscalYearStart', '01-01'])->andReturn($datePref)->once(); $helper = new FiscalHelper; $date = new Carbon('2018-06-06'); $result = $helper->endOfFiscalYear($date); $this->assertEquals('2019-03-31', $result->format('Y-m-d')); } /** * No fiscal year * Current date is June 6th. * * Fiscal year ends next year on Dec 31. * * @covers \FireflyIII\Helpers\FiscalHelper */ public function testEndOfFiscalYearNoPref(): void { $pref = new Preference; $pref->data = false; Preferences::shouldReceive('get')->withArgs(['customFiscalYear', false])->andReturn($pref)->once(); $helper = new FiscalHelper; $date = new Carbon('2018-06-06'); $result = $helper->endOfFiscalYear($date); $this->assertEquals('2018-12-31', $result->format('Y-m-d')); } /** * Fiscal year starts on April 1st. * Current date is June 6th. * * Fiscal year starts in current year. * * @covers \FireflyIII\Helpers\FiscalHelper */ public function testStartOfFiscalYear(): void { $pref = new Preference; $pref->data = true; $datePref = new Preference; $datePref->data = '04-01'; Preferences::shouldReceive('get')->withArgs(['customFiscalYear', false])->andReturn($pref)->once(); Preferences::shouldReceive('get')->withArgs(['fiscalYearStart', '01-01'])->andReturn($datePref)->once(); $helper = new FiscalHelper; $date = new Carbon('2018-06-06'); $result = $helper->startOfFiscalYear($date); $this->assertEquals('2018-04-01', $result->format('Y-m-d')); } /** * No fiscal year * Current date is June 6th. * * Fiscal year starts Jan 1st. * * @covers \FireflyIII\Helpers\FiscalHelper */ public function testStartOfFiscalYearNoPref(): void { $pref = new Preference; $pref->data = false; Preferences::shouldReceive('get')->withArgs(['customFiscalYear', false])->andReturn($pref)->once(); $helper = new FiscalHelper; $date = new Carbon('2018-06-06'); $result = $helper->startOfFiscalYear($date); $this->assertEquals('2018-01-01', $result->format('Y-m-d')); } /** * Fiscal year starts on April 1st. * Current date is Feb 6th. * * Fiscal year starts in previous year. * * @covers \FireflyIII\Helpers\FiscalHelper */ public function testStartOfFiscalYearPrev(): void { $pref = new Preference; $pref->data = true; $datePref = new Preference; $datePref->data = '04-01'; Preferences::shouldReceive('get')->withArgs(['customFiscalYear', false])->andReturn($pref)->once(); Preferences::shouldReceive('get')->withArgs(['fiscalYearStart', '01-01'])->andReturn($datePref)->once(); $helper = new FiscalHelper; $date = new Carbon('2018-02-06'); $result = $helper->startOfFiscalYear($date); $this->assertEquals('2017-04-01', $result->format('Y-m-d')); } }