mirror of
https://github.com/flextype/flextype.git
synced 2025-08-12 08:04:05 +02:00
feat(media): Add new field media.folders.fetch
and media.files.fetch
for Media Folders and Files API #501 #500
This commit is contained in:
46
tests/Foundation/Entries/Fields/MediaFieldTest.php
Normal file
46
tests/Foundation/Entries/Fields/MediaFieldTest.php
Normal file
@@ -0,0 +1,46 @@
|
||||
<?php
|
||||
|
||||
use Flextype\Component\Filesystem\Filesystem;
|
||||
|
||||
beforeEach(function() {
|
||||
filesystem()->directory(PATH['project'] . '/entries')->create();
|
||||
filesystem()->directory(PATH['project'] . '/uploads')->create(0755, true);
|
||||
filesystem()->directory(PATH['project'] . '/uploads/.meta')->create(0755, true);
|
||||
filesystem()->directory(PATH['project'] . '/uploads/foo')->create(0755, true);
|
||||
filesystem()->directory(PATH['project'] . '/uploads/.meta/foo')->create(0755, true);
|
||||
});
|
||||
|
||||
afterEach(function (): void {
|
||||
filesystem()->directory(PATH['project'] . '/uploads/.meta')->delete();
|
||||
filesystem()->directory(PATH['project'] . '/uploads')->delete();
|
||||
filesystem()->directory(PATH['project'] . '/entries')->delete();
|
||||
});
|
||||
|
||||
test('test media_files field', function () {
|
||||
|
||||
filesystem()->file(PATH['project'] . '/uploads/foo.txt')->put('foo');
|
||||
filesystem()->file(PATH['project'] . '/uploads/.meta/foo.txt.yaml')->put(flextype('yaml')->encode(['title' => 'Foo', 'description' => '', 'type' => 'text/plain', 'filesize' => 3, 'uploaded_on' => 1603090370, 'exif' => []]));
|
||||
filesystem()->file(PATH['project'] . '/uploads/bar.txt')->put('foo');
|
||||
filesystem()->file(PATH['project'] . '/uploads/.meta/bar.txt.yaml')->put(flextype('yaml')->encode(['title' => 'Bar', 'description' => '', 'type' => 'text/plain', 'filesize' => 3, 'uploaded_on' => 1603090370, 'exif' => []]));
|
||||
|
||||
flextype('entries')->create('media', flextype('frontmatter')->decode(filesystem()->file(ROOT_DIR . '/tests/Foundation/Entries/Fields/fixtures/entries/media/entry.md')->get()));
|
||||
|
||||
flextype('media_files')::macro('fetchExtraData', function ($id, $options) {
|
||||
return ['id' => $id, 'options' => $options];
|
||||
});
|
||||
|
||||
flextype('media_folders')::macro('fetchExtraData', function ($id, $options) {
|
||||
return ['id' => $id, 'options' => $options];
|
||||
});
|
||||
|
||||
$media = flextype('entries')->fetch('media');
|
||||
|
||||
$this->assertEquals('Media', $media['title']);
|
||||
$this->assertEquals('foo', $media['macroable_file']['id']);
|
||||
$this->assertEquals('foo.txt', $media['foo_file']['filename']);
|
||||
$this->assertEquals(2, $media['collection_of_files']->count());
|
||||
|
||||
$this->assertEquals('foo', $media['macroable_folder']['id']);
|
||||
$this->assertEquals(4, $media['foo_folder']->count());
|
||||
$this->assertEquals(1, $media['collection_of_folders']->count());
|
||||
});
|
@@ -0,0 +1,28 @@
|
||||
---
|
||||
title: Media
|
||||
media:
|
||||
folders:
|
||||
fetch:
|
||||
macroable_folder:
|
||||
id: 'foo'
|
||||
method: fetchExtraData
|
||||
options: []
|
||||
foo_folder:
|
||||
id: 'foo'
|
||||
collection_of_folders:
|
||||
id: '/'
|
||||
options:
|
||||
collection: true
|
||||
files:
|
||||
fetch:
|
||||
macroable_file:
|
||||
id: 'foo'
|
||||
method: fetchExtraData
|
||||
options: []
|
||||
foo_file:
|
||||
id: foo.txt
|
||||
collection_of_files:
|
||||
id: '/'
|
||||
options:
|
||||
collection: true
|
||||
---
|
Reference in New Issue
Block a user