diff --git a/tests/BatchTest.php b/tests/BatchTest.php new file mode 100644 index 00000000..154822c1 --- /dev/null +++ b/tests/BatchTest.php @@ -0,0 +1,66 @@ +app->singleton(BatchTenancyBootstrapper::class); + + config([ + 'tenancy.bootstrappers' => [ + DatabaseTenancyBootstrapper::class, + BatchTenancyBootstrapper::class, + ], + ]); + + Event::listen(TenancyInitialized::class, BootstrapTenancy::class); + Event::listen(TenancyEnded::class, RevertToCentralContext::class); + } + + /** @test */ + public function batch_repository_is_set_to_tenant_connection_and_reverted() + { + $tenant = Tenant::create(); + + $this->assertEquals('central', $this->getBatchRepositoryConnectionName(), 'Expected initial connection to be central'); + + tenancy()->initialize($tenant); + + $this->assertEquals('tenant', $this->getBatchRepositoryConnectionName(), 'Expected tenant connection to be tenant'); + + tenancy()->end(); + + $this->assertEquals('central', $this->getBatchRepositoryConnectionName(), 'Expected the reverted connection to be central'); + } + + + private function getBatchRepositoryConnectionName(): string + { + $batchRepository = app(BatchRepository::class); + + $batchRepositoryReflection = new ReflectionClass($batchRepository); + $connectionProperty = $batchRepositoryReflection->getProperty('connection'); + $connectionProperty->setAccessible(true); + $connection = $connectionProperty->getValue($batchRepository); + + return $connection->getName(); + } + +}