2019-12-08 22:43:49 +01:00
|
|
|
# vim: set fileencoding=utf-8
|
2021-05-02 05:50:19 +02:00
|
|
|
import sys
|
2021-05-02 05:48:07 +02:00
|
|
|
import unittest
|
|
|
|
from typing import Container, List, Dict, Any
|
|
|
|
|
|
|
|
|
|
|
|
# Supress custom handler tracebacks inside handler frames
|
|
|
|
__unittest = True
|
|
|
|
|
|
|
|
|
|
|
|
class ExtendedTestCase(unittest.TestCase):
|
2021-05-02 05:50:19 +02:00
|
|
|
@property
|
|
|
|
def verbose(self) -> bool:
|
|
|
|
return ("-v" in sys.argv) or ("--verbose" in sys.argv)
|
|
|
|
|
2021-05-02 05:48:07 +02:00
|
|
|
def assertItemsEqual(self, a: Container[Any], b: Container[Any]) -> None:
|
|
|
|
a_items = {x for x in a}
|
|
|
|
b_items = {x for x in b}
|
|
|
|
self.assertEqual(a_items, b_items)
|
2019-12-08 22:43:49 +01:00
|
|
|
|
|
|
|
|
|
|
|
class FakeCursor():
|
|
|
|
|
|
|
|
def __init__(self, rows: List[Dict[str, Any]]) -> None:
|
|
|
|
self.__rows = rows
|
|
|
|
self.rowcount = len(rows)
|
|
|
|
|
|
|
|
def fetchone(self) -> Dict[str, Any]:
|
|
|
|
if len(self.__rows) != 1:
|
2020-01-07 22:29:07 +01:00
|
|
|
raise Exception(f'Tried to fetch one row and there are {len(self.__rows)} rows!')
|
2019-12-08 22:43:49 +01:00
|
|
|
return self.__rows[0]
|
|
|
|
|
|
|
|
def fetchall(self) -> List[Dict[str, Any]]:
|
|
|
|
return self.__rows
|