mirror of
https://github.com/snipe/snipe-it.git
synced 2025-02-21 03:15:45 -08:00
Introduce improved way to interact with settings in tests
This commit is contained in:
parent
383d48fd9c
commit
f767cc082f
|
@ -17,5 +17,6 @@ class SettingObserver
|
||||||
public function saved(Setting $setting)
|
public function saved(Setting $setting)
|
||||||
{
|
{
|
||||||
Cache::forget(Setting::SETUP_CHECK_KEY);
|
Cache::forget(Setting::SETUP_CHECK_KEY);
|
||||||
|
Setting::$_cache = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -34,13 +34,4 @@ class SettingFactory extends Factory
|
||||||
'email_domain' => 'test.com',
|
'email_domain' => 'test.com',
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
public function withMultipleFullCompanySupport()
|
|
||||||
{
|
|
||||||
return $this->state(function () {
|
|
||||||
return [
|
|
||||||
'full_multiple_companies_support' => 1,
|
|
||||||
];
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,7 +3,6 @@
|
||||||
namespace Tests\Feature\Api\Assets;
|
namespace Tests\Feature\Api\Assets;
|
||||||
|
|
||||||
use App\Models\Asset;
|
use App\Models\Asset;
|
||||||
use App\Models\Setting;
|
|
||||||
use App\Models\User;
|
use App\Models\User;
|
||||||
use Illuminate\Testing\Fluent\AssertableJson;
|
use Illuminate\Testing\Fluent\AssertableJson;
|
||||||
use Laravel\Passport\Passport;
|
use Laravel\Passport\Passport;
|
||||||
|
@ -13,8 +12,6 @@ class AssetIndexTest extends TestCase
|
||||||
{
|
{
|
||||||
public function testAssetIndexReturnsExpectedAssets()
|
public function testAssetIndexReturnsExpectedAssets()
|
||||||
{
|
{
|
||||||
Setting::factory()->create();
|
|
||||||
|
|
||||||
Asset::factory()->count(3)->create();
|
Asset::factory()->count(3)->create();
|
||||||
|
|
||||||
Passport::actingAs(User::factory()->superuser()->create());
|
Passport::actingAs(User::factory()->superuser()->create());
|
||||||
|
|
|
@ -3,7 +3,6 @@
|
||||||
namespace Tests\Feature\Api\Users;
|
namespace Tests\Feature\Api\Users;
|
||||||
|
|
||||||
use App\Models\Company;
|
use App\Models\Company;
|
||||||
use App\Models\Setting;
|
|
||||||
use App\Models\User;
|
use App\Models\User;
|
||||||
use Illuminate\Testing\Fluent\AssertableJson;
|
use Illuminate\Testing\Fluent\AssertableJson;
|
||||||
use Laravel\Passport\Passport;
|
use Laravel\Passport\Passport;
|
||||||
|
@ -13,8 +12,6 @@ class UsersForSelectListTest extends TestCase
|
||||||
{
|
{
|
||||||
public function testUsersAreReturned()
|
public function testUsersAreReturned()
|
||||||
{
|
{
|
||||||
Setting::factory()->create();
|
|
||||||
|
|
||||||
$users = User::factory()->superuser()->count(3)->create();
|
$users = User::factory()->superuser()->count(3)->create();
|
||||||
|
|
||||||
Passport::actingAs($users->first());
|
Passport::actingAs($users->first());
|
||||||
|
@ -32,7 +29,7 @@ class UsersForSelectListTest extends TestCase
|
||||||
|
|
||||||
public function testUsersScopedToCompanyWhenMultipleFullCompanySupportEnabled()
|
public function testUsersScopedToCompanyWhenMultipleFullCompanySupportEnabled()
|
||||||
{
|
{
|
||||||
Setting::factory()->withMultipleFullCompanySupport()->create();
|
$this->settings->enableMultipleFullCompanySupport();
|
||||||
|
|
||||||
$jedi = Company::factory()->has(User::factory()->count(3)->sequence(
|
$jedi = Company::factory()->has(User::factory()->count(3)->sequence(
|
||||||
['first_name' => 'Luke', 'last_name' => 'Skywalker', 'username' => 'lskywalker'],
|
['first_name' => 'Luke', 'last_name' => 'Skywalker', 'username' => 'lskywalker'],
|
||||||
|
@ -60,7 +57,7 @@ class UsersForSelectListTest extends TestCase
|
||||||
|
|
||||||
public function testUsersScopedToCompanyDuringSearchWhenMultipleFullCompanySupportEnabled()
|
public function testUsersScopedToCompanyDuringSearchWhenMultipleFullCompanySupportEnabled()
|
||||||
{
|
{
|
||||||
Setting::factory()->withMultipleFullCompanySupport()->create();
|
$this->settings->enableMultipleFullCompanySupport();
|
||||||
|
|
||||||
$jedi = Company::factory()->has(User::factory()->count(3)->sequence(
|
$jedi = Company::factory()->has(User::factory()->count(3)->sequence(
|
||||||
['first_name' => 'Luke', 'last_name' => 'Skywalker', 'username' => 'lskywalker'],
|
['first_name' => 'Luke', 'last_name' => 'Skywalker', 'username' => 'lskywalker'],
|
||||||
|
|
30
tests/Support/Settings.php
Normal file
30
tests/Support/Settings.php
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Tests\Support;
|
||||||
|
|
||||||
|
use App\Models\Setting;
|
||||||
|
|
||||||
|
class Settings
|
||||||
|
{
|
||||||
|
private Setting $setting;
|
||||||
|
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
$this->setting = Setting::factory()->create();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function enableMultipleFullCompanySupport()
|
||||||
|
{
|
||||||
|
$this->update(['full_multiple_companies_support' => 1]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function disableMultipleFullCompanySupport()
|
||||||
|
{
|
||||||
|
$this->update(['full_multiple_companies_support' => 0]);
|
||||||
|
}
|
||||||
|
|
||||||
|
private function update(array $attributes)
|
||||||
|
{
|
||||||
|
Setting::unguarded(fn() => $this->setting->update($attributes));
|
||||||
|
}
|
||||||
|
}
|
|
@ -3,15 +3,17 @@
|
||||||
namespace Tests;
|
namespace Tests;
|
||||||
|
|
||||||
use App\Http\Middleware\SecurityHeaders;
|
use App\Http\Middleware\SecurityHeaders;
|
||||||
use App\Models\Setting;
|
|
||||||
use Illuminate\Foundation\Testing\LazilyRefreshDatabase;
|
use Illuminate\Foundation\Testing\LazilyRefreshDatabase;
|
||||||
use Illuminate\Foundation\Testing\TestCase as BaseTestCase;
|
use Illuminate\Foundation\Testing\TestCase as BaseTestCase;
|
||||||
|
use Tests\Support\Settings;
|
||||||
|
|
||||||
abstract class TestCase extends BaseTestCase
|
abstract class TestCase extends BaseTestCase
|
||||||
{
|
{
|
||||||
use CreatesApplication;
|
use CreatesApplication;
|
||||||
use LazilyRefreshDatabase;
|
use LazilyRefreshDatabase;
|
||||||
|
|
||||||
|
protected Settings $settings;
|
||||||
|
|
||||||
private array $globallyDisabledMiddleware = [
|
private array $globallyDisabledMiddleware = [
|
||||||
SecurityHeaders::class,
|
SecurityHeaders::class,
|
||||||
];
|
];
|
||||||
|
@ -20,8 +22,8 @@ abstract class TestCase extends BaseTestCase
|
||||||
{
|
{
|
||||||
parent::setUp();
|
parent::setUp();
|
||||||
|
|
||||||
$this->beforeApplicationDestroyed(fn() => Setting::$_cache = null);
|
|
||||||
|
|
||||||
$this->withoutMiddleware($this->globallyDisabledMiddleware);
|
$this->withoutMiddleware($this->globallyDisabledMiddleware);
|
||||||
|
|
||||||
|
$this->settings = new Settings();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue