Skip to content
Open
Show file tree
Hide file tree
Changes from 6 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/Toolkit/Collection.php
Original file line number Diff line number Diff line change
Expand Up @@ -553,7 +553,7 @@ public function group(
}
}

return new self($groups);
return new self($groups, !$caseInsensitive);
}

throw new Exception(
Expand Down
30 changes: 30 additions & 0 deletions tests/Toolkit/CollectionTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -364,6 +364,36 @@ public function testGroupByWithInvalidKey(): void
$collection->group(1);
}

public function testGroupByCallableCaseSensitive(): void
{
$collection = new Collection();

$collection->taylor = [
'name' => 'Taylor',
'genre' => 'Pop',
];

$collection->justin = [
'name' => 'Justin',
'genre' => 'Pop',
];

$collection->aubrey = [
'name' => 'Aubrey',
'genre' => 'Hip-Hop',
];

$groupsCaseInsensitive = $collection->group(fn (array $item) => $item['genre'], true);

$this->assertTrue($groupsCaseInsensitive->has('pop'));
$this->assertTrue($groupsCaseInsensitive->has('hip-hop'));

$groupsCaseSensitive = $collection->group(fn (array $item) => $item['genre'], false);

$this->assertTrue($groupsCaseSensitive->has('Pop'));
$this->assertTrue($groupsCaseSensitive->has('Hip-Hop'));
}

public function testIndexOf(): void
{
$this->assertSame(1, $this->collection->indexOf('My second element'));
Expand Down