from django.test import TestCase

import pytest
from django.urls import reverse

from bs4 import BeautifulSoup

from generic.models import ExamCollection

import datetime

class TestExamCollections:
    def test_list_url(self, db, client):
        from django.contrib.auth.models import User
        user = User.objects.create_user(username="test_list_user", password="password")
        client.force_login(user)
        # Test with no content
        response = client.get(reverse("generic:examcollection_list"))
        assert response.status_code == 200
        soup = BeautifulSoup(response.content, "html.parser")
        assert "No exam collections yet" in soup.text

        # No content yet so this should fail
        response = client.get(reverse("generic:examcollection_detail", args=( 1, )))
        assert response.status_code == 404

        collection = ExamCollection.objects.create(name="test collection", date=datetime.date.today())
        collection.author.add(user)

        response = client.get(reverse("generic:examcollection_list"))
        assert response.status_code == 200
        soup = BeautifulSoup(response.content, "html.parser")
        assert collection.name in soup.find("a", class_="stretched-link").text


        response = client.get(reverse("generic:examcollection_detail", args=( collection.pk, )))
        assert response.status_code == 200
        soup = BeautifulSoup(response.content, "html.parser")
        assert collection.name in soup.find("h1").text