Skip to content

Commit d6cc02f

Browse files
authored
Merge pull request #377 from kuhnroyal/fix/pushScopeInProgress
Add tests for pushScopeInProgress
2 parents 4c43e0d + 8847731 commit d6cc02f

File tree

1 file changed

+58
-0
lines changed

1 file changed

+58
-0
lines changed

test/scope_test.dart

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -783,4 +783,62 @@ void main() {
783783
);
784784
expect(getIt<TestClass>(instanceName: 'scope3'), isNotNull);
785785
});
786+
787+
group('should remove scope with error during push', () {
788+
test(
789+
'pushNewScope',
790+
() {
791+
final getIt = GetIt.instance;
792+
793+
expect(
794+
() => getIt.pushNewScope(
795+
scopeName: 'scope1',
796+
init: (getIt) {
797+
getIt.registerSingleton(TestClass());
798+
throw Exception('Error during init');
799+
},
800+
),
801+
throwsException,
802+
);
803+
804+
// The scope should not be on the stack and the registered instance
805+
// should be removed.
806+
expect(getIt.hasScope('scope1'), isFalse);
807+
expect(getIt.isRegistered<TestClass>(), isFalse);
808+
809+
// It should be possible to push a new scope.
810+
getIt.pushNewScope(scopeName: 'scope2');
811+
812+
expect(getIt.hasScope('scope2'), isTrue);
813+
},
814+
);
815+
816+
test(
817+
'pushNewScopeAsync',
818+
() async {
819+
final getIt = GetIt.instance;
820+
821+
await expectLater(
822+
() => getIt.pushNewScopeAsync(
823+
scopeName: 'scope1',
824+
init: (getIt) async {
825+
getIt.registerSingleton(TestClass());
826+
throw Exception('Error during init');
827+
},
828+
),
829+
throwsException,
830+
);
831+
832+
// The scope should not be on the stack and the registered instance
833+
// should be removed.
834+
expect(getIt.hasScope('scope1'), isFalse);
835+
expect(getIt.isRegistered<TestClass>(), isFalse);
836+
837+
// It should be possible to push a new scope.
838+
await getIt.pushNewScopeAsync(scopeName: 'scope2');
839+
840+
expect(getIt.hasScope('scope2'), isTrue);
841+
},
842+
);
843+
});
786844
}

0 commit comments

Comments
 (0)