import pytest from bs4 import BeautifulSoup from django.test import Client from django.urls import reverse from model_bakery import baker from pytest_django.asserts import assertHTMLEqual from club.models import Club from core.markdown import markdown from core.models import PageRev, User @pytest.mark.django_db def test_page_display_on_club_main_page(client: Client): """Test the club Page is properly displayed on the club main view""" club = baker.make(Club) content = "# foo\nLorem ipsum dolor sit amet" baker.make(PageRev, page=club.page, revision=1, content=content) client.force_login(baker.make(User)) res = client.get(reverse("club:club_view", kwargs={"club_id": club.id})) assert res.status_code == 200 soup = BeautifulSoup(res.text, "lxml") detail_html = soup.find(id="club_detail").find(class_="markdown") assertHTMLEqual(detail_html.decode_contents(), markdown(content)) @pytest.mark.django_db def test_club_main_page_without_content(client: Client): """Test the club view works, even if the club page is empty""" club = baker.make(Club) club.page.revisions.all().delete() client.force_login(baker.make(User)) res = client.get(reverse("club:club_view", kwargs={"club_id": club.id})) assert res.status_code == 200 soup = BeautifulSoup(res.text, "lxml") detail_html = soup.find(id="club_detail") assert detail_html.find_all("markdown") == []