Skip to content

Commit a4a57a7

Browse files
committed
fix MessageCache.listen_to()
1 parent b0f4c95 commit a4a57a7

File tree

4 files changed

+29
-13
lines changed

4 files changed

+29
-13
lines changed

src/aleph/sdk/base.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
MessageType,
2424
PostMessage,
2525
)
26-
from aleph_message.models.program import Encoding
26+
from aleph_message.models.execution.program import Encoding
2727
from aleph_message.status import MessageStatus
2828

2929
from aleph.sdk.types import GenericMessage, StorageEnum

src/aleph/sdk/cache.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,7 @@ def __str__(self) -> str:
168168
return repr(self)
169169

170170
def add(self, messages: Union[AlephMessage, Iterable[AlephMessage]]):
171-
if not isinstance(messages, Iterable):
171+
if isinstance(messages, AlephMessage):
172172
messages = [messages]
173173

174174
data_source = (message_to_model(message) for message in messages)

src/aleph/sdk/client.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@
4949

5050
from aleph.sdk.types import Account, GenericMessage, StorageEnum
5151
from aleph.sdk.utils import Writable, copy_async_readable_to_buffer
52+
from .base import AlephClientBase, AuthenticatedAlephClientBase
5253

5354
from .conf import settings
5455
from .exceptions import (

tests/unit/test_cache.py

Lines changed: 26 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
import asyncio
2+
import json
3+
from hashlib import sha256
24

35
import pytest
6+
from aleph_message.models import AlephMessage, PostMessage, PostContent, MessageType, Chain
47

58
from aleph.sdk.cache import MessageCache
69
from aleph.sdk.chains.ethereum import get_fallback_account
@@ -46,15 +49,27 @@ async def test_message_cache():
4649

4750
@pytest.mark.asyncio
4851
async def test_message_cache_listener():
49-
auth_session = AuthenticatedAlephClient(get_fallback_account(), settings.API_HOST)
52+
async def mock_message_stream():
53+
for i in range(3):
54+
content = PostContent(
55+
content={"hello": f"world{i}"},
56+
type="test",
57+
address=get_fallback_account().get_address(),
58+
time=0,
59+
)
60+
message = PostMessage(
61+
sender=get_fallback_account().get_address(),
62+
item_hash=sha256(json.dumps(content.dict()).encode()).hexdigest(),
63+
chain=Chain.ETH.value,
64+
type=MessageType.post.value,
65+
item_type="inline",
66+
time=0,
67+
content=content,
68+
item_content=json.dumps(content.dict()),
69+
)
70+
yield message
5071
cache = MessageCache()
51-
# test listen until first message
52-
coro = cache.listen_to(auth_session.watch_messages())
53-
task = asyncio.create_task(coro)
54-
before = len(cache)
55-
# send message
56-
await auth_session.create_aggregate("test", {"test": "test"})
57-
await asyncio.sleep(2) # wait for message to be received
58-
task.cancel()
59-
after = len(cache)
60-
assert after > before
72+
# test listener
73+
coro = cache.listen_to(mock_message_stream())
74+
await coro
75+
assert len(cache) == 3

0 commit comments

Comments
 (0)