adrema/tests/RequestFactories/EditorRequestFactory.php

83 lines
2.1 KiB
PHP

<?php
namespace Tests\RequestFactories;
use App\Lib\Editor\EditorData;
use Worksome\RequestFactories\RequestFactory;
class EditorRequestFactory extends RequestFactory
{
/**
* @return array<string, mixed>
*/
public function definition(): array
{
return [
'time' => 45069432,
'blocks' => [
['id' => 'TTzz66', 'type' => 'paragraph', 'data' => ['text' => 'lorem']]
],
'version' => '1.0',
];
}
public function empty(): self
{
return $this->state(['blocks' => []]);
}
/**
* @param array<string, mixed> $conditions
*/
public function text(int $id, string $text, array $conditions = ['mode' => 'all', 'ifs' => []]): self
{
return $this->state($this->paragraphBlock($id, $text, $conditions));
}
/**
* @param array<string, mixed> $conditions
* @return array<string, mixed>
*/
public function paragraphBlock(int $id, string $text, array $conditions = ['mode' => 'all', 'ifs' => []]): array
{
return [
'time' => 1,
'version' => '1.0',
'blocks' => [
[
'id' => $id,
'type' => 'paragraph',
'data' => ['text' => $text],
'tunes' => [
'condition' => $conditions
]
]
],
];
}
/**
* @param array<int, string> $paragraphs
*/
public function paragraphs(array $paragraphs): self
{
return $this->state([
'time' => 1,
'version' => '1.0',
'blocks' => collect($paragraphs)->map(fn ($paragraph) => [
'id' => $this->faker->numberBetween([0, 10000]),
'type' => 'paragraph',
'data' => ['text' => $paragraph],
'tunes' => [
'condition' => ['mode' => 'all', 'ifs' => []]
]
])->toArray(),
]);
}
public function toData(): EditorData
{
return EditorData::from($this->create());
}
}