Common: Only send event to `subscribe_all()` subscribers once
This commit is contained in:
parent
49a28b9161
commit
7bbecc4d3f
|
@ -13,14 +13,8 @@ class PyPubSubEventQueue(IEventQueue):
|
||||||
self._pypubsub_publisher = pypubsub_publisher
|
self._pypubsub_publisher = pypubsub_publisher
|
||||||
|
|
||||||
def subscribe_all(self, subscriber: Callable[[AbstractEvent], None]):
|
def subscribe_all(self, subscriber: Callable[[AbstractEvent], None]):
|
||||||
# From the documentation (https://pypubsub.readthedocs.io/en/v4.0.3/usage/
|
|
||||||
# usage_advanced_debug.html#listen-for-messages-from-all-topics):
|
|
||||||
# "PyPubSub defines a special topic named pub.ALL_TOPICS. A listener that subscribes
|
|
||||||
# to this topic will receives all messages of every topic. By default, the listener
|
|
||||||
# will not receive any data since pub.ALL_TOPICS is the parent of all root topics (...)"
|
|
||||||
|
|
||||||
self._pypubsub_publisher.subscribe(
|
self._pypubsub_publisher.subscribe(
|
||||||
listener=subscriber, topicName=self._pypubsub_publisher.ALL_TOPICS
|
listener=subscriber, topicName=INTERNAL_ALL_EVENT_TYPES_TOPIC
|
||||||
)
|
)
|
||||||
|
|
||||||
def subscribe_type(
|
def subscribe_type(
|
||||||
|
|
|
@ -64,18 +64,16 @@ def test_topic_subscription(subscriber_1, subscriber_2, subscriber_1_calls, subs
|
||||||
def test_subscribe_all():
|
def test_subscribe_all():
|
||||||
subscriber_calls = []
|
subscriber_calls = []
|
||||||
|
|
||||||
def subscriber(topic=pub.AUTO_TOPIC):
|
def subscriber(event, topic=pub.AUTO_TOPIC):
|
||||||
subscriber_calls.append(topic.getName())
|
subscriber_calls.append(topic.getName())
|
||||||
|
|
||||||
pypubsub_event_queue.subscribe_all(subscriber)
|
pypubsub_event_queue.subscribe_all(subscriber)
|
||||||
pypubsub_event_queue.publish(EventType)
|
pypubsub_event_queue.publish(EventType)
|
||||||
|
|
||||||
assert subscriber_calls == [
|
assert len(subscriber_calls) == 1
|
||||||
EventType.__name__,
|
assert EventType.__name__ not in subscriber_calls
|
||||||
INTERNAL_ALL_EVENT_TYPES_TOPIC,
|
assert EVENT_TAG_1 not in subscriber_calls
|
||||||
EVENT_TAG_1,
|
assert EVENT_TAG_2 not in subscriber_calls
|
||||||
EVENT_TAG_2,
|
|
||||||
]
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.usefixtures("subscriber_1", "subscriber_1_calls")
|
@pytest.mark.usefixtures("subscriber_1", "subscriber_1_calls")
|
||||||
|
|
Loading…
Reference in New Issue