Test: adding checkpoint for passing test

This commit is contained in:
Patrick Stewart 2024-10-05 19:43:53 -07:00
parent 3ab3a4261c
commit 96984ea7da

View file

@ -5,6 +5,7 @@ import 'package:angel3_container/angel3_container.dart';
import 'package:angel3_event_bus/event_bus.dart'; import 'package:angel3_event_bus/event_bus.dart';
import 'package:angel3_mq/mq.dart'; import 'package:angel3_mq/mq.dart';
import 'package:angel3_queue/src/queue.dart'; import 'package:angel3_queue/src/queue.dart';
//import 'package:angel3_queue/src/invalid_payload_exception.dart';
import 'queue_test.mocks.dart'; import 'queue_test.mocks.dart';
@GenerateMocks([Container, MQClient, TransactionManager]) @GenerateMocks([Container, MQClient, TransactionManager])
@ -15,7 +16,6 @@ void main() {
late TestQueue queue; late TestQueue queue;
setUpAll(() { setUpAll(() {
// Provide a dummy EventBus for Mockito to use
provideDummy<EventBus>(DummyEventBus()); provideDummy<EventBus>(DummyEventBus());
}); });
@ -25,7 +25,6 @@ void main() {
mq = MockMQClient(); mq = MockMQClient();
queue = TestQueue(container, eventBus, mq); queue = TestQueue(container, eventBus, mq);
// Basic setup
when(container.has<EventBus>()).thenReturn(true); when(container.has<EventBus>()).thenReturn(true);
when(container.has<TransactionManager>()).thenReturn(false); when(container.has<TransactionManager>()).thenReturn(false);
when(container.make<EventBus>()).thenReturn(eventBus); when(container.make<EventBus>()).thenReturn(eventBus);
@ -41,14 +40,28 @@ void main() {
'test_queue', Duration(minutes: 5), 'test_job', 'test_data'); 'test_queue', Duration(minutes: 5), 'test_job', 'test_data');
expect(result, equals('pushed later')); expect(result, equals('pushed later'));
}); });
test('bulk pushes multiple jobs', () async {
await queue.bulk(['job1', 'job2', 'job3'], 'test_data', 'test_queue');
expect(queue.pushedJobs.length, equals(3));
expect(queue.pushedJobs, containsAll(['job1', 'job2', 'job3']));
});
test('createPayload throws InvalidPayloadException for invalid job', () {
expect(() => queue.createPayload({}, 'test_queue'),
throwsA(isA<InvalidPayloadException>()));
});
} }
class TestQueue extends Queue { class TestQueue extends Queue {
List<dynamic> pushedJobs = [];
TestQueue(Container container, EventBus eventBus, MQClient mq) TestQueue(Container container, EventBus eventBus, MQClient mq)
: super(container, eventBus, mq); : super(container, eventBus, mq);
@override @override
Future<dynamic> push(dynamic job, [dynamic data = '', String? queue]) async { Future<dynamic> push(dynamic job, [dynamic data = '', String? queue]) async {
pushedJobs.add(job);
return 'pushed'; return 'pushed';
} }
@ -57,9 +70,25 @@ class TestQueue extends Queue {
[dynamic data = '', String? queue]) async { [dynamic data = '', String? queue]) async {
return 'pushed later'; return 'pushed later';
} }
@override
Future<String> createPayload(dynamic job, String queue,
[dynamic data = '']) async {
if (job is Map && job.isEmpty) {
throw InvalidPayloadException('Invalid job: empty map');
}
return 'valid payload';
}
} }
class DummyEventBus implements EventBus { class DummyEventBus implements EventBus {
@override @override
dynamic noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation); dynamic noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation);
} }
class InvalidPayloadException implements Exception {
final String message;
InvalidPayloadException(this.message);
@override
String toString() => 'InvalidPayloadException: $message';
}