83 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			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());
 | 
						|
    }
 | 
						|
}
 |