# 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