Chris@0
|
1 <?php
|
Chris@0
|
2
|
Chris@0
|
3 namespace Drupal\Tests\media\Kernel;
|
Chris@0
|
4
|
Chris@0
|
5 use Drupal\file\Entity\File;
|
Chris@0
|
6 use Drupal\KernelTests\KernelTestBase;
|
Chris@0
|
7 use Drupal\media\Entity\Media;
|
Chris@0
|
8 use Drupal\media\MediaTypeInterface;
|
Chris@17
|
9 use Drupal\Tests\media\Traits\MediaTypeCreationTrait;
|
Chris@0
|
10 use Drupal\user\Entity\User;
|
Chris@0
|
11 use org\bovigo\vfs\vfsStream;
|
Chris@0
|
12
|
Chris@0
|
13 /**
|
Chris@0
|
14 * Base class for Media kernel tests.
|
Chris@0
|
15 */
|
Chris@0
|
16 abstract class MediaKernelTestBase extends KernelTestBase {
|
Chris@0
|
17
|
Chris@17
|
18 use MediaTypeCreationTrait;
|
Chris@17
|
19
|
Chris@0
|
20 /**
|
Chris@0
|
21 * Modules to install.
|
Chris@0
|
22 *
|
Chris@0
|
23 * @var array
|
Chris@0
|
24 */
|
Chris@0
|
25 public static $modules = [
|
Chris@0
|
26 'media',
|
Chris@0
|
27 'media_test_source',
|
Chris@0
|
28 'image',
|
Chris@0
|
29 'user',
|
Chris@0
|
30 'field',
|
Chris@0
|
31 'system',
|
Chris@0
|
32 'file',
|
Chris@0
|
33 ];
|
Chris@0
|
34
|
Chris@0
|
35 /**
|
Chris@0
|
36 * The test media type.
|
Chris@0
|
37 *
|
Chris@0
|
38 * @var \Drupal\media\MediaTypeInterface
|
Chris@0
|
39 */
|
Chris@0
|
40 protected $testMediaType;
|
Chris@0
|
41
|
Chris@0
|
42 /**
|
Chris@0
|
43 * The test media type with constraints.
|
Chris@0
|
44 *
|
Chris@0
|
45 * @var \Drupal\media\MediaTypeInterface
|
Chris@0
|
46 */
|
Chris@0
|
47 protected $testConstraintsMediaType;
|
Chris@0
|
48
|
Chris@0
|
49 /**
|
Chris@0
|
50 * A user.
|
Chris@0
|
51 *
|
Chris@0
|
52 * @var \Drupal\user\UserInterface
|
Chris@0
|
53 */
|
Chris@0
|
54 protected $user;
|
Chris@0
|
55
|
Chris@0
|
56 /**
|
Chris@0
|
57 * {@inheritdoc}
|
Chris@0
|
58 */
|
Chris@0
|
59 protected function setUp() {
|
Chris@0
|
60 parent::setUp();
|
Chris@0
|
61
|
Chris@0
|
62 $this->installEntitySchema('user');
|
Chris@0
|
63 $this->installEntitySchema('file');
|
Chris@0
|
64 $this->installSchema('file', 'file_usage');
|
Chris@0
|
65 $this->installSchema('system', 'sequences');
|
Chris@0
|
66 $this->installEntitySchema('media');
|
Chris@0
|
67 $this->installConfig(['field', 'system', 'image', 'file', 'media']);
|
Chris@0
|
68
|
Chris@0
|
69 // Create a test media type.
|
Chris@0
|
70 $this->testMediaType = $this->createMediaType('test');
|
Chris@0
|
71 // Create a test media type with constraints.
|
Chris@0
|
72 $this->testConstraintsMediaType = $this->createMediaType('test_constraints');
|
Chris@0
|
73
|
Chris@0
|
74 $this->user = User::create([
|
Chris@0
|
75 'name' => 'username',
|
Chris@0
|
76 'status' => 1,
|
Chris@0
|
77 ]);
|
Chris@0
|
78 $this->user->save();
|
Chris@0
|
79 $this->container->get('current_user')->setAccount($this->user);
|
Chris@0
|
80 }
|
Chris@0
|
81
|
Chris@0
|
82 /**
|
Chris@14
|
83 * Helper to generate a media item.
|
Chris@0
|
84 *
|
Chris@0
|
85 * @param string $filename
|
Chris@0
|
86 * String filename with extension.
|
Chris@0
|
87 * @param \Drupal\media\MediaTypeInterface $media_type
|
Chris@0
|
88 * The the media type.
|
Chris@0
|
89 *
|
Chris@0
|
90 * @return \Drupal\media\Entity\Media
|
Chris@14
|
91 * A media item.
|
Chris@0
|
92 */
|
Chris@0
|
93 protected function generateMedia($filename, MediaTypeInterface $media_type) {
|
Chris@0
|
94 vfsStream::setup('drupal_root');
|
Chris@0
|
95 vfsStream::create([
|
Chris@0
|
96 'sites' => [
|
Chris@0
|
97 'default' => [
|
Chris@0
|
98 'files' => [
|
Chris@0
|
99 $filename => str_repeat('a', 3000),
|
Chris@0
|
100 ],
|
Chris@0
|
101 ],
|
Chris@0
|
102 ],
|
Chris@0
|
103 ]);
|
Chris@0
|
104
|
Chris@0
|
105 $file = File::create([
|
Chris@0
|
106 'uri' => 'vfs://drupal_root/sites/default/files/' . $filename,
|
Chris@0
|
107 'uid' => $this->user->id(),
|
Chris@0
|
108 ]);
|
Chris@0
|
109 $file->setPermanent();
|
Chris@0
|
110 $file->save();
|
Chris@0
|
111
|
Chris@0
|
112 return Media::create([
|
Chris@0
|
113 'bundle' => $media_type->id(),
|
Chris@0
|
114 'name' => 'Mr. Jones',
|
Chris@0
|
115 'field_media_file' => [
|
Chris@0
|
116 'target_id' => $file->id(),
|
Chris@0
|
117 ],
|
Chris@0
|
118 ]);
|
Chris@0
|
119 }
|
Chris@0
|
120
|
Chris@0
|
121 }
|