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.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
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):
@ -35,7 +36,7 @@ class Work:
class ConnectorManager:
_queue: Queue
_listening_to_classes = REGISTERED_CLASSES
_listening_to_classes = REGISTERED_CLASSES | CONNECTOR_UPDATE_CLASSES
def __init__(self):
self._queue = multiprocessing.Queue(maxsize=QUEUE_MAX_SIZE)
@ -81,10 +82,10 @@ class ConnectorManager:
break
# 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
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:
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.urls import reverse
import pytest
from cookbook.models import HomeAssistantConfig
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'
r = a1_s1.post(
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,
'enabled': home_assistant_config_obj.enabled,
}
)
home_assistant_config_obj.refresh_from_db()
assert r.status_code == 200
home_assistant_config_obj.refresh_from_db()
assert home_assistant_config_obj.token == new_token
r = a1_s2.post(
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,
'enabled': home_assistant_config_obj.enabled,
}
)
assert r.status_code == 404