# SPDX-FileCopyrightText: WTF Kooperative eG # SPDX-License-Identifier: AGPL-3.0-or-later from alembic import command import json import unittest from app import app, db, migrate from ki.actions import seed from ki.models import Skill from sqlalchemy import select class ApiTest(unittest.TestCase): maxDiff = None def setUp(self): print("Running setup") app.debug = True app.config["KI_AUTH"] = "file" app.config["TESTING"] = True app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///:memory:" self.client = app.test_client() config = migrate.get_config() with app.app_context(): command.upgrade(config, "head") seed(True) # statement = select(Skill).order_by(Skill.id.desc()) # print(statement) # skill_obj = db.session.scalars(statement).all() # print(skill_obj) # statement = select(Skill.id) # print(statement) # max_skill = db.session.Skill().order_by(Skill.id.desc()).first() # max_skill = Skill.query.order_by(Skill.id.desc()).first() # TODO: problematic with db.session.no_autoflush: # only works on first test run max_skill = db.session.query(Skill).order_by(Skill.id.desc()).first() # TODO: also problematic, # skills = db.session.execute(db.select(Skill)).scalars() # print(max_skill) # max_skill = db.session.execute(db.select(Skill) # .order_by(Skill.id.desc()) # ).scalar_one() print(max_skill) print("max_skill done") self.max_skill_id = max_skill.id def tearDown(self): print("Running teardown") with app.app_context(): db.drop_all() db.engine.dispose() def login(self, username, password): # with app.app_context(): login_data = {"username": username, "password": password} login_response = self.client.post("/users/login", data=json.dumps(login_data), content_type="application/json") self.assertEqual(login_response.status_code, 200) self.assertIn("token", login_response.json) return login_response.json