From af6a3996a8e67b04fd2d47a0f8570c74b4799aee Mon Sep 17 00:00:00 2001 From: Joffjoff5000 <Joffjoff5000@gmail.com> Date: Sun, 11 Apr 2021 20:18:24 +0200 Subject: [PATCH] Fully test slides from db --- server/app/apis/competitions.py | 2 +- server/tests/test_app.py | 45 ++++++++++++++++++++++++++------- server/tests/test_db.py | 35 +++++++++++++++++++++++-- server/tests/test_helpers.py | 20 ++++++++++++++- 4 files changed, 89 insertions(+), 13 deletions(-) diff --git a/server/app/apis/competitions.py b/server/app/apis/competitions.py index 9f17a932..55cd3227 100644 --- a/server/app/apis/competitions.py +++ b/server/app/apis/competitions.py @@ -27,10 +27,10 @@ class CompetitionsList(Resource): # Add competition item = dbc.add.competition(name, year, city_id) + dbc.refresh(item) # Add default slide dbc.add.slide(item) - dbc.refresh(item) return item_response(schema.dump(item)) diff --git a/server/tests/test_app.py b/server/tests/test_app.py index 7bb86fba..f9b2da9b 100644 --- a/server/tests/test_app.py +++ b/server/tests/test_app.py @@ -1,5 +1,5 @@ import app.core.http_codes as codes -from app.core.models import Blacklist +from app.core.models import Slide from flask_sqlalchemy import model from tests import app, client, db @@ -74,35 +74,39 @@ def test_competition_api(client): response, body = post(client, "/api/competitions", data, headers=headers) assert response.status_code == codes.OK assert body["name"] == "c1" + competition_id = body["id"] + + # Save number of slides + num_slides = len(Slide.query.all()) # Get competition - response, body = get(client, "/api/competitions/1", headers=headers) + response, body = get(client, f"/api/competitions/{competition_id}", headers=headers) assert response.status_code == codes.OK assert body["name"] == "c1" - response, body = post(client, "/api/competitions/1/slides", {}, headers=headers) + response, body = post(client, f"/api/competitions/{competition_id}/slides", {}, headers=headers) assert response.status_code == codes.OK - response, body = get(client, "/api/competitions/1/slides", headers=headers) + response, body = get(client, f"/api/competitions/{competition_id}/slides", headers=headers) assert response.status_code == codes.OK assert len(body["items"]) == 2 - response, body = put(client, "/api/competitions/1/slides/1/order", {"order": 1}, headers=headers) + response, body = put(client, f"/api/competitions/{competition_id}/slides/{num_slides}/order", {"order": 1}, headers=headers) assert response.status_code == codes.OK - response, body = post(client, "/api/competitions/1/teams", {"name": "t1"}, headers=headers) + response, body = post(client, f"/api/competitions/{competition_id}/teams", {"name": "t1"}, headers=headers) assert response.status_code == codes.OK - response, body = get(client, "/api/competitions/1/teams", headers=headers) + response, body = get(client, f"/api/competitions/{competition_id}/teams", headers=headers) assert response.status_code == codes.OK assert len(body["items"]) == 1 assert body["items"][0]["name"] == "t1" - response, body = delete(client, "/api/competitions/1", {}, headers=headers) + response, body = delete(client, f"/api/competitions/{competition_id}", {}, headers=headers) assert response.status_code == codes.OK -def test_auth_and_users_api(client): +def test_auth_and_user_api(client): add_default_values() # Login in with default user @@ -220,3 +224,26 @@ def test_auth_and_users_api(client): # TODO: Check that user was blacklisted # Look for current users jwt in blacklist # Blacklist.query.filter(Blacklist.jti == ) + + +def test_slide_api(client): + add_default_values() + + # Login in with default user + response, body = post(client, "/api/auth/login", {"email": "test@test.se", "password": "password"}) + assert response.status_code == codes.OK + headers = {"Authorization": "Bearer " + body["access_token"]} + + # Get slides + response, body = get(client, "/api/competitions/1/slides", headers=headers) + assert response.status_code == codes.OK + assert body["count"] == 0 + + # # Get slides + # response, body = get(client, "/api/competitions/2/slides", headers=headers) + # assert response.status_code == codes.OK + # assert body["count"] == 3 + + # Add question + # response, body = get(client, "/api/competitions/1", headers=headers) + # assert response.status_code == codes.UNAUTHORIZED diff --git a/server/tests/test_db.py b/server/tests/test_db.py index 49ca53ad..8b3a02f7 100644 --- a/server/tests/test_db.py +++ b/server/tests/test_db.py @@ -60,7 +60,7 @@ def test_question(client): item_competition_2 = Competition.query.filter_by(name="teknik9").first() assert item_competition is not None - assert item_competition.id == 1 + assert item_competition.id == 3 assert item_competition.city.name == "Linköping" # Add teams @@ -85,7 +85,7 @@ def test_question(client): # Try add slide with same order assert_insert_fail(Slide, 1, item_competition.id) - assert_exists(Slide, 1, order=1) + assert_exists(Slide, 2, order=1) item_slide1 = Slide.query.filter_by(order=0).first() item_slide2 = Slide.query.filter_by(order=1).first() @@ -109,3 +109,34 @@ def test_question(client): item_q2 = Question.query.filter_by(name="Fråga2").first() assert item_q1.type.name == "Boolean" assert item_q2.type.name == "Multiple" + + +def test_slide(client): + add_default_values() + + # Get all slides + slides = Slide.query.all() + item_slides = dbc.get.search_slide() + assert slides == item_slides[0] + + # Search using all parameters + item_comp = Competition.query.filter(Competition.name == "Tävling 1").first() + aux = dbc.get.search_slide(slide_order=1, title="Title 1", body="Body 1", competition_id=item_comp.id) + item_slide = aux[0][0] + assert item_comp.slides[1] == item_slide + + # Edit all parameters of a slide + title = "Ändrad titel" + timer = 42 + slide_id = item_slide.id + dbc.edit.slide(item_slide, title=title, timer=timer) + aux = dbc.get.search_slide(slide_order=1, title=title, body="Body 1", competition_id=item_comp.id) + item_slide = aux[0][0] + assert item_slide.id == slide_id + assert item_slide.title == title + assert item_slide.timer == timer + + # Delete slide + aux = dbc.get.search_slide(slide_order=1, competition_id=item_comp.id) + item_slide = aux[0][0] + dbc.delete.slide(item_slide) diff --git a/server/tests/test_helpers.py b/server/tests/test_helpers.py index 6077e892..5e871b70 100644 --- a/server/tests/test_helpers.py +++ b/server/tests/test_helpers.py @@ -2,7 +2,7 @@ import json import app.core.controller as dbc from app.core import db -from app.core.models import City, MediaType, QuestionType, Role, User +from app.core.models import City, Role def add_default_values(): @@ -31,6 +31,24 @@ def add_default_values(): # Add user with role and city dbc.add.user("test@test.se", "password", item_admin.id, item_city.id, "Olle Olsson") + # Add competition + dbc.add.competition("Tom tävling", 2012, item_city.id) + item_comp = dbc.add.competition("Tävling 1", 2012, item_city.id) + + # Add slides + for i in range(len(question_types)): + # Add slide to competition + item_slide = dbc.add.slide(item_comp) + + # Populate slide with data + item_slide.title = f"Title {i}" + item_slide.body = f"Body {i}" + item_slide.timer = 100 + i + # item_slide.settings = "{}" + + # Add question to competition + dbc.add.question(f"Q{i+1}", i + 1, i, item_slide) + def get_body(response): try: -- GitLab