diff --git a/test/resolvers/factory_resolver_test.dart b/test/resolvers/factory_resolver_test.dart new file mode 100644 index 0000000..4339ecb --- /dev/null +++ b/test/resolvers/factory_resolver_test.dart @@ -0,0 +1,27 @@ +import 'package:dart_di/resolvers/factory_resolver.dart'; +import 'package:test/test.dart'; +import 'package:mockito/mockito.dart' as mockito; + +void main() { + test('Factory resolver resolves with factory', () { + const expected = 3; + final factoryResolver = new FactoryResolver(() => expected); + + expect(factoryResolver.resolve(), expected); + }); + + test('Factory creates value only after resolve() call', () { + final spy = new SpyMock(); + final factoryResolver = new FactoryResolver(() => spy.onFactory()); + + mockito.verifyNever(spy.onFactory()); + factoryResolver.resolve(); + mockito.verify(spy.onFactory()); + }); +} + +abstract class Spy { + void onFactory(); +} + +class SpyMock extends mockito.Mock implements Spy {} diff --git a/test/resolvers/singelton_resolver_test.dart b/test/resolvers/singelton_resolver_test.dart new file mode 100644 index 0000000..197b890 --- /dev/null +++ b/test/resolvers/singelton_resolver_test.dart @@ -0,0 +1,36 @@ +import 'package:dart_di/resolvers/factory_resolver.dart'; +import 'package:dart_di/resolvers/singelton_resolver.dart'; +import 'package:test/test.dart'; +import 'package:mockito/mockito.dart' as mockito; + +void main() { + test( + 'Not singleton resolver resolves different values after multiple resolve() calls', + () { + const callCount = 3; + final spy = new SpyMock(); + final factoryResolver = new FactoryResolver(() => spy..onFactory()); + + for (var i = 0; i < callCount; i++) factoryResolver.resolve(); + + mockito.verify(spy.onFactory()).called(callCount); + }); + + test('Singleton resolver resolves same value after multiple resolve() calls', + () { + const callCount = 3; + final spy = new SpyMock(); + final singletonResolver = + new SingletonResolver(new FactoryResolver(() => spy..onFactory())); + + for (var i = 0; i < callCount; i++) singletonResolver.resolve(); + + mockito.verify(spy.onFactory()).called(1); + }); +} + +abstract class Spy { + void onFactory(); +} + +class SpyMock extends mockito.Mock implements Spy {} diff --git a/test/resolvers/value_resolver_test.dart b/test/resolvers/value_resolver_test.dart new file mode 100644 index 0000000..1899fa9 --- /dev/null +++ b/test/resolvers/value_resolver_test.dart @@ -0,0 +1,11 @@ +import 'package:dart_di/resolvers/value_resolver.dart'; +import 'package:test/test.dart'; + +void main() { + test('Value resolver resolves with selected value', () { + var a = 3; + final valResolver = new ValueResolver(a); + + expect(valResolver.resolve(), a); + }); +}