42 lines
1.7 KiB
PHP
42 lines
1.7 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
use App\Models\Deal;
|
|
use App\Models\Project;
|
|
use App\Models\Tenant;
|
|
use App\Models\User;
|
|
use Illuminate\Foundation\Testing\RefreshDatabase;
|
|
|
|
uses(RefreshDatabase::class);
|
|
|
|
it('заводит демо-клиента с красивыми данными и выдуманными телефонами', function () {
|
|
$this->artisan('demo:showcase')->assertExitCode(0);
|
|
|
|
$tenant = Tenant::query()->where('organization_name', 'Стоматология Улыбка')->first();
|
|
expect($tenant)->not->toBeNull();
|
|
|
|
expect(User::query()->where('tenant_id', $tenant->id)->where('email', 'demo@liderra.ru')->exists())->toBeTrue();
|
|
expect(Project::query()->where('tenant_id', $tenant->id)->count())->toBe(3);
|
|
expect(Deal::query()->where('tenant_id', $tenant->id)->count())->toBe(25);
|
|
|
|
foreach (Deal::query()->where('tenant_id', $tenant->id)->pluck('phone') as $phone) {
|
|
expect($phone)->toStartWith('7999000'); // 🔴 ПДн: несуществующий диапазон
|
|
}
|
|
});
|
|
|
|
it('не запускается на боевом окружении', function () {
|
|
config(['app.env' => 'production']);
|
|
|
|
$this->artisan('demo:showcase')->assertExitCode(1);
|
|
});
|
|
|
|
it('запускается дважды без ошибок (данные не дублируются)', function () {
|
|
$this->artisan('demo:showcase')->assertExitCode(0);
|
|
$this->artisan('demo:showcase')->assertExitCode(0);
|
|
|
|
$tenant = Tenant::query()->where('organization_name', 'Стоматология Улыбка')->first();
|
|
expect(Project::query()->where('tenant_id', $tenant->id)->count())->toBe(3)
|
|
->and(Deal::query()->where('tenant_id', $tenant->id)->count())->toBe(25);
|
|
});
|