Files
classquiz-ai/classquiz/tests/__init__.py
T
2023-06-30 13:16:12 +02:00

162 lines
5.6 KiB
Python

# SPDX-FileCopyrightText: 2023 Marlon W (Mawoka)
#
# SPDX-License-Identifier: MPL-2.0
from typing import Generator
from fastapi.testclient import TestClient
# from classquiz.socket_server import sio
from classquiz import app as fastapi_app
# from typing import List, Optional
# stdlib imports
# import asyncio
# 3rd party imports
import pytest
# import socketio
# import uvicorn
# FastAPI imports
# from fastapi import FastAPI
PORT = 8000
class ValueStorage:
quiz_id = None
imported_quizzes = []
game_pin = None
game_id = None
exported_quiz_data = None
edit_id = None
image_id = None
cookies = None
file_id = None
quiztivity_id = None
share_id = None
expired_share_id = None
example_quiz = {
"public": True,
"title": "Some test question",
"description": "A description",
"questions": [
{
"type": "ABCD",
"question": "Is ClassQuiz cool?",
"time": 10,
"answers": [{"right": True, "answer": "Yes"}, {"right": False, "answer": "No"}],
},
{
"type": "ABCD",
"question": "Do you like open source?",
"time": 5,
"image": None,
"answers": [
{"right": True, "answer": "Yes"},
{"right": False, "answer": "No"},
{"right": False, "answer": "Maybe"},
],
},
],
}
test_user_email = "sth@byom.de"
test_user_password = "test"
example_quiztivity = {
"title": "Some test Quiztivity",
"pages": [
{
"title": "Some test question",
"type": "ABCD",
"data": {
"question": "Is ClassQuiz cool?",
"answers": [{"correct": True, "answer": "Yes"}, {"correct": False, "answer": "No"}],
},
}
],
}
# mock_test_results = {'0': [{'username': 'Player 1', 'answer': 'Byte, Bit, KB, MB, GB, TB', 'right': False},
# {'username': 'Player 2', 'answer': 'Byte, Bit, KB, MB, GB, TB', 'right': False}, {'username': 'Player 3',
# 'answer': 'Bit, Byte, KB, MB, GB, TB', 'right': True}], '1': [{'username': 'Player 3', 'answer': 'CPU',
# 'right': True}, {'username': 'Player 2', 'answer': 'CPU', 'right': True}, {'username': 'Player 1',
# 'answer': 'CPU', 'right': True}], '2': [{'username': 'Player 1', 'answer': 'Peripheriegeräte',
# 'right': True}, {'username': 'Player 2', 'answer': 'Speichergeräte', 'right': False},
# {'username': 'Player 3', 'answer': 'Kommunikationsgeräte', 'right': False}], '3': [{'username': 'Player 1',
# 'answer': 'die Taktfrequenz der CPU', 'right': True}, {'username': 'Player 2',
# 'answer': 'die Taktfrequenz der CPU', 'right': True}, {'username': 'Player 3',
# 'answer': 'die Taktfrequenz der CPU', 'right': True}], '4': [{'username': 'Player 3', 'answer': 'Drucker',
# 'right': True}, {'username': 'Player 2', 'answer': 'Drucker', 'right': True}, {'username': 'Player 1',
# 'answer': 'Tabellenkalkulation', 'right': False}], '5': [{'username': 'Player 1',
# 'answer':'CPU (Central Processing Unit)', 'right': False}, {'username': 'Player 2',
# 'answer': 'RAM (Random Access Memory)', 'right': True}, {'username': 'Player 3',
# 'answer': 'RAM (Random Access Memory)', 'right': True}], '6': [{'username': 'Player 3', 'answer': 'RAM',
# 'right': True}, {'username': 'Player 2', 'answer': 'ROM', 'right': False}, {'username': 'Player 1',
# 'answer': 'RAM', 'right': True}], '7': [{'username': 'Player 1', 'answer': '1 TB (Terabyte)',
# 'right': True}, {'username': 'Player 2', 'answer': '500 KB (Kilobyte)', 'right': False},
# {'username': 'Player 3', 'answer': '500 TB (Terabyte)', 'right': False}], '8': [{'username': 'Player 3',
# 'answer': 'Tabellenkalkulationsprogramm', 'right': True}, {'username': 'Player 2',
# 'answer': 'Tabellenkalkulationsprogramm', 'right': True}, {'username': 'Player 1', 'answer': 'Linux',
# 'right': False}], '9': [{'username': 'Player 1', 'answer': 'Anwendungsprogramme', 'right': True},
# {'username': 'Player 2', 'answer': 'Lernprogramme', 'right': False}, {'username': 'Player 3',
# 'answer': 'Anwendungsprogramme', 'right': True}]}
@pytest.fixture(scope="module")
def test_client() -> Generator:
with TestClient(fastapi_app) as testclient:
yield testclient
#
# sio.eio.start_service_task = False
#
#
# class UvicornTestServer(uvicorn.Server):
# """Uvicorn test server
#
# Usage:
# @pytest.fixture
# async def start_stop_server():
# server = UvicornTestServer()
# await server.up()
# yield
# await server.down()
# """
#
# def __init__(self, app: FastAPI = fastapi_app, host: str = '127.0.0.1', port: int = PORT):
# """Create a Uvicorn test server
#
# Args:
# app (FastAPI, optional): the FastAPI app. Defaults to main.app.
# host (str, optional): the host ip. Defaults to '127.0.0.1'.
# port (int, optional): the port. Defaults to PORT.
# """
# self._startup_done = asyncio.Event()
# super().__init__(config=uvicorn.Config(app, host=host, port=port))
#
# async def startup(self, sockets: Optional[List] = None) -> None:
# """Override uvicorn startup"""
# await super().startup(sockets=sockets)
# self.config.setup_event_loop()
# self._startup_done.set()
#
# async def up(self) -> None:
# """Start up server asynchronously"""
# self._serve_task = asyncio.create_task(self.serve())
# await self._startup_done.wait()
#
# async def down(self) -> None:
# """Shut down server asynchronously"""
# self.should_exit = True
# await self._serve_task
#
#
#