|
8 | 8 | from symphony.bdk.core.service.message.model import Message
|
9 | 9 | from symphony.bdk.core.service.message.multi_attachments_messages_api import MultiAttachmentsMessagesApi
|
10 | 10 | from symphony.bdk.gen.agent_api.attachments_api import AttachmentsApi
|
| 11 | +from symphony.bdk.gen.agent_model.message_search_query import MessageSearchQuery |
11 | 12 | from symphony.bdk.gen.agent_model.v4_import_response_list import V4ImportResponseList
|
12 | 13 | from symphony.bdk.gen.agent_model.v4_imported_message import V4ImportedMessage
|
13 | 14 | from symphony.bdk.gen.agent_model.v4_message import V4Message
|
@@ -324,3 +325,90 @@ async def test_get_message_relationships(mocked_api_client, message_service):
|
324 | 325 | assert message_relationships.message_id == "TYgOZ65dVsu3SeK7u2YdfH///o6fzBu"
|
325 | 326 | assert message_relationships.parent.message_id == "/rbLQW5UHKZffM0FlLO2rn///o6vTck"
|
326 | 327 | assert message_relationships.parent.relationship_type == "REPLY"
|
| 328 | + |
| 329 | + |
| 330 | +@pytest.mark.asyncio |
| 331 | +async def test_search_messages_with_hashtag(mocked_api_client, message_service): |
| 332 | + mocked_api_client.call_api.return_value = \ |
| 333 | + get_deserialized_object_from_resource(V4MessageList, "message_response/list_messages.json") |
| 334 | + |
| 335 | + messages = await message_service.search_messages(MessageSearchQuery(hashtag="tag")) |
| 336 | + assert len(messages) == 1 |
| 337 | + assert messages[0].message_id == "test-message1" |
| 338 | + |
| 339 | + |
| 340 | +@pytest.mark.asyncio |
| 341 | +@pytest.mark.parametrize("stream_type", ["CHAT", "IM", "MIM", "ROOM", "POST"]) |
| 342 | +async def test_search_messages_with_valid_stream_type(mocked_api_client, message_service, stream_type): |
| 343 | + mocked_api_client.call_api.return_value = \ |
| 344 | + get_deserialized_object_from_resource(V4MessageList, "message_response/list_messages.json") |
| 345 | + |
| 346 | + messages = await message_service.search_messages(MessageSearchQuery(stream_type=stream_type)) |
| 347 | + assert len(messages) == 1 |
| 348 | + assert messages[0].message_id == "test-message1" |
| 349 | + |
| 350 | + |
| 351 | +@pytest.mark.asyncio |
| 352 | +async def test_search_messages_with_invalid_stream_type(mocked_api_client, message_service): |
| 353 | + mocked_api_client.call_api.return_value = \ |
| 354 | + get_deserialized_object_from_resource(V4MessageList, "message_response/list_messages.json") |
| 355 | + |
| 356 | + with pytest.raises(ValueError): |
| 357 | + await message_service.search_messages(MessageSearchQuery(stream_type="invalid")) |
| 358 | + |
| 359 | + |
| 360 | +@pytest.mark.asyncio |
| 361 | +async def test_search_messages_with_text_and_sid(mocked_api_client, message_service): |
| 362 | + mocked_api_client.call_api.return_value = \ |
| 363 | + get_deserialized_object_from_resource(V4MessageList, "message_response/list_messages.json") |
| 364 | + |
| 365 | + messages = await message_service.search_messages(MessageSearchQuery(text="some text", stream_id="sid")) |
| 366 | + assert len(messages) == 1 |
| 367 | + assert messages[0].message_id == "test-message1" |
| 368 | + |
| 369 | + |
| 370 | +@pytest.mark.asyncio |
| 371 | +async def test_search_messages_with_text_and_no_sid(mocked_api_client, message_service): |
| 372 | + mocked_api_client.call_api.return_value = \ |
| 373 | + get_deserialized_object_from_resource(V4MessageList, "message_response/list_messages.json") |
| 374 | + |
| 375 | + with pytest.raises(ValueError): |
| 376 | + await message_service.search_messages(MessageSearchQuery(text="some text")) |
| 377 | + |
| 378 | + |
| 379 | +@pytest.mark.asyncio |
| 380 | +@pytest.mark.parametrize("stream_type", ["CHAT", "IM", "MIM", "ROOM", "POST"]) |
| 381 | +async def test_search_messages_with_stream_type_text_and_sid(mocked_api_client, message_service, stream_type): |
| 382 | + mocked_api_client.call_api.return_value = \ |
| 383 | + get_deserialized_object_from_resource(V4MessageList, "message_response/list_messages.json") |
| 384 | + |
| 385 | + messages = await message_service.search_messages( |
| 386 | + MessageSearchQuery(text="some text", stream_id="sid", stream_type=stream_type)) |
| 387 | + assert len(messages) == 1 |
| 388 | + assert messages[0].message_id == "test-message1" |
| 389 | + |
| 390 | + |
| 391 | +@pytest.mark.asyncio |
| 392 | +@pytest.mark.parametrize("stream_type", ["CHAT", "IM", "MIM", "ROOM", "POST"]) |
| 393 | +async def test_search_messages_with_stream_type_text_and_no_sid(mocked_api_client, message_service, stream_type): |
| 394 | + mocked_api_client.call_api.return_value = \ |
| 395 | + get_deserialized_object_from_resource(V4MessageList, "message_response/list_messages.json") |
| 396 | + |
| 397 | + with pytest.raises(ValueError): |
| 398 | + await message_service.search_messages(MessageSearchQuery(text="some text", stream_type=stream_type)) |
| 399 | + |
| 400 | + |
| 401 | +@pytest.mark.asyncio |
| 402 | +async def test_search_all_messages(mocked_api_client, message_service): |
| 403 | + mocked_api_client.call_api.side_effect = \ |
| 404 | + [get_deserialized_object_from_resource(V4MessageList, "message_response/list_messages.json"), |
| 405 | + V4MessageList(value=[])] |
| 406 | + chunk_size = 1 |
| 407 | + |
| 408 | + message_generator = await message_service.search_all_messages(MessageSearchQuery(hashtag="tag"), |
| 409 | + chunk_size=chunk_size) |
| 410 | + messages = [m async for m in message_generator] |
| 411 | + assert len(messages) == 1 |
| 412 | + assert messages[0].message_id == "test-message1" |
| 413 | + |
| 414 | + assert mocked_api_client.call_api.call_count == 2 |
0 commit comments