From a7504b3b7dd9c526cf198ff0535192e1eb12be5e Mon Sep 17 00:00:00 2001 From: ncla Date: Fri, 7 Oct 2022 00:07:02 +0300 Subject: [PATCH 1/2] Fix --- src/Console/Commands/AssetsMeta.php | 4 + tests/Console/Commands/AssetsMetaTest.php | 100 ++++++++++++++++++++++ 2 files changed, 104 insertions(+) create mode 100644 tests/Console/Commands/AssetsMetaTest.php diff --git a/src/Console/Commands/AssetsMeta.php b/src/Console/Commands/AssetsMeta.php index dc6ad80aaf2..69d6acbd162 100644 --- a/src/Console/Commands/AssetsMeta.php +++ b/src/Console/Commands/AssetsMeta.php @@ -22,6 +22,7 @@ public function handle() $bar = $this->output->createProgressBar($assets->count()); $assets->each(function ($asset) use ($bar) { + $asset->hydrate(); $asset->save(); $bar->advance(); }); @@ -32,6 +33,9 @@ public function handle() $this->info('Asset metadata generated'); } + /** + * @return \Statamic\Assets\AssetCollection + */ protected function getAssets() { if (! $container = $this->argument('container')) { diff --git a/tests/Console/Commands/AssetsMetaTest.php b/tests/Console/Commands/AssetsMetaTest.php new file mode 100644 index 00000000000..2824f9697cf --- /dev/null +++ b/tests/Console/Commands/AssetsMetaTest.php @@ -0,0 +1,100 @@ + [ + 'foo' => 'bar' + ], + 'size' => 6, + 'last_modified' => 1665086377, + 'width' => null, + 'height' => null, + 'mime_type' => 'text/plain', + 'duration' => null, + ]; + + public function setUp(): void + { + parent::setUp(); + + Storage::fake('test'); + } + + private function containerWithDisk() + { + config(['filesystems.disks.test' => [ + 'driver' => 'local', + 'root' => __DIR__ . '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/__fixtures__/container', + ]]); + + $container = (new AssetContainer)->handle('test')->disk('test'); + + AssetContainerFacade::partialMock() + ->shouldReceive('findByHandle') + ->andReturn($container); + + return $container; + } + + /** @test */ + public function it_generates_one_asset_meta_file_for_asset_with_no_meta_file() + { + $this->containerWithDisk(); + + Storage::disk('test')->assertMissing('foo/bar.txt'); + Storage::disk('test')->assertMissing('foo/.meta/bar.txt.yaml'); + + Storage::disk('test')->put('foo/bar.txt', 'foobar'); + + Storage::disk('test')->assertExists('foo/bar.txt'); + + Storage::disk('test')->assertMissing('foo/.meta/bar.txt.yaml'); + + $this->artisan('statamic:assets:meta test_container') + ->expectsOutput('Asset metadata generated'); + + Storage::disk('test')->assertExists('foo/bar.txt'); + Storage::disk('test')->assertExists('foo/.meta/bar.txt.yaml'); + } + + /** @test */ + public function it_preserves_data_property_in_meta_data_file() + { + $this->containerWithDisk(); + + Storage::disk('test')->put('foo/bar.txt', 'foobar'); + Storage::disk('test')->put( + 'foo/.meta/bar.txt.yaml', + YAML::dump($this->sampleTextFileContentArray) + ); + + $this->artisan('statamic:assets:meta test_container') + ->expectsOutput('Asset metadata generated'); + + $this->assertEquals( + Arr::get(YAML::parse(Storage::disk('test')->get('foo/.meta/bar.txt.yaml')), 'data.foo'), + 'bar' + ); + } +} From 27852bf8d5ca01c8d7d1498b3b022cfbfa544451 Mon Sep 17 00:00:00 2001 From: ncla Date: Mon, 10 Oct 2022 20:16:59 +0300 Subject: [PATCH 2/2] Style fixes --- tests/Console/Commands/AssetsMetaTest.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/Console/Commands/AssetsMetaTest.php b/tests/Console/Commands/AssetsMetaTest.php index 2824f9697cf..01dd46976fe 100644 --- a/tests/Console/Commands/AssetsMetaTest.php +++ b/tests/Console/Commands/AssetsMetaTest.php @@ -24,7 +24,7 @@ class AssetsMetaTest extends TestCase */ private $sampleTextFileContentArray = [ 'data' => [ - 'foo' => 'bar' + 'foo' => 'bar', ], 'size' => 6, 'last_modified' => 1665086377, @@ -45,7 +45,7 @@ private function containerWithDisk() { config(['filesystems.disks.test' => [ 'driver' => 'local', - 'root' => __DIR__ . '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/__fixtures__/container', + 'root' => __DIR__.'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/__fixtures__/container', ]]); $container = (new AssetContainer)->handle('test')->disk('test');