69 lines
2.3 KiB
Dart
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);
|
|
});
|
|
});
|
|
}
|