utils.py 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. from collections import Counter
  2. from typing import Any
  3. UNIT_TEST_PROJECT_ID = "prj_HqxHjwtn2uRtzR3DW6AmBYZh"
  4. UNIT_TEST_CLOUD_ID = "cld_4F7k8814aZzGG8TNUGPKnc"
  5. class UnitTestError(RuntimeError):
  6. pass
  7. def fail_always(*a, **kw):
  8. raise UnitTestError()
  9. def fail_once(result: Any):
  10. class _Failer:
  11. def __init__(self):
  12. self.failed = False
  13. def __call__(self, *args, **kwargs):
  14. if not self.failed:
  15. self.failed = True
  16. raise UnitTestError()
  17. return result
  18. return _Failer()
  19. class APIDict(dict):
  20. __slots__ = ()
  21. __getattr__ = dict.__getitem__
  22. __setattr__ = dict.__setattr__
  23. class MockSDK:
  24. def __init__(self):
  25. self.returns = {}
  26. self.call_counter = Counter()
  27. def reset(self):
  28. self.returns = {}
  29. self.call_counter = Counter()
  30. def __getattr__(self, item):
  31. self.call_counter[item] += 1
  32. result = self.returns.get(item)
  33. if callable(result):
  34. return result
  35. else:
  36. return lambda *a, **kw: result