Source code for tests.test_fastapi_app

"""Tests for :mod:`~.fastapi_app`
"""

import random
import unittest

from fastapi.testclient import TestClient
from fastapi_app import app
from fastapi_app.constants import (CLASSIC_FIZZBUZZ_PREFIX, N_ARGS_NAME,
                                   SEP_ARGS_NAME, STREAM_PATH)
from fizzbuzz_lib import classic_fizzbuzz_as_text


[docs]class TestFastAPIApp(unittest.TestCase): """Unittest class to test :mod:`~.fastapi_app`"""
[docs] def setUp(self) -> None: self._seps = [' ', ', ', '; '] random.seed()
[docs] def test_classic_fizzbuzz(self): """Tests classic FizzBuzz web services """ with TestClient(app) as client: for i in range(100): with self.subTest(i=i): sep = random.choice(self._seps) stream = random.choice([STREAM_PATH, '']) r = client.get(f'/{CLASSIC_FIZZBUZZ_PREFIX}/{stream}', params={N_ARGS_NAME: i, SEP_ARGS_NAME: sep}) self.assertEqual(r.status_code, 200) self.assertEqual(r.text, classic_fizzbuzz_as_text(i, sep))