bec/scan_bundler/tests/test_bec_emitter.py
Ivan Usov 06f2d781ae refactor: rename module BECMessage -> messages
This should help to avoid confusion between BECMessage module and
BECMessage class located in the same module
2023-11-10 10:28:53 +01:00

76 lines
2.3 KiB
Python

from unittest import mock
from bec_lib import messages
from test_scan_bundler import load_ScanBundlerMock
from bec_lib import MessageEndpoints
from scan_bundler.bec_emitter import BECEmitter
def test_on_scan_point_emit_BEC():
sb = load_ScanBundlerMock()
bec_emitter = BECEmitter(sb)
with mock.patch.object(bec_emitter, "_send_bec_scan_point") as send:
bec_emitter.on_scan_point_emit("scanID", 2)
send.assert_called_once_with("scanID", 2)
def test_on_baseline_emit_BEC():
sb = load_ScanBundlerMock()
bec_emitter = BECEmitter(sb)
with mock.patch.object(bec_emitter, "_send_baseline") as send:
bec_emitter.on_baseline_emit("scanID")
send.assert_called_once_with("scanID")
def test_send_bec_scan_point():
sb = load_ScanBundlerMock()
bec_emitter = BECEmitter(sb)
scanID = "lkajsdlkj"
pointID = 2
sb.sync_storage[scanID] = {"info": {}, "status": "open", "sent": set()}
sb.sync_storage[scanID][pointID] = {}
msg = messages.ScanMessage(
point_id=pointID,
scanID=scanID,
data=sb.sync_storage[scanID][pointID],
metadata=sb.sync_storage[scanID]["info"],
)
with mock.patch.object(bec_emitter, "add_message") as send:
bec_emitter._send_bec_scan_point(scanID, pointID)
send.assert_called_once_with(
msg,
MessageEndpoints.scan_segment(),
MessageEndpoints.public_scan_segment(scanID, pointID),
)
def test_send_baseline_BEC():
sb = load_ScanBundlerMock()
bec_emitter = BECEmitter(sb)
scanID = "lkajsdlkj"
sb.sync_storage[scanID] = {"info": {}, "status": "open", "sent": set()}
sb.sync_storage[scanID]["baseline"] = {}
msg = messages.ScanBaselineMessage(
scanID=scanID, data=sb.sync_storage[scanID]["baseline"]
).dumps()
with mock.patch.object(sb, "producer") as producer:
bec_emitter._send_baseline(scanID)
pipe = producer.pipeline()
producer.set.assert_called_once_with(
MessageEndpoints.public_scan_baseline(scanID),
msg,
expire=1800,
pipe=pipe,
)
producer.set_and_publish.assert_called_once_with(
MessageEndpoints.scan_baseline(),
msg,
pipe=pipe,
)