Skip to content

Commit

Permalink
feat: add AutoDisposeBaseBloc
Browse files Browse the repository at this point in the history
  • Loading branch information
alextekartik committed Feb 10, 2025
1 parent b2f7f49 commit e1e2ba2
Show file tree
Hide file tree
Showing 4 changed files with 56 additions and 0 deletions.
3 changes: 3 additions & 0 deletions app_rx_bloc/lib/auto_dispose_base_bloc.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
export 'package:tekartik_app_rx/auto_dispose.dart';

export 'src/auto_dispose_base_bloc.dart' show AutoDisposeBaseBloc;
13 changes: 13 additions & 0 deletions app_rx_bloc/lib/src/auto_dispose_base_bloc.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import 'package:tekartik_app_bloc/base_bloc.dart';
import 'package:tekartik_app_common_utils/common_utils_import.dart';
import 'package:tekartik_app_rx/auto_dispose.dart';

/// Base bloc with auto dispose
abstract class AutoDisposeBaseBloc extends BaseBloc with AutoDisposeMixin {
@override
@mustCallSuper
void dispose() {
audiDisposeAll();
super.dispose();
}
}
19 changes: 19 additions & 0 deletions app_rx_bloc/test/auto_dispose_base_bloc_test.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import 'package:tekartik_app_rx_bloc/auto_dispose_base_bloc.dart';
import 'package:test/test.dart';

class TestBloc extends AutoDisposeBaseBloc {
late var state = audiAddBehaviorSubject(BehaviorSubject.seeded(false));
}

void main() {
group('auto_dispose_base_bloc', () {
test('disposed', () {
var bloc = TestBloc();
expect(bloc.disposed, isFalse);
expect(bloc.state.isClosed, isFalse);
bloc.dispose();
expect(bloc.disposed, isTrue);
expect(bloc.state.isClosed, isTrue);
});
});
}
21 changes: 21 additions & 0 deletions app_rx_bloc/test/auto_dispose_state_base_bloc_test.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
import 'package:tekartik_app_rx_bloc/auto_dispose_state_base_bloc.dart';
import 'package:test/test.dart';

class TestBloc extends AutoDisposeStateBaseBloc<String> {
late var other = audiAddBehaviorSubject(BehaviorSubject.seeded(false));
}

void main() {
group('auto_dispose_base_bloc', () {
test('disposed', () {
var bloc = TestBloc();
expect(bloc.disposed, isFalse);
expect(bloc.other.isClosed, isFalse);
bloc.add('test');
bloc.dispose();
expect(bloc.disposed, isTrue);
expect(bloc.other.isClosed, isTrue);
expect(() => bloc.add('test2'), throwsA(isA<StateError>()));
});
});
}

0 comments on commit e1e2ba2

Please sign in to comment.