This repository has been archived on 2025-07-31. You can view files and clone it, but cannot push or open issues or pull requests.
Files
fbchat/tests/test_thread.py
2020-01-13 11:39:09 +01:00

80 lines
2.8 KiB
Python

import pytest
import fbchat
from fbchat import ThreadABC, Thread, User, Group, Page
def test_parse_color():
assert "#0084ff" == ThreadABC._parse_color(None)
assert "#0084ff" == ThreadABC._parse_color("")
assert "#44bec7" == ThreadABC._parse_color("FF44BEC7")
assert "#adbeef" == ThreadABC._parse_color("DEADBEEF")
def test_thread_parse_customization_info_empty():
default = {"color": "#0084ff", "emoji": None}
assert default == ThreadABC._parse_customization_info(None)
assert default == ThreadABC._parse_customization_info({"customization_info": None})
def test_thread_parse_customization_info_group():
data = {
"thread_key": {"thread_fbid": "11111", "other_user_id": None},
"customization_info": {
"emoji": "🎉",
"participant_customizations": [
{"participant_id": "123456789", "nickname": "A"},
{"participant_id": "987654321", "nickname": "B"},
],
"outgoing_bubble_color": "FFFF5CA1",
},
"customization_enabled": True,
"thread_type": "GROUP",
# ... Other irrelevant fields
}
expected = {
"emoji": "🎉",
"color": "#ff5ca1",
"nicknames": {"123456789": "A", "987654321": "B"},
}
assert expected == ThreadABC._parse_customization_info(data)
def test_thread_parse_customization_info_user():
data = {
"thread_key": {"thread_fbid": None, "other_user_id": "987654321"},
"customization_info": {
"emoji": None,
"participant_customizations": [
{"participant_id": "123456789", "nickname": "A"},
{"participant_id": "987654321", "nickname": "B"},
],
"outgoing_bubble_color": None,
},
"customization_enabled": True,
"thread_type": "ONE_TO_ONE",
# ... Other irrelevant fields
}
expected = {"emoji": None, "color": "#0084ff", "own_nickname": "A", "nickname": "B"}
assert expected == ThreadABC._parse_customization_info(data)
def test_thread_parse_participants(session):
nodes = [
{"messaging_actor": {"__typename": "User", "id": "1234"}},
{"messaging_actor": {"__typename": "User", "id": "2345"}},
{"messaging_actor": {"__typename": "Page", "id": "3456"}},
{"messaging_actor": {"__typename": "MessageThread", "id": "4567"}},
{"messaging_actor": {"__typename": "UnavailableMessagingActor", "id": "5678"}},
]
assert [
User(session=session, id="1234"),
User(session=session, id="2345"),
Page(session=session, id="3456"),
Group(session=session, id="4567"),
] == list(ThreadABC._parse_participants(session, {"nodes": nodes}))
def test_thread_create_and_implements_thread_abc(session):
thread = Thread(session=session, id="123")
assert thread._parse_customization_info