diff --git a/src/Updater.php b/src/Updater.php index 59c8893..63c6d22 100644 --- a/src/Updater.php +++ b/src/Updater.php @@ -2,14 +2,14 @@ namespace nullthoughts\LaravelDataSync; +use Illuminate\Support\Collection; +use Illuminate\Support\Facades\File; use Illuminate\Support\Facades\Storage; +use Illuminate\Support\Str; use nullthoughts\LaravelDataSync\Exceptions\ErrorUpdatingModelException; use nullthoughts\LaravelDataSync\Exceptions\FileDirectoryNotFoundException; use nullthoughts\LaravelDataSync\Exceptions\NoCriteriaException; use nullthoughts\LaravelDataSync\Exceptions\NoRecordsInvalidJSONException; -use Illuminate\Support\Collection; -use Illuminate\Support\Facades\File; -use Illuminate\Support\Str; use stdClass; class Updater @@ -116,7 +116,7 @@ class Updater { $directory = $path ?? config('data-sync.path', base_path('sync')); - if (!file_exists($directory) && !$this->remote) { + if ($this->directoryMissingLocally($directory) || $this->directoryMissingRemotely($directory)) { throw new FileDirectoryNotFoundException(); } @@ -309,4 +309,24 @@ class Updater return [$key => $value]; })->toArray(); } + + /** + * @param \Illuminate\Config\Repository $directory + * + * @return bool + */ + protected function directoryMissingLocally($directory) + { + return !$this->remote && !file_exists($directory); + } + + /** + * @param \Illuminate\Config\Repository $directory + * + * @return bool + */ + protected function directoryMissingRemotely($directory) + { + return $this->remote && !Storage::disk($this->disk)->exists($directory); + } } diff --git a/tests/Unit/UpdaterRemoteTest.php b/tests/Unit/UpdaterRemoteTest.php index a5b9a6f..f27ebb1 100644 --- a/tests/Unit/UpdaterRemoteTest.php +++ b/tests/Unit/UpdaterRemoteTest.php @@ -79,20 +79,20 @@ class UpdaterRemoteTest extends TestCase $this->assertTrue($supervisor->is(Roles::first()->supervisor)); } -// /** -// * @test -// * @group current -// */ -// public function exception_is_thrown_if_the_directory_does_not_exists() -// { -// try { -// new UpdaterFake(null, null, true, 's3'); -// -// $this->fail('exception was thrown'); -// } catch (Exception $e) { -// $this->assertEquals('Specified sync file directory does not exist', $e->getMessage()); -// } -// } + /** + * @test + * @group current + */ + public function exception_is_thrown_if_the_directory_does_not_exists() + { + try { + new UpdaterFake(null, null, true, 's3'); + + $this->fail('exception was thrown'); + } catch (Exception $e) { + $this->assertEquals('Specified sync file directory does not exist', $e->getMessage()); + } + } /** @test */ public function invalid_json_throws_an_exception()