Skip to content

Commit 083f39e

Browse files
author
vagrant
committed
fix: resolve Livewire 4 DataStore singleton issue in tests
Root cause: Orchestra Testbench resolves DataStore before LivewireServiceProvider registers its singleton instance, so app(DataStore::class) returns different instances on each call. The WeakMap in one instance can't see data stored in another. Fix: ensure DataStore is registered as a singleton in TestCase setUp. Also re-enable resource tests (skipped in previous commit). Remaining test failures are Filament 5 API migration issues (action class renames, assertion changes) - separate task.
1 parent 00f8f80 commit 083f39e

3 files changed

Lines changed: 10 additions & 2 deletions

File tree

tests/EmailTemplateThemeResourceTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
use Visualbuilder\EmailTemplates\Resources\EmailTemplateThemeResource\Pages\ListEmailTemplateThemes;
1212

1313
beforeEach(function () {
14-
$this->markTestSkipped('Livewire 4 ViewErrorBag::put() bug - SupportValidation passes null MessageBag during render');
14+
//
1515
});
1616

1717
// listing tests

tests/ResourcesTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
use Visualbuilder\EmailTemplates\Resources\EmailTemplateResource\Pages\ListEmailTemplates;
1717

1818
beforeEach(function () {
19-
$this->markTestSkipped('Livewire 4 ViewErrorBag::put() bug - SupportValidation passes null MessageBag during render');
19+
//
2020
});
2121

2222
// listing tests

tests/TestCase.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,13 @@
1313
use Filament\Schemas\SchemasServiceProvider;
1414
use Filament\Tables\TablesServiceProvider;
1515
use Filament\Widgets\WidgetsServiceProvider;
16+
use Filament\Facades\Filament;
1617
use Illuminate\Foundation\Testing\RefreshDatabase;
1718
use Illuminate\Support\Facades\Config;
1819
use Illuminate\Support\Facades\View;
1920
use Illuminate\Support\ViewErrorBag;
2021
use Livewire\LivewireServiceProvider;
22+
use Livewire\Mechanisms\DataStore;
2123
use Orchestra\Testbench\TestCase as Orchestra;
2224
use RyanChandler\BladeCaptureDirective\BladeCaptureDirectiveServiceProvider;
2325
use Visualbuilder\EmailTemplates\EmailTemplatesServiceProvider;
@@ -42,6 +44,12 @@ protected function setUp(): void
4244
Config::set('auth.providers.users.model', User::class);
4345
View::addNamespace('vb-email-templates', __DIR__.'/../resources/views');
4446
View::share('errors', new ViewErrorBag);
47+
48+
// Ensure Livewire DataStore is a singleton - Orchestra Testbench can
49+
// resolve it before LivewireServiceProvider registers its instance
50+
if (! app()->bound(DataStore::class) || app(DataStore::class) !== app(DataStore::class)) {
51+
app()->singleton(DataStore::class);
52+
}
4553
}
4654

4755
protected function getPackageProviders($app): array

0 commit comments

Comments
 (0)