page = new LoginPage(); } protected function tearDown(): void { unset($_POST['us_login']); parent::tearDown(); } public function testLoggedInVisitorIsLinkedToTheCurrentPageByDefault(): void { Functions\when('is_user_logged_in')->justReturn(true); Functions\when('get_permalink')->alias( static fn(int $id = 0): string|false => 0 === $id ? 'https://example.com/login/' : false ); $html = $this->page->render([]); self::assertStringContainsString('href="https://example.com/login/"', $html); self::assertStringContainsString('View available lessons', $html); } public function testLoggedInVisitorIsLinkedToTheChosenBookingPage(): void { Functions\when('is_user_logged_in')->justReturn(true); Functions\when('get_permalink')->alias( static fn(int $id = 0): string|false => 9 === $id ? 'https://example.com/book/' : 'https://example.com/login/' ); $html = $this->page->render(['bookingPageId' => 9]); self::assertStringContainsString('href="https://example.com/book/"', $html); } public function testShortcodeStyleAttributeSelectsTheBookingPageToo(): void { Functions\when('is_user_logged_in')->justReturn(true); Functions\when('get_permalink')->alias( static fn(int $id = 0): string|false => 9 === $id ? 'https://example.com/book/' : 'https://example.com/login/' ); $html = $this->page->render(['booking_page_id' => '9']); self::assertStringContainsString('href="https://example.com/book/"', $html); } public function testLoggedOutVisitorSeesTheLoginForm(): void { Functions\when('is_user_logged_in')->justReturn(false); Functions\when('get_permalink')->justReturn('https://example.com/login/'); Functions\when('sanitize_url')->returnArg(); Functions\when('wp_nonce_field')->justReturn(''); $html = $this->page->render([]); self::assertStringContainsString('us-login-form', $html); self::assertStringContainsString('name="us_login"', $html); } public function testBookingUrlIsNullWithoutAChosenPage(): void { self::assertNull($this->page->bookingUrl(0)); } public function testBookingUrlIsNullWhenTheChosenPageIsGone(): void { Functions\when('get_permalink')->justReturn(false); self::assertNull($this->page->bookingUrl(9)); } public function testBookingUrlIsThePagePermalink(): void { Functions\when('get_permalink')->justReturn('https://example.com/book/'); self::assertSame('https://example.com/book/', $this->page->bookingUrl(9)); } }