mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2025-09-30 18:41:08 +00:00
Fix code and tests.
This commit is contained in:
@@ -161,7 +161,7 @@ class Navigation
|
|||||||
public function startOfPeriod(Carbon $theDate, string $repeatFreq): Carbon
|
public function startOfPeriod(Carbon $theDate, string $repeatFreq): Carbon
|
||||||
{
|
{
|
||||||
$date = clone $theDate;
|
$date = clone $theDate;
|
||||||
|
Log::debug(sprintf('Now in startOfPeriod("%s", "%s")', $date->toIso8601String(), $repeatFreq));
|
||||||
$functionMap = [
|
$functionMap = [
|
||||||
'1D' => 'startOfDay',
|
'1D' => 'startOfDay',
|
||||||
'daily' => 'startOfDay',
|
'daily' => 'startOfDay',
|
||||||
@@ -178,15 +178,33 @@ class Navigation
|
|||||||
'yearly' => 'startOfYear',
|
'yearly' => 'startOfYear',
|
||||||
'1Y' => 'startOfYear',
|
'1Y' => 'startOfYear',
|
||||||
];
|
];
|
||||||
|
|
||||||
|
$parameterMap = [
|
||||||
|
'startOfWeek' => [Carbon::MONDAY],
|
||||||
|
];
|
||||||
|
|
||||||
if (array_key_exists($repeatFreq, $functionMap)) {
|
if (array_key_exists($repeatFreq, $functionMap)) {
|
||||||
$function = $functionMap[$repeatFreq];
|
$function = $functionMap[$repeatFreq];
|
||||||
|
Log::debug(sprintf('Function is ->%s()', $function));
|
||||||
|
if(array_key_exists($function, $parameterMap)) {
|
||||||
|
Log::debug(sprintf('Parameter map, function becomes ->%s(%s)', $function, join(', ', $parameterMap[$function])));
|
||||||
|
$date->{$function}($parameterMap[$function][0]);
|
||||||
|
Log::debug(sprintf('Result is "%s"', $date->toIso8601String()));
|
||||||
|
|
||||||
|
return $date;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
$date->{$function}(); // @phpstan-ignore-line
|
$date->{$function}(); // @phpstan-ignore-line
|
||||||
|
Log::debug(sprintf('Result is "%s"', $date->toIso8601String()));
|
||||||
|
|
||||||
return $date;
|
return $date;
|
||||||
}
|
}
|
||||||
if ('half-year' === $repeatFreq || '6M' === $repeatFreq) {
|
if ('half-year' === $repeatFreq || '6M' === $repeatFreq) {
|
||||||
$skipTo = $date->month > 7 ? 6 : 0;
|
$skipTo = $date->month > 7 ? 6 : 0;
|
||||||
$date->startOfYear()->addMonths($skipTo);
|
$date->startOfYear()->addMonths($skipTo);
|
||||||
|
Log::debug(sprintf('Custom call for "%s": addMonths(%d)', $repeatFreq, $skipTo));
|
||||||
|
Log::debug(sprintf('Result is "%s"', $date->toIso8601String()));
|
||||||
|
|
||||||
return $date;
|
return $date;
|
||||||
}
|
}
|
||||||
@@ -202,10 +220,12 @@ class Navigation
|
|||||||
default => null,
|
default => null,
|
||||||
};
|
};
|
||||||
if (null !== $result) {
|
if (null !== $result) {
|
||||||
|
Log::debug(sprintf('Result is "%s"', $date->toIso8601String()));
|
||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ('custom' === $repeatFreq) {
|
if ('custom' === $repeatFreq) {
|
||||||
|
Log::debug(sprintf('Custom, result is "%s"', $date->toIso8601String()));
|
||||||
return $date; // the date is already at the start.
|
return $date; // the date is already at the start.
|
||||||
}
|
}
|
||||||
Log::error(sprintf('Cannot do startOfPeriod for $repeat_freq "%s"', $repeatFreq));
|
Log::error(sprintf('Cannot do startOfPeriod for $repeat_freq "%s"', $repeatFreq));
|
||||||
@@ -216,6 +236,7 @@ class Navigation
|
|||||||
public function endOfPeriod(Carbon $end, string $repeatFreq): Carbon
|
public function endOfPeriod(Carbon $end, string $repeatFreq): Carbon
|
||||||
{
|
{
|
||||||
$currentEnd = clone $end;
|
$currentEnd = clone $end;
|
||||||
|
Log::debug(sprintf('Now in endOfPeriod("%s", "%s").', $currentEnd->toIso8601String(), $repeatFreq));
|
||||||
|
|
||||||
$functionMap = [
|
$functionMap = [
|
||||||
'1D' => 'endOfDay',
|
'1D' => 'endOfDay',
|
||||||
@@ -296,6 +317,7 @@ class Navigation
|
|||||||
if (in_array($repeatFreq, $subDay, true)) {
|
if (in_array($repeatFreq, $subDay, true)) {
|
||||||
$currentEnd->subDay();
|
$currentEnd->subDay();
|
||||||
}
|
}
|
||||||
|
Log::debug(sprintf('Final result: %s', $currentEnd->toIso8601String()));
|
||||||
|
|
||||||
return $currentEnd;
|
return $currentEnd;
|
||||||
}
|
}
|
||||||
@@ -471,11 +493,11 @@ class Navigation
|
|||||||
public function preferredCarbonFormat(Carbon $start, Carbon $end): string
|
public function preferredCarbonFormat(Carbon $start, Carbon $end): string
|
||||||
{
|
{
|
||||||
$format = 'Y-m-d';
|
$format = 'Y-m-d';
|
||||||
if ($start->diffInMonths($end, true) > 0) {
|
if ((int)$start->diffInMonths($end, true) > 1) {
|
||||||
$format = 'Y-m';
|
$format = 'Y-m';
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($start->diffInMonths($end, true) > 12) {
|
if ((int)$start->diffInMonths($end, true) > 12) {
|
||||||
$format = 'Y';
|
$format = 'Y';
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -558,11 +580,11 @@ class Navigation
|
|||||||
public function preferredEndOfPeriod(Carbon $start, Carbon $end): string
|
public function preferredEndOfPeriod(Carbon $start, Carbon $end): string
|
||||||
{
|
{
|
||||||
$format = 'endOfDay';
|
$format = 'endOfDay';
|
||||||
if ($start->diffInMonths($end, true) > 1) {
|
if ((int)$start->diffInMonths($end, true) > 1) {
|
||||||
$format = 'endOfMonth';
|
$format = 'endOfMonth';
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($start->diffInMonths($end, true) > 12) {
|
if ((int)$start->diffInMonths($end, true) > 12) {
|
||||||
$format = 'endOfYear';
|
$format = 'endOfYear';
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -576,11 +598,11 @@ class Navigation
|
|||||||
public function preferredRangeFormat(Carbon $start, Carbon $end): string
|
public function preferredRangeFormat(Carbon $start, Carbon $end): string
|
||||||
{
|
{
|
||||||
$format = '1D';
|
$format = '1D';
|
||||||
if ($start->diffInMonths($end, true) > 1) {
|
if ((int)$start->diffInMonths($end, true) > 1) {
|
||||||
$format = '1M';
|
$format = '1M';
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($start->diffInMonths($end, true) > 12) {
|
if ((int)$start->diffInMonths($end, true) > 12) {
|
||||||
$format = '1Y';
|
$format = '1Y';
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -594,11 +616,11 @@ class Navigation
|
|||||||
public function preferredSqlFormat(Carbon $start, Carbon $end): string
|
public function preferredSqlFormat(Carbon $start, Carbon $end): string
|
||||||
{
|
{
|
||||||
$format = '%Y-%m-%d';
|
$format = '%Y-%m-%d';
|
||||||
if ($start->diffInMonths($end, true) > 1) {
|
if ((int)$start->diffInMonths($end, true) > 1) {
|
||||||
$format = '%Y-%m';
|
$format = '%Y-%m';
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($start->diffInMonths($end, true) > 12) {
|
if ((int)$start->diffInMonths($end, true) > 12) {
|
||||||
$format = '%Y';
|
$format = '%Y';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -126,8 +126,8 @@ class ParseDateString
|
|||||||
default => $today,
|
default => $today,
|
||||||
'yesterday' => $today->subDay(),
|
'yesterday' => $today->subDay(),
|
||||||
'tomorrow' => $today->addDay(),
|
'tomorrow' => $today->addDay(),
|
||||||
'start of this week' => $today->startOfWeek(),
|
'start of this week' => $today->startOfWeek(Carbon::MONDAY),
|
||||||
'end of this week' => $today->endOfWeek(),
|
'end of this week' => $today->endOfWeek(Carbon::SUNDAY),
|
||||||
'start of this month' => $today->startOfMonth(),
|
'start of this month' => $today->startOfMonth(),
|
||||||
'end of this month' => $today->endOfMonth(),
|
'end of this month' => $today->endOfMonth(),
|
||||||
'start of this quarter' => $today->startOfQuarter(),
|
'start of this quarter' => $today->startOfQuarter(),
|
||||||
|
@@ -27,7 +27,7 @@ namespace Tests\unit\Support\Calendar;
|
|||||||
use FireflyIII\Exceptions\IntervalException;
|
use FireflyIII\Exceptions\IntervalException;
|
||||||
use FireflyIII\Support\Calendar\Calculator;
|
use FireflyIII\Support\Calendar\Calculator;
|
||||||
use FireflyIII\Support\Calendar\Periodicity;
|
use FireflyIII\Support\Calendar\Periodicity;
|
||||||
use PHPUnit\Framework\TestCase;
|
use Tests\integration\TestCase;
|
||||||
use Tests\unit\Support\Calendar\Periodicity\BimonthlyTest;
|
use Tests\unit\Support\Calendar\Periodicity\BimonthlyTest;
|
||||||
use Tests\unit\Support\Calendar\Periodicity\DailyTest;
|
use Tests\unit\Support\Calendar\Periodicity\DailyTest;
|
||||||
use Tests\unit\Support\Calendar\Periodicity\FortnightlyTest;
|
use Tests\unit\Support\Calendar\Periodicity\FortnightlyTest;
|
||||||
|
@@ -25,7 +25,7 @@ declare(strict_types=1);
|
|||||||
namespace Tests\unit\Support\Calendar\Periodicity;
|
namespace Tests\unit\Support\Calendar\Periodicity;
|
||||||
|
|
||||||
use FireflyIII\Support\Calendar\Periodicity\Interval;
|
use FireflyIII\Support\Calendar\Periodicity\Interval;
|
||||||
use PHPUnit\Framework\TestCase;
|
use Tests\integration\TestCase;
|
||||||
|
|
||||||
abstract class IntervalTestCase extends TestCase
|
abstract class IntervalTestCase extends TestCase
|
||||||
{
|
{
|
||||||
|
@@ -27,7 +27,7 @@ namespace Tests\unit\Support;
|
|||||||
use Carbon\Carbon;
|
use Carbon\Carbon;
|
||||||
use FireflyIII\Support\Calendar\Periodicity;
|
use FireflyIII\Support\Calendar\Periodicity;
|
||||||
use FireflyIII\Support\Navigation;
|
use FireflyIII\Support\Navigation;
|
||||||
use PHPUnit\Framework\TestCase;
|
use Tests\integration\TestCase;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @group unit-test
|
* @group unit-test
|
||||||
|
@@ -82,8 +82,9 @@ final class NavigationEndOfPeriodTest extends TestCase
|
|||||||
*/
|
*/
|
||||||
public function testGivenADateAndFrequencyWhenCalculateTheDateThenReturnsTheExpectedDateSuccessful(string $frequency, Carbon $from, Carbon $expected): void
|
public function testGivenADateAndFrequencyWhenCalculateTheDateThenReturnsTheExpectedDateSuccessful(string $frequency, Carbon $from, Carbon $expected): void
|
||||||
{
|
{
|
||||||
$period = $this->navigation->endOfPeriod($from, $frequency);
|
$period = clone $this->navigation->endOfPeriod($from, $frequency);
|
||||||
self::assertSame($expected->toDateString(), $period->toDateString());
|
self::assertSame($expected->toDateString(), $period->toDateString());
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function provideUnknownFrequencies(): iterable
|
public static function provideUnknownFrequencies(): iterable
|
||||||
|
@@ -25,7 +25,7 @@ declare(strict_types=1);
|
|||||||
namespace Tests\unit\Support;
|
namespace Tests\unit\Support;
|
||||||
|
|
||||||
use FireflyIII\Support\Navigation;
|
use FireflyIII\Support\Navigation;
|
||||||
use PHPUnit\Framework\TestCase;
|
use Tests\integration\TestCase;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @group unit-test
|
* @group unit-test
|
||||||
|
@@ -26,7 +26,7 @@ namespace Tests\unit\Support;
|
|||||||
|
|
||||||
use Carbon\Carbon;
|
use Carbon\Carbon;
|
||||||
use FireflyIII\Support\Navigation;
|
use FireflyIII\Support\Navigation;
|
||||||
use PHPUnit\Framework\TestCase;
|
use Tests\integration\TestCase;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @group unit-test
|
* @group unit-test
|
||||||
|
@@ -26,7 +26,7 @@ namespace Tests\unit\Support;
|
|||||||
|
|
||||||
use Carbon\Carbon;
|
use Carbon\Carbon;
|
||||||
use FireflyIII\Support\Navigation;
|
use FireflyIII\Support\Navigation;
|
||||||
use PHPUnit\Framework\TestCase;
|
use Tests\integration\TestCase;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @group unit-test
|
* @group unit-test
|
||||||
|
@@ -26,7 +26,7 @@ namespace Tests\unit\Support;
|
|||||||
|
|
||||||
use Carbon\Carbon;
|
use Carbon\Carbon;
|
||||||
use FireflyIII\Support\Navigation;
|
use FireflyIII\Support\Navigation;
|
||||||
use PHPUnit\Framework\TestCase;
|
use Tests\integration\TestCase;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @group unit-test
|
* @group unit-test
|
||||||
|
@@ -26,7 +26,7 @@ namespace Tests\unit\Support;
|
|||||||
|
|
||||||
use Carbon\Carbon;
|
use Carbon\Carbon;
|
||||||
use FireflyIII\Support\Navigation;
|
use FireflyIII\Support\Navigation;
|
||||||
use PHPUnit\Framework\TestCase;
|
use Tests\integration\TestCase;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @group unit-test
|
* @group unit-test
|
||||||
|
@@ -27,7 +27,7 @@ namespace Tests\unit\Support;
|
|||||||
use Carbon\Carbon;
|
use Carbon\Carbon;
|
||||||
use FireflyIII\Support\Navigation;
|
use FireflyIII\Support\Navigation;
|
||||||
use Illuminate\Support\Facades\Log;
|
use Illuminate\Support\Facades\Log;
|
||||||
use PHPUnit\Framework\TestCase;
|
use Tests\integration\TestCase;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @group unit-test
|
* @group unit-test
|
||||||
@@ -101,6 +101,8 @@ final class NavigationStartOfPeriodTest extends TestCase
|
|||||||
*/
|
*/
|
||||||
public function testGivenADateAndUnknownFrequencyWhenCalculateTheDateThenReturnsTheSameDateSuccessful(string $frequency, Carbon $from, Carbon $expected): void
|
public function testGivenADateAndUnknownFrequencyWhenCalculateTheDateThenReturnsTheSameDateSuccessful(string $frequency, Carbon $from, Carbon $expected): void
|
||||||
{
|
{
|
||||||
|
Log::spy();
|
||||||
|
|
||||||
Log::shouldReceive('error')
|
Log::shouldReceive('error')
|
||||||
->with(sprintf('Cannot do startOfPeriod for $repeat_freq "%s"', $frequency))
|
->with(sprintf('Cannot do startOfPeriod for $repeat_freq "%s"', $frequency))
|
||||||
->andReturnNull()
|
->andReturnNull()
|
||||||
|
Reference in New Issue
Block a user