Aplikasi Keuangan yang mengatur lalu lintas transaksi antara bank dan aplikasi internal Kampus
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

44 lines
1.4 KiB

<?php
use App\Domains\Identity\Actions\IdentityMaintenance\UpdateUserSettings;
use App\Domains\Identity\Enums\UserSettingKey;
use App\Domains\Identity\Models\User;
use Illuminate\Foundation\Testing\RefreshDatabase;
uses(Tests\TestCase::class, RefreshDatabase::class);
test('it can update user settings', function () {
$user = User::factory()->create([
'settings' => [
UserSettingKey::LANGUAGE->value => 'id',
UserSettingKey::TIMEZONE->value => 'Asia/Jakarta',
],
]);
$newSettings = [
UserSettingKey::LANGUAGE->value => 'en',
];
$action = new UpdateUserSettings();
$action->execute($user, $newSettings);
$updatedUser = $user->fresh();
expect($updatedUser->settings[UserSettingKey::LANGUAGE->value])->toBe('en')
->and($updatedUser->settings[UserSettingKey::TIMEZONE->value])->toBe('Asia/Jakarta');
});
test('it ignores invalid settings keys', function () {
$user = User::factory()->create(['settings' => []]);
$newSettings = [
'invalid_key' => 'some_value',
UserSettingKey::NOTIFICATION->value => 1,
];
$action = new UpdateUserSettings();
$action->execute($user, $newSettings);
$updatedUser = $user->fresh();
expect($updatedUser->settings)->toHaveKey(UserSettingKey::NOTIFICATION->value)
->and($updatedUser->settings)->not->toHaveKey('invalid_key');
});