factory/apps/wpm/tests/test_equipment_log_options.py

53 lines
2.0 KiB
Python

from unittest.mock import MagicMock, patch
from django.test import SimpleTestCase
from apps.wpm.services import get_recent_mgroup_equipment_ids
class RecentMgroupEquipmentTests(SimpleTestCase):
@patch("apps.wpm.services.Mlog")
def test_collects_all_equipment_fields_in_log_order_without_duplicates(
self, mlog
):
log_queryset = MagicMock()
mlog.objects.filter.return_value = log_queryset
log_queryset.order_by.return_value.values_list.return_value.__getitem__.return_value = [
("log-new", "equipment-a", None),
("log-middle", "equipment-b", "equipment-a"),
("log-empty", None, None),
]
through_queryset = MagicMock()
mlog.equipments.through.objects.filter.return_value = through_queryset
through_queryset.order_by.return_value.values_list.return_value = [
("log-new", "equipment-c"),
("log-middle", "equipment-c"),
("log-middle", "equipment-d"),
]
result = get_recent_mgroup_equipment_ids("mgroup-1", log_limit=50)
self.assertEqual(
result,
["equipment-a", "equipment-c", "equipment-b", "equipment-d"],
)
log_queryset.order_by.return_value.values_list.return_value.__getitem__.assert_called_once_with(
slice(None, 50, None)
)
@patch("apps.wpm.services.Mlog")
def test_returns_empty_when_recent_logs_have_no_equipment(self, mlog):
log_queryset = MagicMock()
mlog.objects.filter.return_value = log_queryset
log_queryset.order_by.return_value.values_list.return_value.__getitem__.return_value = [
("log-1", None, None),
("log-2", None, None),
]
through_queryset = MagicMock()
mlog.equipments.through.objects.filter.return_value = through_queryset
through_queryset.order_by.return_value.values_list.return_value = []
result = get_recent_mgroup_equipment_ids("mgroup-1")
self.assertEqual(result, [])