53 lines
1.9 KiB
PHP
53 lines
1.9 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
use App\Actions\Workspace\CreateWorkspace;
|
|
use App\Models\Account;
|
|
use App\Models\User;
|
|
|
|
test('CreateWorkspace persists name and brand fields', function () {
|
|
$account = Account::factory()->create();
|
|
$user = User::factory()->create(['account_id' => $account->id]);
|
|
|
|
$workspace = CreateWorkspace::execute($user, [
|
|
'name' => 'Acme Inc',
|
|
'brand_website' => 'https://acme.example',
|
|
'brand_description' => 'We sell rockets.',
|
|
'brand_tone' => 'professional',
|
|
'brand_voice_notes' => 'short, punchy.',
|
|
'content_language' => 'en',
|
|
]);
|
|
|
|
expect($workspace->name)->toBe('Acme Inc');
|
|
expect($workspace->brand_website)->toBe('https://acme.example');
|
|
expect($workspace->brand_description)->toBe('We sell rockets.');
|
|
expect($workspace->brand_tone)->toBe('professional');
|
|
expect($workspace->brand_voice_notes)->toBe('short, punchy.');
|
|
expect($workspace->content_language)->toBe('en');
|
|
expect($workspace->account_id)->toBe($account->id);
|
|
expect($workspace->user_id)->toBe($user->id);
|
|
});
|
|
|
|
test('CreateWorkspace switches user current workspace and attaches as member', function () {
|
|
$account = Account::factory()->create();
|
|
$user = User::factory()->create(['account_id' => $account->id, 'current_workspace_id' => null]);
|
|
|
|
$workspace = CreateWorkspace::execute($user, ['name' => 'Acme']);
|
|
|
|
$user->refresh();
|
|
expect($user->current_workspace_id)->toBe($workspace->id);
|
|
expect($workspace->members->contains($user))->toBeTrue();
|
|
});
|
|
|
|
test('CreateWorkspace ignores unknown extra keys like logo_url', function () {
|
|
$account = Account::factory()->create();
|
|
$user = User::factory()->create(['account_id' => $account->id]);
|
|
|
|
$workspace = CreateWorkspace::execute($user, [
|
|
'name' => 'Acme',
|
|
'logo_url' => 'https://acme.example/logo.png',
|
|
]);
|
|
|
|
expect($workspace->name)->toBe('Acme');
|
|
});
|