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(); }); } }