41 lines
1.0 KiB
Python
41 lines
1.0 KiB
Python
import os
|
|
import unittest
|
|
|
|
from websockets.protocol import State
|
|
|
|
from core.websocket_client_v2 import QingjianAPIClient
|
|
|
|
|
|
class _DummyWS:
|
|
def __init__(self):
|
|
self.state = State.OPEN
|
|
self.sent = []
|
|
|
|
async def send(self, msg_json: str):
|
|
self.sent.append(msg_json)
|
|
|
|
|
|
class OutboundCooldownTest(unittest.IsolatedAsyncioTestCase):
|
|
def setUp(self):
|
|
os.environ["OUTBOUND_PER_CUSTOMER_COOLDOWN_SECONDS"] = "5"
|
|
|
|
async def test_skip_second_reply_within_cooldown(self):
|
|
c = QingjianAPIClient(enable_agent=False)
|
|
c.websocket = _DummyWS()
|
|
msg = {
|
|
"acc_id": "shop_a",
|
|
"from_id": "u001",
|
|
"from_name": "u001",
|
|
"acc_type": "AliWorkbench",
|
|
}
|
|
await c.send_reply(msg, "第一条")
|
|
await c.send_reply(msg, "第二条")
|
|
self.assertEqual(len(c.websocket.sent), 1)
|
|
|
|
def tearDown(self):
|
|
os.environ.pop("OUTBOUND_PER_CUSTOMER_COOLDOWN_SECONDS", None)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main(verbosity=2)
|