You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
61 lines
1.9 KiB
61 lines
1.9 KiB
import unittest |
|
import json |
|
from app import create_app, db |
|
from app.models import User, Game, Role, GamePlayer, Objective |
|
from config import Config |
|
|
|
class TestConfig(Config): |
|
TESTING = True |
|
WTF_CSRF_ENABLED = False |
|
DEBUG = False |
|
SQLALCHEMY_DATABASE_URI = 'sqlite://' |
|
|
|
class GamePlayerCase(unittest.TestCase): |
|
# implement this: https://stackoverflow.com/questions/47294304/how-to-mock-current-user-in-flask-templates |
|
def setUp(self): |
|
self.app = create_app(TestConfig) |
|
self.app_context = self.app.app_context() |
|
self.app_context.push() |
|
db.create_all() |
|
|
|
def tearDown(self): |
|
db.session.remove() |
|
db.drop_all() |
|
self.app_context.pop() |
|
|
|
def test_default(self): |
|
g1 = Game(name='TestGame') |
|
u1 = User(name='Henk') |
|
p1 = GamePlayer(user=u1, role=Role.bunny) |
|
|
|
o1 = Objective(name='Objective 1') |
|
o2 = Objective(name='Objective 2') |
|
o3 = Objective(name='Objective 3') |
|
|
|
o1.set_hash() |
|
o2.set_hash() |
|
o3.set_hash() |
|
|
|
g1.players.append(p1) |
|
g1.objectives.append(o1) |
|
g1.objectives.append(o2) |
|
g1.objectives.append(o3) |
|
|
|
p1.found_objectives.append(o1) |
|
|
|
db.session.add(g1) |
|
db.session.commit() |
|
|
|
# Check if test initiaion succeeded |
|
self.assertEqual(len(Game.query.first().objectives), 3) |
|
self.assertEqual(User.query.first().user_games[0].found_objectives[0], o1) |
|
|
|
# The actual Test |
|
player_objectives = ('[{"name": "Objective 1", "longitude": null, "latitude": null, "found": true},' |
|
'{"name": "Objective 2", "longitude": null, "latitude": null, "found": false},' |
|
'{"name": "Objective 3", "longitude": null, "latitude": null, "found": false}]') |
|
self.assertEqual(p1.encode_objectives(), player_objectives) |
|
|
|
|
|
if __name__ == '__main__': |
|
unittest.main(verbosity=2)
|
|
|