Projet de remplacement du "RPiPasserelle" d'Otec.
Du kannst nicht mehr als 25 Themen auswählen Themen müssen mit entweder einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

test_variable_types.py 1.9KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. #!/usr/bin/env python3
  2. import pytest
  3. from starlette.authentication import UnauthenticatedUser
  4. from starlette.testclient import TestClient
  5. #from pyheatpump.conf import app, config, default_config, CONFIG_FILES, get_config, set_config, config_route, ROUTES
  6. from unittest.mock import patch, MagicMock
  7. from pprint import pprint
  8. import json
  9. from tempfile import mkstemp
  10. from configparser import ConfigParser
  11. import os
  12. import sys
  13. from pyheatpump.conf import config
  14. from pyheatpump.db import initialize, connect
  15. from pyheatpump.variable_types import app, get_variable_types, set_variable_types, ROUTES
  16. @pytest.fixture(scope='module')
  17. def set_test_db():
  18. _, tmpdb = mkstemp(suffix='.db', dir=os.getcwd(), )
  19. print(f'Will store database in {tmpdb}')
  20. config['heatpump']['database'] = tmpdb
  21. if not initialize(os.path.join(os.getcwd(), 'db/pyheatpump.sql')):
  22. sys.exit(-1)
  23. yield
  24. os.unlink(tmpdb)
  25. def test_get_(set_test_db):
  26. c = TestClient(app)
  27. r = c.get('/')
  28. assert r.status_code == 200
  29. class RequestMock(MagicMock):
  30. def __get__(self, key):
  31. if key == 'method':
  32. return 'GET'
  33. @pytest.mark.asyncio
  34. async def test_get_variable_types(set_test_db):
  35. resp = await get_variable_types(RequestMock())
  36. assert resp.status_code == 200
  37. d_resp = json.loads(resp.body.decode())
  38. assert 'Analog' in d_resp.keys()
  39. assert type(d_resp['Analog']) == dict
  40. assert 'Integer' in d_resp.keys()
  41. assert type(d_resp['Integer']) == dict
  42. assert 'Digital' in d_resp.keys()
  43. assert type(d_resp['Digital']) == dict
  44. def test_set_variable_types(set_test_db):
  45. c = TestClient(app)
  46. r = c.post('/', json=json.dumps({
  47. 'Analog': {
  48. 'start_address': 42,
  49. 'end_address': 420,
  50. }
  51. }))
  52. assert r.status_code == 200
  53. r = c.get('/')
  54. d_resp = json.loads(r.content.decode())
  55. assert d_resp['Analog']['start_address'] == 42
  56. assert d_resp['Analog']['end_address'] == 420