Skip to content

Commit

Permalink
feat: operation tests
Browse files Browse the repository at this point in the history
  • Loading branch information
arxdeus committed Mar 9, 2025
1 parent 8893912 commit 2eaef4d
Show file tree
Hide file tree
Showing 3 changed files with 66 additions and 1 deletion.
59 changes: 59 additions & 0 deletions packages/modulisto/test/operation_test.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
import 'package:modulisto/modulisto.dart';
import 'package:test/test.dart';

import 'util/dummy_module.dart';

void main() {
group('operation tests', () {
test('react on operation', () async {
const targetNumber = 123;
final dummy = DummyModule();
final trigger = Trigger<int>(dummy);
final store = Store<int>(dummy, 0);

Future<int> someNumber(int test) => dummy.runOperation(#test1, () => Future.value(test));

final pipeline = Pipeline.sync(
dummy,
($) => $
..unit(trigger).bind(
(context, value) => context.update(store, value),
)
..operationOnType<int>(#test1).redirect(trigger.call),
);

Module.initialize(dummy, attach: {pipeline});

final number = await someNumber(targetNumber);
expect(number, targetNumber);
expect(number, isNot(0));
expect(number, equals(store.value));
});
test('disable reactions after module dispose', () async {
const targetNumber = 123;
final dummy = DummyModule();
final trigger = Trigger<int>(dummy);
final store = Store<int>(dummy, 0);

Future<int> someNumber(int test) => dummy.runOperation(#test1, () => Future.value(test));

final pipeline = Pipeline.sync(
dummy,
($) => $
..unit(trigger).bind(
(context, value) => context.update(store, value),
)
..operationOnType<int>(#test1).redirect(trigger.call),
);

Module.initialize(dummy, attach: {pipeline});

await dummy.dispose();

final number = await someNumber(targetNumber);
expect(number, targetNumber);
expect(store.value, isNot(number));
expect(store.value, equals(0));
});
});
}
4 changes: 3 additions & 1 deletion packages/modulisto/test/util/dummy_module.dart
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import 'package:modulisto/modulisto.dart';

final class DummyModule extends Module {}
final class DummyModule extends Module {
Future<T> runOperation<T>(Symbol operationId, Future<T> Function() callback) => Operation(operationId, callback);
}
4 changes: 4 additions & 0 deletions packages/modulisto/test/util/mock_module.dart
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,10 @@ import 'package:modulisto/modulisto.dart';
final createModule = ({
required EventTransformer eventTransformer,
Duration? delayBetweenEvents,
String? debugName,
}) =>
TestCounter(
debugName: debugName,
eventTransformer: eventTransformer,
delayBetweenEvents: delayBetweenEvents,
);
Expand All @@ -14,9 +16,11 @@ base class TestCounter extends Module {
TestCounter({
required this.eventTransformer,
this.delayBetweenEvents,
String? debugName,
}) {
Module.initialize(
this,
debugName: debugName,
attach: {
_defaultPipeline,
},
Expand Down

0 comments on commit 2eaef4d

Please sign in to comment.