mirror of
https://github.com/solidtime-io/solidtime.git
synced 2026-08-20 22:22:16 +01:00
Add "Week" grouping option to reporting
This commit is contained in:
committed by
Gregor Vostrak
parent
97fd882878
commit
dfe3206614
@@ -326,15 +326,50 @@ class LocalizationServiceTest extends TestCaseWithDatabase
|
||||
$this->assertNull($formatted);
|
||||
}
|
||||
|
||||
public function test_format_time_group_key_returns_the_key_unchanged_for_non_day_group_types(): void
|
||||
public function test_format_time_group_key_formats_a_week_key_as_the_range_it_covers(): void
|
||||
{
|
||||
// Arrange
|
||||
$this->localizationService->setDateFormat(DateFormat::SlashSeparatedDDMMYYYY);
|
||||
|
||||
// Act
|
||||
$formatted = $this->localizationService->formatTimeGroupKey('2026-07-27', TimeEntryAggregationType::Week);
|
||||
|
||||
// Assert
|
||||
$this->assertSame('27/07/2026 - 02/08/2026', $formatted);
|
||||
}
|
||||
|
||||
public function test_format_time_group_key_formats_a_week_range_from_the_weekday_of_its_own_key(): void
|
||||
{
|
||||
// Arrange
|
||||
$this->localizationService->setDateFormat(DateFormat::SlashSeparatedDDMMYYYY);
|
||||
|
||||
// Act
|
||||
$sundayStart = $this->localizationService->formatTimeGroupKey('2026-07-26', TimeEntryAggregationType::Week);
|
||||
$mondayStart = $this->localizationService->formatTimeGroupKey('2026-07-20', TimeEntryAggregationType::Week);
|
||||
|
||||
// Assert
|
||||
$this->assertSame('26/07/2026 - 01/08/2026', $sundayStart);
|
||||
$this->assertSame('20/07/2026 - 26/07/2026', $mondayStart);
|
||||
}
|
||||
|
||||
public function test_format_time_group_key_formats_a_week_range_spanning_new_year(): void
|
||||
{
|
||||
// Arrange
|
||||
$this->localizationService->setDateFormat(DateFormat::SlashSeparatedDDMMYYYY);
|
||||
|
||||
// Act
|
||||
$formatted = $this->localizationService->formatTimeGroupKey('2025-12-29', TimeEntryAggregationType::Week);
|
||||
|
||||
// Assert
|
||||
$this->assertSame('29/12/2025 - 04/01/2026', $formatted);
|
||||
}
|
||||
|
||||
public function test_format_time_group_key_does_not_change_month_year_and_entity_group_types(): void
|
||||
{
|
||||
// Arrange
|
||||
$this->localizationService->setDateFormat(DateFormat::SlashSeparatedDDMMYYYY);
|
||||
|
||||
// Act & Assert
|
||||
// Week/month/year are not offered as a grouping in the reporting UI and their keys have
|
||||
// different shapes, so they are passed through rather than formatted as a date.
|
||||
$this->assertSame('2001-02-03', $this->localizationService->formatTimeGroupKey('2001-02-03', TimeEntryAggregationType::Week));
|
||||
$this->assertSame('2001-02', $this->localizationService->formatTimeGroupKey('2001-02', TimeEntryAggregationType::Month));
|
||||
$this->assertSame('2001', $this->localizationService->formatTimeGroupKey('2001', TimeEntryAggregationType::Year));
|
||||
$this->assertSame('some-uuid', $this->localizationService->formatTimeGroupKey('some-uuid', TimeEntryAggregationType::Project));
|
||||
|
||||
Reference in New Issue
Block a user