mirror of
https://github.com/snipe/snipe-it.git
synced 2024-12-24 05:04:07 -08:00
Merge pull request #14797 from bryanlopezinc/AddTestsForSettings
Added test for setup page
This commit is contained in:
commit
45cfec5b29
141
tests/Feature/Settings/ShowSetUpPageTest.php
Normal file
141
tests/Feature/Settings/ShowSetUpPageTest.php
Normal file
|
@ -0,0 +1,141 @@
|
|||
<?php
|
||||
|
||||
namespace Tests\Feature\Settings;
|
||||
|
||||
use Illuminate\Database\Events\QueryExecuted;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Support\Facades\Event;
|
||||
use Illuminate\Testing\TestResponse;
|
||||
use PDOException;
|
||||
use Tests\TestCase;
|
||||
|
||||
class ShowSetUpPageTest extends TestCase
|
||||
{
|
||||
protected function setUp(): void
|
||||
{
|
||||
parent::setUp();
|
||||
|
||||
$_SERVER['REQUEST_URI'] = '/setup';
|
||||
}
|
||||
|
||||
protected function getSetUpPageResponse(): TestResponse
|
||||
{
|
||||
return $this->get('/setup');
|
||||
}
|
||||
|
||||
public function testView(): void
|
||||
{
|
||||
$this->getSetUpPageResponse()->assertOk()->assertViewIs('setup.index');
|
||||
}
|
||||
|
||||
public function testWillShowErrorMessageWhenDatabaseConnectionCannotBeEstablished(): void
|
||||
{
|
||||
Event::listen(function (QueryExecuted $query) {
|
||||
if ($query->sql === 'select 2 + 2') {
|
||||
throw new PDOException("SQLSTATE[HY000] [1045] Access denied for user ''@'localhost' (using password: NO)");
|
||||
}
|
||||
});
|
||||
|
||||
$this->getSetUpPageResponse()->assertOk();
|
||||
|
||||
$this->assertSeeDatabaseConnectionErrorMessage();
|
||||
}
|
||||
|
||||
protected function assertSeeDatabaseConnectionErrorMessage(bool $shouldSee = true): void
|
||||
{
|
||||
$errorMessage = "D'oh! Looks like we can't connect to your database. Please update your database settings in your <code>.env</code> file.";
|
||||
$successMessage = sprintf('Great work! Connected to <code>%s</code>', DB::connection()->getDatabaseName());
|
||||
|
||||
if ($shouldSee) {
|
||||
self::$latestResponse->assertSee($errorMessage, false)->assertDontSee($successMessage, false);
|
||||
return;
|
||||
}
|
||||
|
||||
self::$latestResponse->assertSee($successMessage, false)->assertDontSee($errorMessage, false);
|
||||
}
|
||||
|
||||
public function testWillNotShowErrorMessageWhenDatabaseIsConnected(): void
|
||||
{
|
||||
$this->getSetUpPageResponse()->assertOk();
|
||||
|
||||
$this->assertSeeDatabaseConnectionErrorMessage(false);
|
||||
}
|
||||
|
||||
public function testWillShowErrorMessageWhenDebugModeIsEnabledAndAppEnvironmentIsSetToProduction(): void
|
||||
{
|
||||
config(['app.debug' => true]);
|
||||
|
||||
$this->app->bind('env', fn () => 'production');
|
||||
|
||||
$this->getSetUpPageResponse()->assertOk();
|
||||
|
||||
$this->assertSeeDebugModeMisconfigurationErrorMessage();
|
||||
}
|
||||
|
||||
protected function assertSeeDebugModeMisconfigurationErrorMessage(bool $shouldSee = true): void
|
||||
{
|
||||
$errorMessage = 'Yikes! You should turn off debug mode unless you encounter any issues. Please update your <code>APP_DEBUG</code> settings in your <code>.env</code> file';
|
||||
$successMessage = "Awesomesauce. Debug is either turned off, or you're running this in a non-production environment. (Don't forget to turn it off when you're ready to go live.)";
|
||||
|
||||
if ($shouldSee) {
|
||||
self::$latestResponse->assertSee($errorMessage, false)->assertDontSee($successMessage, false);
|
||||
return;
|
||||
}
|
||||
|
||||
self::$latestResponse->assertSee($successMessage, false)->assertDontSee($errorMessage, false);
|
||||
}
|
||||
|
||||
public function testWillNotShowErrorWhenDebugModeIsEnabledAndAppEnvironmentIsSetToLocal(): void
|
||||
{
|
||||
config(['app.debug' => true]);
|
||||
|
||||
$this->app->bind('env', fn () => 'local');
|
||||
|
||||
$this->getSetUpPageResponse()->assertOk();
|
||||
|
||||
$this->assertSeeDebugModeMisconfigurationErrorMessage(false);
|
||||
}
|
||||
|
||||
public function testWillNotShowErrorWhenDebugModeIsDisabledAndAppEnvironmentIsSetToProduction(): void
|
||||
{
|
||||
config(['app.debug' => false]);
|
||||
|
||||
$this->app->bind('env', fn () => 'production');
|
||||
|
||||
$this->getSetUpPageResponse()->assertOk();
|
||||
|
||||
$this->assertSeeDebugModeMisconfigurationErrorMessage(false);
|
||||
}
|
||||
|
||||
public function testWillShowErrorWhenEnvironmentIsLocal(): void
|
||||
{
|
||||
$this->app->bind('env', fn () => 'local');
|
||||
|
||||
$this->getSetUpPageResponse()->assertOk();
|
||||
|
||||
$this->assertSeeEnvironmentMisconfigurationErrorMessage();
|
||||
}
|
||||
|
||||
protected function assertSeeEnvironmentMisconfigurationErrorMessage(bool $shouldSee = true): void
|
||||
{
|
||||
$errorMessage = 'Your app is set <code>local</code> instead of <code>production</code> mode.';
|
||||
$successMessage = 'Your app is set to production mode. Rock on!';
|
||||
|
||||
if ($shouldSee) {
|
||||
self::$latestResponse->assertSee($errorMessage, false)->assertDontSee($successMessage, false);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
self::$latestResponse->assertSee($successMessage, false)->assertDontSee($errorMessage, false);
|
||||
}
|
||||
|
||||
public function testWillNotShowErrorWhenEnvironmentIsProduction(): void
|
||||
{
|
||||
$this->app->bind('env', fn () => 'production');
|
||||
|
||||
$this->getSetUpPageResponse()->assertOk();
|
||||
|
||||
$this->assertSeeEnvironmentMisconfigurationErrorMessage(false);
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue