Files
-S.I.S-QuaySo_v2/tests/Browser/AccountManagementTest.php

133 lines
4.0 KiB
PHP

<?php
namespace Tests\Browser;
use App\Models\User;
use Laravel\Dusk\Browser;
use Tests\DuskTestCase;
class AccountManagementTest extends DuskTestCase
{
/**
* Helper: đăng ký tài khoản mới và đăng nhập.
*/
private function registerAndLogin(Browser $browser, string $phone): void
{
$browser->visit('/logout');
$browser->visit('/login')
->pause(300)
->type('name', 'Dusk Test User')
->type('phone', $phone)
->type('address', 'Cần Thơ')
->radio('known_sis', '1')
->type('job', 'Nhân viên văn phòng')
->press('Gửi thông tin')
->waitForText('thành công', 10)
->assertPathIs('/game');
}
/**
* Cập nhật tài khoản thành công.
*/
public function test_update_account_successfully(): void
{
$phone = '09' . rand(10000000, 99999999);
$this->browse(function (Browser $browser) use ($phone) {
$this->registerAndLogin($browser, $phone);
$browser->visit('/login')
->pause(300)
->assertInputValue('phone', $phone)
->clear('name')
->type('name', 'Tên Mới Test')
->clear('address')
->type('address', 'Hà Nội')
->radio('known_sis', '0')
->clear('job')
->type('job', 'Giáo viên')
->press('Cập nhật')
->waitForText('thành công', 10)
->assertPathIs('/game');
});
// Kiểm tra DB: dữ liệu đã được cập nhật đúng
$user = User::where('phone', $phone)->first();
$this->assertNotNull($user);
$this->assertEquals('TÊN MỚI TEST', $user->name, 'Tên phải uppercase');
$this->assertEquals('Hà Nội', $user->address);
$this->assertEquals(0, $user->known_sis);
$this->assertEquals('Giáo viên', $user->job);
// Dọn dẹp
$user->delete();
}
/**
* Cập nhật tài khoản với tên rỗng phải hiện lỗi.
*/
public function test_update_account_with_empty_name_shows_error(): void
{
$phone = '09' . rand(10000000, 99999999);
$this->browse(function (Browser $browser) use ($phone) {
$this->registerAndLogin($browser, $phone);
$browser->visit('/login')
->clear('name')
->press('Cập nhật')
->pause(300)
->assertPresent('.text-danger');
});
}
/**
* Cập nhật tài khoản với số điện thoại sai phải hiện lỗi.
*/
public function test_update_account_with_invalid_phone_shows_error(): void
{
$phone = '09' . rand(10000000, 99999999);
$this->browse(function (Browser $browser) use ($phone) {
$this->registerAndLogin($browser, $phone);
$browser->visit('/login')
->clear('phone')
->type('phone', 'abcde')
->press('Cập nhật')
->pause(500)
->assertSee('Số điện thoại không đúng định dạng');
});
}
/**
* Trang lịch sử hoạt động hiển thị khi đã đăng nhập.
*/
public function test_history_section_visible_when_authenticated(): void
{
$phone = '09' . rand(10000000, 99999999);
$this->browse(function (Browser $browser) use ($phone) {
$this->registerAndLogin($browser, $phone);
$browser->visit('/login')
->assertSee('LỊCH SỬ HOẠT ĐỘNG');
});
}
/**
* Đăng xuất thành công.
*/
public function test_logout_works(): void
{
$phone = '09' . rand(10000000, 99999999);
$this->browse(function (Browser $browser) use ($phone) {
$this->registerAndLogin($browser, $phone);
$browser->visit('/logout')
->assertGuest();
});
}
}