133 lines
4.0 KiB
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();
|
|
});
|
|
}
|
|
}
|