Skip to content

Commit b38be46

Browse files
authored
Merge pull request #93 from chives/fix
Fill entity field before checking file existance, do not check existence before file update or removal
2 parents 7afe3cb + 21eca37 commit b38be46

File tree

4 files changed

+15
-14
lines changed

4 files changed

+15
-14
lines changed

src/Entity/FileLoader.php

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -51,10 +51,11 @@ public function loadEntityFiles(object $entity): void
5151
array_walk(
5252
$configurations,
5353
function (FilePropertyConfiguration $configuration, $key, object $entity): void {
54-
$configuration->getFilePropertyReflection()->setValue(
55-
$entity,
56-
$this->fromEntity($configuration, $entity)
57-
);
54+
$file = $this->fromEntity($configuration, $entity);
55+
$configuration->getFilePropertyReflection()->setValue($entity, $file);
56+
if (null !== $file) {
57+
$this->checkFileExistenceIfEnabled($configuration, $file);
58+
}
5859
},
5960
$entity
6061
);
@@ -75,12 +76,7 @@ public function fromEntity(FilePropertyConfiguration $configuration, object $ent
7576
return null;
7677
}
7778

78-
$file = $this->fileManager->load($configuration->getFileSystemName(), $path);
79-
if (null !== $file) {
80-
$this->checkFileExistenceIfEnabled($className, $file);
81-
}
82-
83-
return $file;
79+
return $this->fileManager->load($configuration->getFileSystemName(), $path);
8480
}
8581

8682
public function disableFileExistenceChecksOnLoad(): void
@@ -112,16 +108,17 @@ public function enableClassFileExistenceChecksOnLoad(string $className): void
112108
}
113109

114110
/**
115-
* @param class-string<object> $className
111+
* @param FilePropertyConfiguration $configuration
116112
* @param WebFile $file
117113
* @return void
118114
*/
119-
private function checkFileExistenceIfEnabled(string $className, WebFile $file): void
115+
public function checkFileExistenceIfEnabled(FilePropertyConfiguration $configuration, WebFile $file): void
120116
{
121117
if (false === $this->fileExistenceChecksOnLoad) {
122118
return;
123119
}
124120

121+
$className = $configuration->getEntityClass();
125122
if (false === array_key_exists($className, $this->classFileExistenceChecksOnLoad)) {
126123
$this->classFileExistenceChecksOnLoad[$className] = true;
127124
}

src/Entity/FileRemover.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ function (FilePropertyConfiguration $configuration, $key, object $entity): void
5656
return;
5757
}
5858

59+
$this->fileLoader->checkFileExistenceIfEnabled($configuration, $file);
5960
$this->add($configuration->getPathPrefix(), $file);
6061
},
6162
$entity

src/Entity/FileUpdater.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,9 @@ public function updateFiles(object $entity): void
5656
function (FilePropertyConfiguration $configuration, $key, object $entity): void {
5757
$newFile = $this->readNewFileFromEntity($configuration, $entity);
5858
$currentFile = $this->fileLoader->fromEntity($configuration, $entity);
59+
if (null !== $currentFile) {
60+
$this->fileLoader->checkFileExistenceIfEnabled($configuration, $currentFile);
61+
}
5962
if (false === $this->shouldFilePropertyBeUpdated($newFile, $currentFile)) {
6063
return;
6164
}

tests/_support/Module/UploadModule.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,12 @@
1212
namespace Tests\FSi\Module;
1313

1414
use Assert\Assertion;
15+
use Codeception\Lib\Connector\Symfony as SymfonyConnector;
1516
use Codeception\Module;
1617
use Codeception\Module\Symfony;
1718
use Codeception\TestInterface;
1819
use FSi\Component\Files\Upload\FileFactory;
1920
use FSi\Component\Files\Upload\PhpFilesHandler;
20-
use Symfony\Component\BrowserKit\AbstractBrowser;
2121
use Symfony\Component\DomCrawler\Crawler;
2222

2323
final class UploadModule extends Module
@@ -51,7 +51,7 @@ public function grabFileFactory(): FileFactory
5151
return $fileFactory;
5252
}
5353

54-
public function grabClient(): AbstractBrowser
54+
public function grabClient(): SymfonyConnector
5555
{
5656
Assertion::notNull($this->symfony->client);
5757

0 commit comments

Comments
 (0)