diff --git a/lib/resolvers/resolving_context.dart b/lib/resolvers/resolving_context.dart index 1484013..8f04f87 100644 --- a/lib/resolvers/resolving_context.dart +++ b/lib/resolvers/resolving_context.dart @@ -25,8 +25,8 @@ class ResolvingContext extends Resolver { * пользовательский резолвер */ ResolvingContext toResolver(Resolver resolver) { - // TODO: implement toResolver - throw UnimplementedError(); + _resolver = resolver; + return this; } /** diff --git a/test/di_container_test.dart b/test/di_container_test.dart new file mode 100644 index 0000000..c32c723 --- /dev/null +++ b/test/di_container_test.dart @@ -0,0 +1,35 @@ +import 'package:dart_di/di_container.dart'; +import 'package:dart_di/resolvers/resolver.dart'; +import 'package:test/test.dart'; +import 'package:mockito/mockito.dart'; + +void main() { + group('Without parent', () { + test('Container bind throws state error if it\'s already has resolver', + () { + final container = new DiContainer(); + container.bind().toResolver(_makeResolver(5)); + + expect(() => container.bind().toResolver(_makeResolver(3)), + throwsA(isA())); + }); + }); +} + +ResolverMock _makeResolver(T expectedValue) { + final resolverMock = new ResolverMock(); + when(resolverMock.resolve()).thenReturn(expectedValue); + return resolverMock; +} + +class ResolverMock extends Mock implements Resolver {} + +abstract class A {} + +class B implements A {} + +class DependOnA { + final A a; + + DependOnA(this.a) : assert(a != null); +}