# retoor import time import requests from tests.conftest import BASE_URL JSON = {"Accept": "application/json"} _counter = [0] def _unique(prefix="nextpost"): _counter[0] += 1 return f"{prefix}{int(time.time() * 1000)}{_counter[0]}" def _signup(): name = _unique("nextuser") session = requests.Session() session.post( f"{BASE_URL}/auth/signup", data={ "username": name, "email": f"{name}@t.dev", "password": "secret123", "confirm_password": "secret123", "birth_date": "1990-01-01", "accept_terms": "1", }, allow_redirects=True, ) return session def _new_post(session, title=None): return session.post( f"{BASE_URL}/posts/create", headers=JSON, data={ "title": title or _unique("nextpostbody"), "content": "content for the next-post navigation test", "topic": "devlog", }, ).json()["data"] def test_newer_post_links_to_the_next_older_post(app_server): session = _signup() older = _new_post(session, title="Older Post For Next Nav") newer = _new_post(session, title="Newer Post For Next Nav") r = requests.get(f"{BASE_URL}/posts/{newer['slug']}", headers=JSON) assert r.status_code == 200 assert r.json()["next_post_url"] == f"/posts/{older['slug']}" html = requests.get(f"{BASE_URL}/posts/{newer['slug']}") assert f'href="/posts/{older["slug"]}" class="next-post-link"' in html.text assert f'' in html.text def test_next_post_link_is_absent_when_the_url_is_none(app_server): session = _signup() post = _new_post(session) data = requests.get(f"{BASE_URL}/posts/{post['slug']}", headers=JSON).json() html = requests.get(f"{BASE_URL}/posts/{post['slug']}").text if data["next_post_url"] is None: assert "next-post-link" not in html assert 'rel="next"' not in html else: assert f'href="{data["next_post_url"]}" class="next-post-link"' in html