Skip to content

Commit

Permalink
feat: add data registries
Browse files Browse the repository at this point in the history
  • Loading branch information
luisburgos committed Aug 6, 2022
1 parent 13bfe39 commit 230e390
Show file tree
Hide file tree
Showing 4 changed files with 38 additions and 8 deletions.
2 changes: 1 addition & 1 deletion example/lib/shared/modules/profile/module_registry.dart
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import 'commands/change_user_name_command.dart';
import 'data/profile_repository.dart';
import 'presentation/ui_event.dart';

class ProfileModuleRegistries extends ModuleBuzzRegistries {
class ProfileModuleRegistries extends BuzzEventHandlersRegistries {
ProfileModuleRegistries(this.findRepository);

final IProfileRepository Function() findRepository;
Expand Down
6 changes: 3 additions & 3 deletions lib/buzz_impl.dart
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ abstract class IBuzzBase {
void init({
required Navigator navigator,
FeedbacksExecutor? feedbacksExecutor,
List<ModuleBuzzRegistries>? moduleRegistries,
List<BuzzEventHandlersRegistries>? moduleRegistries,
});

void fire(dynamic message);
Expand All @@ -50,13 +50,13 @@ class BuzzBase implements IBuzzBase {

late Navigator _navigator;
late FeedbacksExecutor _feedbacksExecutor;
List<ModuleBuzzRegistries>? _moduleRegistries;
List<BuzzEventHandlersRegistries>? _moduleRegistries;

@override
void init({
required Navigator navigator,
FeedbacksExecutor? feedbacksExecutor,
List<ModuleBuzzRegistries>? moduleRegistries,
List<BuzzEventHandlersRegistries>? moduleRegistries,
}) {
_navigator = navigator;
_feedbacksExecutor = feedbacksExecutor ?? DefaultFeedbacksExecutor();
Expand Down
23 changes: 21 additions & 2 deletions lib/infra/registries.dart
Original file line number Diff line number Diff line change
@@ -1,12 +1,31 @@
import 'package:buzz/buzz.dart';

abstract class IModuleBuzzRegistries {
abstract class IBuzzDataRegistries {
List<DataRegistry> get registries;
}

abstract class BuzzDataRegistries extends IBuzzDataRegistries {}

class DataRegistry<T> {
DataRegistry({
required this.binder,
});

final Function(T) binder;
dynamic get registryType => T;

@override
String toString() => '$runtimeType type: $T handler: $binder';
}

abstract class IBuzzEventHandlersRegistries {
List<CommandRegistry> get commands;
List<UiEventRegistry> get uiEvents;
List<AppEventRegistry> get appEvents;
}

abstract class ModuleBuzzRegistries extends IModuleBuzzRegistries {
abstract class BuzzEventHandlersRegistries
extends IBuzzEventHandlersRegistries {
@override
List<CommandRegistry> get commands => const [];

Expand Down
15 changes: 13 additions & 2 deletions test/registries_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,24 @@ import 'package:test/test.dart';

import 'fixtures/app_events.dart';

class FakeDataRepository {}

void main() {
test('AppEventRegistry.registryType works for base class', () {
final appEventRegistry = AppEventRegistry<BaseAppEvent>(
final registry = AppEventRegistry<BaseAppEvent>(
handler: (event) {
print(event);
},
);
expect(appEventRegistry.registryType, BaseAppEvent);
expect(registry.registryType, BaseAppEvent);
});

test('DataRegistry.registryType works for fake repository', () {
final registry = DataRegistry<FakeDataRepository>(
binder: (repository) {
print('Add $repository to DI');
},
);
expect(registry.registryType, FakeDataRepository);
});
}

0 comments on commit 230e390

Please sign in to comment.