diff --git a/brick/hooks/pubspec.yaml b/brick/hooks/pubspec.yaml index 69ccce1..4cfae80 100644 --- a/brick/hooks/pubspec.yaml +++ b/brick/hooks/pubspec.yaml @@ -7,4 +7,6 @@ dependencies: mason: ^0.1.0-dev.50 dev_dependencies: + mocktail: ^1.0.0 + test: ^1.19.2 very_good_analysis: ^5.1.0 diff --git a/brick/hooks/test/pre_gen_test.dart b/brick/hooks/test/pre_gen_test.dart new file mode 100644 index 0000000..0507309 --- /dev/null +++ b/brick/hooks/test/pre_gen_test.dart @@ -0,0 +1,50 @@ +import 'package:mason/mason.dart'; +import 'package:mocktail/mocktail.dart'; +import 'package:test/test.dart'; + +import '../pre_gen.dart' as pre_gen; + +class _MockHookContext extends Mock implements HookContext {} + +void main() { + group('pre_gen', () { + late HookContext context; + + setUp(() { + context = _MockHookContext(); + }); + + group('application_id', () { + test('when specified is unmodified', () { + final vars = { + 'project_name': 'project_name', + 'org_name': 'org_name', + 'application_id': 'com.example.app', + }; + when(() => context.vars).thenReturn(vars); + + pre_gen.run(context); + + expect(context.vars['application_id'], 'com.example.app'); + }); + + test( + '''when not specified is set to `org_name + "." + project_name(snake-case)`''', + () { + final vars = { + 'project_name': 'Project Name', + 'org_name': 'org_name', + }; + when(() => context.vars).thenReturn(vars); + + pre_gen.run(context); + + expect( + context.vars['application_id'], + 'org_name.project_name', + ); + }, + ); + }); + }); +}