From d83cd1ddb482aa99c4d08d9d75c6a65a0b6bd20b Mon Sep 17 00:00:00 2001 From: lukinovec Date: Thu, 24 Nov 2022 13:22:26 +0100 Subject: [PATCH] Move MailManager extension to MailTenancyBootstrapper --- src/Bootstrappers/MailTenancyBootstrapper.php | 13 +++++++++++-- src/TenancyServiceProvider.php | 6 ------ tests/MailTest.php | 2 ++ 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/src/Bootstrappers/MailTenancyBootstrapper.php b/src/Bootstrappers/MailTenancyBootstrapper.php index 7defe1ab..a3d7decb 100644 --- a/src/Bootstrappers/MailTenancyBootstrapper.php +++ b/src/Bootstrappers/MailTenancyBootstrapper.php @@ -4,9 +4,12 @@ declare(strict_types=1); namespace Stancl\Tenancy\Bootstrappers; +use Illuminate\Mail\MailManager; use Illuminate\Config\Repository; -use Stancl\Tenancy\Contracts\TenancyBootstrapper; use Stancl\Tenancy\Contracts\Tenant; +use Illuminate\Foundation\Application; +use Stancl\Tenancy\TenancyMailManager; +use Stancl\Tenancy\Contracts\TenancyBootstrapper; class MailTenancyBootstrapper implements TenancyBootstrapper { @@ -33,7 +36,7 @@ class MailTenancyBootstrapper implements TenancyBootstrapper ], ]; - public function __construct(protected Repository $config) + public function __construct(protected Repository $config, protected Application $app) { static::$mailer ??= $config->get('mail.default'); static::$credentialsMap = array_merge(static::$credentialsMap, static::$mapPresets[static::$mailer] ?? []); @@ -41,6 +44,12 @@ class MailTenancyBootstrapper implements TenancyBootstrapper public function bootstrap(Tenant $tenant): void { + // Use custom mail manager that resolves the mailers specified in its $tenantMailers static property + // Instead of getting the cached mailers from the $mailers property + $this->app->extend(MailManager::class, function (MailManager $mailManager) { + return new TenancyMailManager($this->app); + }); + $this->setConfig($tenant); } diff --git a/src/TenancyServiceProvider.php b/src/TenancyServiceProvider.php index e81446d3..ba6060fb 100644 --- a/src/TenancyServiceProvider.php +++ b/src/TenancyServiceProvider.php @@ -70,12 +70,6 @@ class TenancyServiceProvider extends ServiceProvider return new Commands\Seed($app['db']); }); - // Use custom mail manager that resolves the mailers specified in its $tenantMailers static property - // Instead of getting the cached mailers from the $mailers property - $this->app->extend(MailManager::class, function (MailManager $mailManager) { - return new TenancyMailManager($this->app); - }); - $this->app->bind('globalCache', function ($app) { return new CacheManager($app); }); diff --git a/tests/MailTest.php b/tests/MailTest.php index c683b2b7..755be4db 100644 --- a/tests/MailTest.php +++ b/tests/MailTest.php @@ -19,6 +19,8 @@ beforeEach(function() { }); test('tenancy swaps the MailManager singleton for an instance of TenancyMailManager', function() { + tenancy()->initialize(Tenant::create()); + expect(app(MailManager::class))->toBeInstanceOf(TenancyMailManager::class); });