53 lines
2.0 KiB
Python
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, [])
|