platform/sandbox/mqueue/test/exchange/fanout_exchange_test.dart
2024-11-12 01:00:05 -07:00

69 lines
2.3 KiB
Dart

import 'package:angel3_mq/src/exchange/fanout_exchange.dart';
import 'package:angel3_mq/src/message/message.dart';
import 'package:angel3_mq/src/queue/queue.dart';
import 'package:test/test.dart';
void main() {
group('FanoutExchange', () {
test('bindQueue should add a queue to the exchange', () {
final fanoutExchange = FanoutExchange('my_fanout_exchange');
final queue1 = Queue('queue_1');
final queue2 = Queue('queue_2');
fanoutExchange
..bindQueue(queue: queue1, bindingKey: 'binding_key_1')
..bindQueue(queue: queue2, bindingKey: 'binding_key_2');
expect(fanoutExchange.bindings.get('').hasQueues(), isTrue);
});
test('unbindQueue should remove a queue from the exchange', () {
final fanoutExchange = FanoutExchange('my_fanout_exchange');
final queue1 = Queue('queue_1');
final queue2 = Queue('queue_2');
fanoutExchange
..bindQueue(queue: queue1, bindingKey: 'binding_key_1')
..bindQueue(queue: queue2, bindingKey: 'binding_key_2')
..unbindQueue(queueId: 'queue_1', bindingKey: 'binding_key_1')
..unbindQueue(queueId: 'queue_2', bindingKey: 'binding_key_2');
expect(fanoutExchange.bindings.get('').hasQueues(), isFalse);
});
test('forwardMessage should forward a message to all associated queues',
() {
final fanoutExchange = FanoutExchange('my_fanout_exchange');
final queue1 = Queue('queue_1');
final queue2 = Queue('queue_2');
fanoutExchange
..bindQueue(queue: queue1, bindingKey: 'binding_key_1')
..bindQueue(queue: queue2, bindingKey: 'binding_key_2');
final message = Message(
headers: {'contentType': 'json', 'sender': 'Alice'},
payload: {'text': 'Hello, World!'},
timestamp: '2023-09-07T12:00:002',
);
fanoutExchange.forwardMessage(message: message);
expect(queue1.latestMessage, equals(message));
expect(queue2.latestMessage, equals(message));
});
test('removeQueue removes a queue from all bindings', () {
final queue1 = Queue('queue_1');
final fanoutExchange = FanoutExchange('my_fanout_exchange')
..bindQueue(queue: queue1, bindingKey: '')
..unbindQueue(
queueId: queue1.id,
bindingKey: '',
);
expect(fanoutExchange.bindings.get('').hasQueues(), isFalse);
});
});
}