diff --git a/server/tests/test_db.py b/server/tests/test_db.py index 568c1c479fdf6f1edaaabf6765171613ae4faeb5..0e0287463509c564eb681c4a8bbebee8f834c03e 100644 --- a/server/tests/test_db.py +++ b/server/tests/test_db.py @@ -3,10 +3,41 @@ This file tests the database controller functions. """ import app.database.controller as dbc -from app.database.models import City, Code, Competition, Media, MediaType, Role, User +from app.database.models import City, Code, Competition, Media, MediaType, Role, Slide, User from tests import app, client, db -from tests.test_helpers import add_default_values, assert_exists, assert_insert_fail, assert_slide_order, delete +from tests.test_helpers import add_default_values, assert_all_slide_orders, assert_should_fail, assert_slide_order + + +def test_default_values(client): + add_default_values() + + # Basic funcs + def func(val): + assert val + + # Testing assert_should_fail when it should and should not fail + assert_should_fail(func, False) + + try: + assert_should_fail(func, True) + except: + pass + else: + assert False + + # All slides should be in order + assert_all_slide_orders() + + # Slides are moved so they are not in correct order + item_slides = dbc.get.all(Slide) + for item_slide in item_slides: + item_slide.order += 10 + db.session.add(item_slide) + db.session.commit() + + # The slides are not in order so the assert should fail + assert_should_fail(assert_all_slide_orders) def test_user(client): @@ -91,6 +122,8 @@ def test_copy(client): dbc.delete.team(item_team_2) assert len(dbc.get.all(Code)) == 3 + assert_all_slide_orders() + def check_slides_copy(item_slide_original, item_slide_copy, num_slides, order): """ Checks that two slides are correct copies of each other. Looks big but is quite fast. """ @@ -277,6 +310,7 @@ def test_question(client): ) assert item_q1 == item_q2[0] + assert_all_slide_orders() def test_slide(client): add_default_values() diff --git a/server/tests/test_helpers.py b/server/tests/test_helpers.py index 7d5625385f01f81cc326bca9d5114322ad5f52e0..c3a73754c70aa492c6211ccba158a0cf209efab9 100644 --- a/server/tests/test_helpers.py +++ b/server/tests/test_helpers.py @@ -3,7 +3,7 @@ import json import app.core.http_codes as codes import app.database.controller as dbc from app.core import db -from app.database.models import City, Code, Role +from app.database.models import City, Code, Role, Slide def add_default_values(): @@ -161,3 +161,31 @@ def assert_slide_order(item_comp, correct_order): """ for slide, order in zip(item_comp.slides, correct_order): assert slide.order == order + + +def assert_all_slide_orders(): + """ Checks that all slides are in order. """ + + # Get slides in competition order and slide order + item_slides = Slide.query.order_by(Slide.competition_id).order_by(Slide.order).all() + + order = 0 + competition_id = 1 + for item_slide in item_slides: + if item_slide.competition_id != competition_id: + order = 0 + competition_id = item_slide.competition_id + + assert item_slide.order == order + order += 1 + + +def assert_should_fail(func, *args): + """ Runs the function which should raise an exception. """ + + try: + func(*args) + except: + pass # Assert failed, as it should + else: + assert False # Assertion didn't fail