Skip to content

Commit f0c69a3

Browse files
authored
Ensure asset container contents folder check finishes with / (#356)
* Ensure folder check finishes with / * Test coverage * Better test name
1 parent c58b1cf commit f0c69a3

File tree

2 files changed

+15
-1
lines changed

2 files changed

+15
-1
lines changed

src/Assets/AssetContainerContents.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ public function filteredDirectoriesIn($folder, $recursive)
7171

7272
return $this->directories()
7373
->filter(function ($dir) use ($folder) {
74-
if ($folder && ! Str::startsWith($dir['path'], $folder)) {
74+
if ($folder && ! Str::startsWith($dir['path'], Str::finish($folder, '/'))) {
7575
return false;
7676
}
7777

tests/Assets/AssetContainerContentsTest.php

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,4 +84,18 @@ public function it_creates_parent_folders_where_they_dont_exist()
8484

8585
$this->assertCount(3, $container->contents()->filteredDirectoriesIn('', true));
8686
}
87+
88+
#[Test]
89+
public function it_doesnt_nest_folders_that_start_with_the_same_name()
90+
{
91+
$container = tap(AssetContainer::make('test')->disk('test'))->save();
92+
$container->makeAsset('one/file.txt')->upload(UploadedFile::fake()->create('one.txt'));
93+
$container->makeAsset('one-two/file.txt')->upload(UploadedFile::fake()->create('one.txt'));
94+
$container->makeAsset('one/two/file.txt')->upload(UploadedFile::fake()->create('one.txt'));
95+
96+
$filtered = $container->contents()->filteredDirectoriesIn('one/', true);
97+
98+
$this->assertCount(1, $filtered);
99+
$this->assertSame($filtered->keys()->all(), ['one/two']);
100+
}
87101
}

0 commit comments

Comments
 (0)