Skip to content
This repository has been archived by the owner on Nov 15, 2023. It is now read-only.

Commit

Permalink
Integration with Livewire added
Browse files Browse the repository at this point in the history
  • Loading branch information
tarampampam committed Nov 12, 2021
1 parent 35a73dc commit 1f1635e
Show file tree
Hide file tree
Showing 5 changed files with 96 additions and 3 deletions.
6 changes: 4 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,11 @@ The format is based on [Keep a Changelog][keepachangelog] and this project adher

### Added

- Listener `FlushTranslatorCacheListener` for memory leak fixing on `Translator` implementation [#69]
- Listener `FlushTranslatorCacheListener` for memory leak fixing on `Translator` implementation [#70]
- Integration with [Livewire](https://github.com/livewire/livewire) is supported now [#71]

[#69]:https://github.com/spiral/roadrunner-laravel/pull/69
[#70]:https://github.com/spiral/roadrunner-laravel/pull/70
[#71]:https://github.com/spiral/roadrunner-laravel/pull/71

## v5.4.0

Expand Down
3 changes: 2 additions & 1 deletion composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,8 @@
"laravel/telescope": "^4.5",
"mockery/mockery": "^1.3.2",
"phpstan/phpstan": "~0.12.80",
"phpunit/phpunit": "^8.0 || ^9.3"
"phpunit/phpunit": "^8.0 || ^9.3",
"livewire/livewire": "^2.7"
},
"autoload": {
"psr-4": {
Expand Down
1 change: 1 addition & 0 deletions src/Defaults.php
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ public static function beforeLoopIteration(): array
Listeners\ResetLaravelSocialiteListener::class, // for <https://github.com/laravel/socialite>
Listeners\ResetInertiaListener::class, // for <https://github.com/inertiajs/inertia-laravel>
Listeners\ResetZiggyListener::class, // for <https://github.com/tighten/ziggy>
Listeners\ResetLivewireListener::class, // for <https://github.com/livewire/livewire>
];
}

Expand Down
39 changes: 39 additions & 0 deletions src/Listeners/ResetLivewireListener.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
<?php

declare(strict_types=1);

namespace Spiral\RoadRunnerLaravel\Listeners;

use Livewire\LivewireManager;
use Spiral\RoadRunnerLaravel\Events\Contracts\WithApplication;

/**
* Target package: <https://github.com/livewire/livewire>.
*/
class ResetLivewireListener implements ListenerInterface
{
/**
* {@inheritdoc}
*/
public function handle($event): void
{
if (!\class_exists(LivewireManager::class)) {
return;
}

if ($event instanceof WithApplication) {
$app = $event->application();

if (!$app->resolved($manager_abstract = LivewireManager::class)) {
return;
}

/** @var LivewireManager $manager */
$manager = $app->make($manager_abstract);

if (\method_exists($manager, 'flushState')) {
$manager->flushState();
}
}
}
}
50 changes: 50 additions & 0 deletions tests/Unit/Listeners/ResetLivewireListenerTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
<?php

declare(strict_types=1);

namespace Spiral\RoadRunnerLaravel\Tests\Unit\Listeners;

use Mockery as m;
use Livewire\LivewireManager;
use Spiral\RoadRunnerLaravel\Listeners\ResetLivewireListener;
use Spiral\RoadRunnerLaravel\Events\Contracts\WithApplication;

/**
* @covers \Spiral\RoadRunnerLaravel\Listeners\ResetLivewireListener
*/
class ResetLivewireListenerTest extends AbstractListenerTestCase
{
/**
* {@inheritdoc}
*/
public function testHandle(): void
{
/** @var LivewireManager $manager */
$manager = $this->app->make($manager_abstract = LivewireManager::class);

$manager_mock = m::mock($manager)
->makePartial()
->expects('flushState')
->withNoArgs()
->getMock();

$this->app->instance($manager_abstract, $manager_mock);

/** @var m\MockInterface|WithApplication $event_mock */
$event_mock = m::mock(WithApplication::class)
->makePartial()
->expects('application')
->andReturn($this->app)
->getMock();

$this->listenerFactory()->handle($event_mock);
}

/**
* @return ResetLivewireListener
*/
protected function listenerFactory(): ResetLivewireListener
{
return new ResetLivewireListener();
}
}

0 comments on commit 1f1635e

Please sign in to comment.