update tests and fix small bug in connector_manager

This commit is contained in:
Mikhail Epifanov 2024-01-13 00:24:58 +01:00
parent 1a37961ceb
commit 50eb232fff
No known key found for this signature in database
2 changed files with 19 additions and 11 deletions

View File

@ -13,12 +13,13 @@ from django_scopes import scope
from cookbook.connectors.connector import Connector from cookbook.connectors.connector import Connector
from cookbook.connectors.homeassistant import HomeAssistant from cookbook.connectors.homeassistant import HomeAssistant
from cookbook.models import ShoppingListEntry, Recipe, MealPlan, Space from cookbook.models import ShoppingListEntry, Recipe, MealPlan, Space, HomeAssistantConfig, ConnectorConfig
multiprocessing.set_start_method('fork') # https://code.djangoproject.com/ticket/31169 multiprocessing.set_start_method('fork') # https://code.djangoproject.com/ticket/31169
QUEUE_MAX_SIZE = 25 QUEUE_MAX_SIZE = 25
REGISTERED_CLASSES: UnionType = ShoppingListEntry | Recipe | MealPlan | Connector REGISTERED_CLASSES: UnionType = ShoppingListEntry | Recipe | MealPlan
CONNECTOR_UPDATE_CLASSES: UnionType = HomeAssistantConfig | ConnectorConfig
class ActionType(Enum): class ActionType(Enum):
@ -35,7 +36,7 @@ class Work:
class ConnectorManager: class ConnectorManager:
_queue: Queue _queue: Queue
_listening_to_classes = REGISTERED_CLASSES _listening_to_classes = REGISTERED_CLASSES | CONNECTOR_UPDATE_CLASSES
def __init__(self): def __init__(self):
self._queue = multiprocessing.Queue(maxsize=QUEUE_MAX_SIZE) self._queue = multiprocessing.Queue(maxsize=QUEUE_MAX_SIZE)
@ -81,10 +82,10 @@ class ConnectorManager:
break break
# If a Connector was changed/updated, refresh connector from the database for said space # If a Connector was changed/updated, refresh connector from the database for said space
refresh_connector_cache = isinstance(item.instance, Connector) refresh_connector_cache = isinstance(item.instance, CONNECTOR_UPDATE_CLASSES)
space: Space = item.instance.space space: Space = item.instance.space
connectors: Optional[List[Connector]] = _connectors.get(space.name, None) connectors: Optional[List[Connector]] = _connectors.get(space.name)
if connectors is None or refresh_connector_cache: if connectors is None or refresh_connector_cache:
with scope(space=space): with scope(space=space):

View File

@ -1,7 +1,8 @@
from cookbook.models import Storage, HomeAssistantConfig import pytest
from django.contrib import auth from django.contrib import auth
from django.urls import reverse from django.urls import reverse
import pytest
from cookbook.models import HomeAssistantConfig
EDIT_VIEW_NAME = 'edit_home_assistant_config' EDIT_VIEW_NAME = 'edit_home_assistant_config'
@ -19,25 +20,31 @@ def home_assistant_config_obj(a1_s1, space_1):
) )
def test_edit_home_assistant_config(home_assistant_config_obj, a1_s1, a1_s2): def test_edit_home_assistant_config(home_assistant_config_obj: HomeAssistantConfig, a1_s1, a1_s2):
new_token = '1234_token' new_token = '1234_token'
r = a1_s1.post( r = a1_s1.post(
reverse(EDIT_VIEW_NAME, args={home_assistant_config_obj.pk}), reverse(EDIT_VIEW_NAME, args={home_assistant_config_obj.pk}),
{ {
'name': 'HomeAssistant 1', 'name': home_assistant_config_obj.name,
'url': home_assistant_config_obj.url,
'todo_entity': home_assistant_config_obj.todo_entity,
'token': new_token, 'token': new_token,
'enabled': home_assistant_config_obj.enabled,
} }
) )
home_assistant_config_obj.refresh_from_db()
assert r.status_code == 200 assert r.status_code == 200
home_assistant_config_obj.refresh_from_db()
assert home_assistant_config_obj.token == new_token assert home_assistant_config_obj.token == new_token
r = a1_s2.post( r = a1_s2.post(
reverse(EDIT_VIEW_NAME, args={home_assistant_config_obj.pk}), reverse(EDIT_VIEW_NAME, args={home_assistant_config_obj.pk}),
{ {
'name': 'HomeAssistant 1', 'name': home_assistant_config_obj.name,
'url': home_assistant_config_obj.url,
'todo_entity': home_assistant_config_obj.todo_entity,
'token': new_token, 'token': new_token,
'enabled': home_assistant_config_obj.enabled,
} }
) )
assert r.status_code == 404 assert r.status_code == 404