diff --git a/src/Services/TimeWardenManager.php b/src/Services/TimeWardenManager.php index 3f083bf..9009fbd 100644 --- a/src/Services/TimeWardenManager.php +++ b/src/Services/TimeWardenManager.php @@ -61,8 +61,12 @@ public function group(string $groupName): self { $this->stop(); - /** @todo do the same as task(). overwrite empty groups, avoid groups with same name (in this case... active group with name?) */ - $this->groups[] = new Group($groupName); + $group = $this->getLastGroup(); + if ($group && ! $group->getLastTask() instanceof Task) { + $group->name = $groupName; + } else { + $this->groups[] = new Group($groupName); + } return self::$instance; } diff --git a/tests/Services/TimeWardenManagerTest.php b/tests/Services/TimeWardenManagerTest.php index da6f20d..9d4cbaf 100644 --- a/tests/Services/TimeWardenManagerTest.php +++ b/tests/Services/TimeWardenManagerTest.php @@ -50,20 +50,34 @@ it('can create and retrieve groups', function (): void { $instance = TimeWardenManager::instance(); - $instance->group('Group1'); - $instance->group('Group2'); + $instance->group('Group1')->task('foo'); + $instance->group('Group2')->task('bar'); $groups = $instance->getGroups(); expect($groups)->toHaveCount(2); expect($groups[0])->toBeInstanceOf(Group::class); + expect($groups[1])->toBeInstanceOf(Group::class); expect($groups[0]->name)->toBe('Group1'); - expect($groups[1]->name)->toBe('Group2'); }); +it('overwrite last group if doesn\'t have tasks when a new group is created', function (): void { + $instance = TimeWardenManager::instance(); + + $instance->group('Group1'); + $instance->group('Group2'); + $instance->group('Group3'); + + $groups = $instance->getGroups(); + + expect($groups)->toHaveCount(1); + expect($groups[0]->name)->toBe('Group3'); + expect($groups[0])->toBeInstanceOf(Group::class); +}); + it('can create tasks of timewarden instance', function (): void { $instance = TimeWardenManager::instance();