Skip to content

Commit 74a2081

Browse files
authored
Convert parameters to array if Synthesizers are disabled (#9)
1 parent 92989ca commit 74a2081

File tree

2 files changed

+34
-5
lines changed

2 files changed

+34
-5
lines changed

src/Tags/Livewire.php

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,10 @@ public function index()
4343
return null;
4444
}
4545

46-
return \Livewire\Livewire::mount($component, $this->params->except('key')->all(), $this->params->only('key')->first());
46+
$params = $this->params->except(['key', 'component']);
47+
$params = config()->boolean('statamic-livewire.synthesizers.enabled', false) ? $params->all() : $params->toArray();
48+
49+
return \Livewire\Livewire::mount($component, $params, $this->params->only('key')->first());
4750
}
4851

4952
/**

tests/Tags/LivewireTest.php

Lines changed: 30 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?php
22

3-
namespace MarcoRieser\Livewire\Tests\Hooks;
3+
namespace MarcoRieser\Livewire\Tests\Tags;
44

55
use Livewire\Component;
66
use Livewire\Livewire;
@@ -10,16 +10,40 @@
1010
use PHPUnit\Framework\Attributes\Test;
1111
use Statamic\Facades\Collection;
1212
use Statamic\Facades\Entry;
13+
use Statamic\Facades\Parse;
1314
use Statamic\Testing\Concerns\PreventsSavingStacheItemsToDisk;
1415

1516
class LivewireTest extends TestCase
1617
{
1718
use CanManipulateAddonConfig;
1819
use PreventsSavingStacheItemsToDisk;
1920

21+
#[Test]
22+
#[DefineEnvironment('disableSynthesizers')]
23+
public function parameters_are_converted_to_an_array_when_passed_to_a_component_if_synthesizers_are_disabled()
24+
{
25+
$component = new class extends Component
26+
{
27+
public \Statamic\Contracts\Entries\Entry $entry;
28+
29+
public function render()
30+
{
31+
return '<div></div>';
32+
}
33+
};
34+
35+
$component->setName('test');
36+
37+
$entry = Entry::find('1');
38+
39+
Livewire::expects('mount')->with('test', ['entry' => $entry->toArray()], null);
40+
41+
Parse::template('{{ livewire:test :entry="entry" /}}', ['entry' => $entry]);
42+
}
43+
2044
#[Test]
2145
#[DefineEnvironment('enableSynthesizers')]
22-
public function parameters_keep_their_type_when_passed_to_a_component()
46+
public function parameters_keep_their_type_when_passed_to_a_component_if_synthesizers_are_enabled()
2347
{
2448
$component = new class extends Component
2549
{
@@ -31,11 +55,13 @@ public function render()
3155
}
3256
};
3357

58+
$component->setName('test');
59+
3460
$entry = Entry::find('1');
3561

36-
$testable = Livewire::test($component, ['entry' => $entry]);
62+
Livewire::expects('mount')->with('test', ['entry' => $entry], null);
3763

38-
$testable->assertSetStrict('entry', $entry);
64+
Parse::template('{{ livewire:test :entry="entry" /}}', ['entry' => $entry]);
3965
}
4066

4167
protected function setUp(): void

0 commit comments

Comments
 (0)