From 524c4ca028a1a5eba030868dc25e062c33d63b50 Mon Sep 17 00:00:00 2001 From: yann Date: Thu, 3 Jul 2025 15:08:11 +0200 Subject: [PATCH] test on 12, but error and fails --- server.py | 2 +- templates/welcome.html | 4 ++-- tests/__init__.py | 0 tests/conftest.py | 30 ++++++++++++++++++++++++++++++ tests/test_connection.py | 26 ++++++++++++++++++++++++++ tests/test_purchase.py | 29 +++++++++++++++++++++++++++++ 6 files changed, 88 insertions(+), 3 deletions(-) create mode 100644 tests/__init__.py create mode 100644 tests/conftest.py create mode 100644 tests/test_connection.py create mode 100644 tests/test_purchase.py diff --git a/server.py b/server.py index ff0ca7b..771887f 100644 --- a/server.py +++ b/server.py @@ -29,7 +29,7 @@ def showSummary(): club = [club for club in clubs if club['email'] == request.form['email']] if club: return render_template('welcome.html', club=club[0], competitions=competitions) - flash("The email isn't found") + flash("Sorry, that email wasn't found") return redirect(url_for('index')) @app.route('/book//') diff --git a/templates/welcome.html b/templates/welcome.html index 223f4b2..8289e70 100644 --- a/templates/welcome.html +++ b/templates/welcome.html @@ -5,7 +5,7 @@ Summary | GUDLFT Registration -

Welcome, {{club['email']}}

Logout +

Welcome, {{club['email']}}

Logout {% with messages = get_flashed_messages()%} {% if messages %} @@ -33,4 +33,4 @@ {%endwith%} - \ No newline at end of file + diff --git a/tests/__init__.py b/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/tests/conftest.py b/tests/conftest.py new file mode 100644 index 0000000..2c757bd --- /dev/null +++ b/tests/conftest.py @@ -0,0 +1,30 @@ +import pytest +from server import app +from bs4 import BeautifulSoup + + +EMAIL1 = "admin@irontemple.com" +EMAIL2 = "john@simplylift.co" + +@pytest.fixture +def club1(): + data = {"competition": "Spring Festival", "club": "Iron Temple"} + return data + +@pytest.fixture +def club2(): + data = {"competition": "Fall Classic", "club": "Iron Temple"} + return data + +@pytest.fixture +def client(): + with app.test_client() as client: + yield client + +@pytest.fixture +def connect(client): + response = client.post('/showSummary', data={"email": EMAIL1}) + soup = BeautifulSoup(response.data, 'html.parser') + return soup + + diff --git a/tests/test_connection.py b/tests/test_connection.py new file mode 100644 index 0000000..8f91968 --- /dev/null +++ b/tests/test_connection.py @@ -0,0 +1,26 @@ +from flask import session +from bs4 import BeautifulSoup + + +def test_should_status_code_ok(client): + response = client.get('/') + assert response.status_code == 200 + + +def test_should_display_sorry_with_unknown_email(client): + email = "test@test.com" + response = client.post('/showSummary', data={"email": email}) + print(session) + assert "_flashes" in session + assert session["_flashes"] == [("message", "Sorry, that email wasn't found")] + + +def test_shoul_display_page_on_known_email(client): + email = "admin@irontemple.com" + response = client.post('/showSummary', data={"email": email}) + print(session) + soup = BeautifulSoup(response.data, 'html.parser') + assert soup.h2.text == "Welcome, "+email + + + diff --git a/tests/test_purchase.py b/tests/test_purchase.py new file mode 100644 index 0000000..27733f3 --- /dev/null +++ b/tests/test_purchase.py @@ -0,0 +1,29 @@ +from bs4 import BeautifulSoup +from flask import session + + +class TestPoints: + + def test_should_nok_when_too_much_points(self, client, connect, club1): + points = int(connect.span.text) + club1.update({"places": points+1}) + response = client.post('/purchasePlaces', data=club1) + soup = BeautifulSoup(response.data, "html.parser") + assert "You don't have enough points" == soup.li.text + + def test_should_ok_when_enough_points(self, client, connect, club1): + points = int(connect.span.text) + club1.update({"places": points-1}) + response = client.post('/purchasePlaces', data=club1) + soup = BeautifulSoup(response.data, "html.parser") + assert "Great-booking complete!" == soup.li.text + + +class TestPlaces: + + def test_should_refuse_more_than_12(self, client, club1): + club1.update({"places": 13}) + response = client.post('/puchasePlaces', data=club1) + print(response.data) + soup = BeautifulSoup(response.data, "html.parser") + assert "You can't book more than 12 places" == soup.li.text