-
-
Notifications
You must be signed in to change notification settings - Fork 80
/
EntriesFieldTest.php
107 lines (80 loc) · 5.82 KB
/
EntriesFieldTest.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
<?php
use Flextype\Component\Filesystem\Filesystem;
beforeEach(function() {
filesystem()->directory(PATH['project'] . '/entries')->create();
});
afterEach(function (): void {
filesystem()->directory(PATH['project'] . '/entries')->delete();
});
test('test entries field for blog', function () {
entries()->create('blog', serializers()->yaml()->decode(filesystem()->file(ROOT_DIR . '/tests/fixtures/entries/blog/entry.yaml')->get()));
entries()->create('blog/post-1', serializers()->yaml()->decode(filesystem()->file(ROOT_DIR . '/tests/fixtures/entries/blog/post-1/entry.yaml')->get()));
entries()->create('blog/post-2', serializers()->yaml()->decode(filesystem()->file(ROOT_DIR . '/tests/fixtures/entries/blog/post-2/entry.yaml')->get()));
$blog = entries()->fetch('blog');
$this->assertEquals(13, $blog->count());
});
test('test entries field for catalog', function () {
// Create catalog
entries()->create('catalog', serializers()->yaml()->decode(filesystem()->file(ROOT_DIR . '/tests/fixtures/entries/catalog/entry.yaml')->get()));
entries()->create('catalog/bikes', serializers()->yaml()->decode(filesystem()->file(ROOT_DIR . '/tests/fixtures/entries/catalog/bikes/entry.yaml')->get()));
entries()->create('catalog/bikes/gt', serializers()->yaml()->decode(filesystem()->file(ROOT_DIR . '/tests/fixtures/entries/catalog/bikes/gt/entry.yaml')->get()));
entries()->create('catalog/bikes/norco', serializers()->yaml()->decode(filesystem()->file(ROOT_DIR . '/tests/fixtures/entries/catalog/bikes/norco/entry.yaml')->get()));
entries()->create('catalog/bikes/foo', ['title' => 'foo']);
entries()->create('catalog/bikes/foo/bar', ['title' => 'bar']);
// Create discounts
entries()->create('discounts', ['title' => 'Discounts']);
entries()->create('discounts/30-off', ['title' => '30% off', 'category' => 'bikes']);
entries()->create('discounts/50-off', ['title' => '50% off', 'category' => 'bikes']);
// Create banner
entries()->create('banner', ['title' => 'Banner']);
$catalogSingle = entries()->fetch('catalog');
$this->assertEquals(15, $catalogSingle->count());
$this->assertEquals('Catalog', $catalogSingle['title']);
$this->assertEquals('catalog', $catalogSingle['id']);
$this->assertEquals(1, $catalogSingle['bikes']->count());
$this->assertTrue(isset($catalogSingle['bikes']['catalog/bikes/gt']));
$this->assertEquals('GT', $catalogSingle['bikes']['catalog/bikes/gt']['title']);
$this->assertEquals(1, $catalogSingle['discounts']->count());
$this->assertTrue(isset($catalogSingle['discounts']['discounts/30-off']));
$this->assertEquals('30% off', $catalogSingle['discounts']['discounts/30-off']['title']);
$catalogCollection = entries()->fetch('catalog', ['collection' => true]);
$this->assertEquals(1, $catalogCollection->count());
$this->assertEquals('Bikes', $catalogCollection['catalog/bikes']['title']);
$this->assertEquals('catalog/bikes', $catalogCollection['catalog/bikes']['id']);
$catalogLongCollecion = entries()->fetch('catalog', ['collection' => true, 'find' => ['depth' => ['>0', '<4']]]);
$this->assertEquals(5, $catalogLongCollecion->count());
$banner = entries()->fetch('banner');
$this->assertEquals('Banner', $banner['title']);
$this->assertEquals('banner', $banner['id']);
});
test('test entries field for albmus', function () {
entries()->create('root', serializers()->yaml()->decode(filesystem()->file(ROOT_DIR . '/tests/fixtures/entries/root/entry.yaml')->get()));
entries()->create('albums', serializers()->yaml()->decode(filesystem()->file(ROOT_DIR . '/tests/fixtures/entries/root/albums/entry.yaml')->get()));
entries()->create('albums/category-1', serializers()->yaml()->decode(filesystem()->file(ROOT_DIR . '/tests/fixtures/entries/root/albums/category-1/entry.yaml')->get()));
entries()->create('albums/category-1/album-1', serializers()->yaml()->decode(filesystem()->file(ROOT_DIR . '/tests/fixtures/entries/root/albums/category-1/album-1/entry.yaml')->get()));
entries()->create('banners', ['title' => 'Banners']);
entries()->create('banners/1', ['title' => 'Banner1']);
entries()->create('banners/2', ['title' => 'Banner2']);
$root = entries()->fetch('root');
$this->assertEquals(15, $root->count());
});
test('test entries field for long nested entries', function () {
entries()->create('level1', serializers()->yaml()->decode(filesystem()->file(ROOT_DIR . '/tests/fixtures/entries/level1/entry.yaml')->get()));
entries()->create('level1/level2', serializers()->yaml()->decode(filesystem()->file(ROOT_DIR . '/tests/fixtures/entries/level1/level2/entry.yaml')->get()));
entries()->create('level1/level2/level3', serializers()->yaml()->decode(filesystem()->file(ROOT_DIR . '/tests/fixtures/entries/level1/level2/level3/entry.yaml')->get()));
entries()->create('level1/level2/level3/level4', serializers()->yaml()->decode(filesystem()->file(ROOT_DIR . '/tests/fixtures/entries/level1/level2/level3/level4/entry.yaml')->get()));
$level = entries()->fetch('level1');
$this->assertEquals(13, $level->count());
$this->assertEquals('level1/level2', $level['root']['id']);
$this->assertEquals('level1/level2/level3', $level['root']['root']['id']);
$this->assertEquals('level1/level2/level3/level4', $level['root']['root']['root']['id']);
});
test('test entries field for macroable fetch entries', function () {
entries()->create('macroable', serializers()->yaml()->decode(filesystem()->file(ROOT_DIR . '/tests/fixtures/entries/macroable/entry.yaml')->get()));
entries()::macro('fetchExtraData', function ($id, $options) {
return ['id' => $id, 'options' => $options];
});
$macroable = entries()->fetch('macroable');
$this->assertEquals('table', $macroable['table']['id']);
$this->assertEquals('world', $macroable['table']['options']['hello']);
});