Merge pull request #17 from daily-co/start_tests
Add some basic daily_transport tests
This commit is contained in:
@@ -2,14 +2,13 @@ import asyncio
|
|||||||
import inspect
|
import inspect
|
||||||
import itertools
|
import itertools
|
||||||
import logging
|
import logging
|
||||||
import sys
|
|
||||||
import threading
|
import threading
|
||||||
import time
|
import time
|
||||||
import types
|
import types
|
||||||
|
|
||||||
from functools import partial
|
from functools import partial
|
||||||
from queue import Queue, Empty
|
from queue import Queue, Empty
|
||||||
from typing import AsyncGenerator, Iterable
|
from typing import AsyncGenerator
|
||||||
|
|
||||||
from dailyai.queue_frame import (
|
from dailyai.queue_frame import (
|
||||||
AudioQueueFrame,
|
AudioQueueFrame,
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
from re import A
|
|
||||||
import unittest
|
import unittest
|
||||||
|
|
||||||
from typing import AsyncGenerator, Generator
|
from typing import AsyncGenerator, Generator
|
||||||
|
|||||||
76
src/dailyai/tests/test_daily_transport_service.py
Normal file
76
src/dailyai/tests/test_daily_transport_service.py
Normal file
@@ -0,0 +1,76 @@
|
|||||||
|
import asyncio
|
||||||
|
import unittest
|
||||||
|
|
||||||
|
from unittest.mock import MagicMock, patch
|
||||||
|
|
||||||
|
from dailyai.queue_frame import AudioQueueFrame, ImageQueueFrame
|
||||||
|
|
||||||
|
|
||||||
|
class TestDailyTransport(unittest.IsolatedAsyncioTestCase):
|
||||||
|
|
||||||
|
async def test_event_handler(self):
|
||||||
|
from dailyai.services.daily_transport_service import DailyTransportService
|
||||||
|
|
||||||
|
transport = DailyTransportService("mock.daily.co/mock", "token", "bot")
|
||||||
|
|
||||||
|
was_called = False
|
||||||
|
|
||||||
|
@transport.event_handler("on_first_other_participant_joined")
|
||||||
|
def test_event_handler(transport):
|
||||||
|
nonlocal was_called
|
||||||
|
was_called = True
|
||||||
|
|
||||||
|
transport.on_first_other_participant_joined()
|
||||||
|
|
||||||
|
self.assertTrue(was_called)
|
||||||
|
|
||||||
|
async def test_event_handler_async(self):
|
||||||
|
from dailyai.services.daily_transport_service import DailyTransportService
|
||||||
|
|
||||||
|
transport = DailyTransportService("mock.daily.co/mock", "token", "bot")
|
||||||
|
|
||||||
|
event = asyncio.Event()
|
||||||
|
|
||||||
|
@transport.event_handler("on_first_other_participant_joined")
|
||||||
|
async def test_event_handler(transport):
|
||||||
|
nonlocal event
|
||||||
|
await asyncio.sleep(0.1)
|
||||||
|
event.set()
|
||||||
|
|
||||||
|
transport.on_first_other_participant_joined()
|
||||||
|
|
||||||
|
await asyncio.wait_for(event.wait(), timeout=1)
|
||||||
|
self.assertTrue(event.is_set())
|
||||||
|
|
||||||
|
@patch("dailyai.services.daily_transport_service.CallClient")
|
||||||
|
@patch("dailyai.services.daily_transport_service.Daily")
|
||||||
|
async def test_run_with_camera_and_mic(self, daily_mock, callclient_mock):
|
||||||
|
from dailyai.services.daily_transport_service import DailyTransportService
|
||||||
|
transport = DailyTransportService("https://mock.daily.co/mock", "token", "bot", 0.01)
|
||||||
|
transport.mic_enabled = True
|
||||||
|
transport.camera_enabled = True
|
||||||
|
|
||||||
|
mic = MagicMock()
|
||||||
|
camera = MagicMock()
|
||||||
|
daily_mock.create_microphone_device.return_value = mic
|
||||||
|
daily_mock.create_camera_device.return_value = camera
|
||||||
|
|
||||||
|
async def send_audio_frame():
|
||||||
|
await transport.send_queue.put(AudioQueueFrame(bytes([0] * 3300)))
|
||||||
|
|
||||||
|
async def send_video_frame():
|
||||||
|
await transport.send_queue.put(ImageQueueFrame(None, b"test"))
|
||||||
|
|
||||||
|
await asyncio.gather(transport.run(), send_audio_frame(), send_video_frame())
|
||||||
|
|
||||||
|
daily_mock.init.assert_called_once_with()
|
||||||
|
daily_mock.create_microphone_device.assert_called_once()
|
||||||
|
daily_mock.create_camera_device.assert_called_once()
|
||||||
|
|
||||||
|
callclient_mock.return_value.set_user_name.assert_called_once_with("bot")
|
||||||
|
callclient_mock.return_value.join.assert_called_once_with(
|
||||||
|
"https://mock.daily.co/mock", "token", completion=transport.call_joined
|
||||||
|
)
|
||||||
|
|
||||||
|
camera.write_frame.assert_called_with(b"test")
|
||||||
|
mic.write_frames.assert_called()
|
||||||
Reference in New Issue
Block a user