Skip to content

Commit

Permalink
feat: add more widget tests (#10)
Browse files Browse the repository at this point in the history
* add `NumberPad` widget tests

* add `MockKeyManager` for `AccountDidPage` test

* add `AccountDidPage` widget test
  • Loading branch information
ethan-tbd authored Jan 17, 2024
1 parent 0401ac6 commit 63281e3
Show file tree
Hide file tree
Showing 3 changed files with 112 additions and 0 deletions.
31 changes: 31 additions & 0 deletions frontend/test/features/account/account_did_page_test.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
import 'package:flutter_starter/features/account/account_did_page.dart';
import 'package:flutter_starter/features/account/account_providers.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:web5_flutter/web5_flutter.dart';

import '../../helpers/mocks.dart';
import '../../helpers/widget_helpers.dart';

void main() {
late MockKeyManager keyManager;

setUp(() {
keyManager = MockKeyManager();
});

group('AccountDidPage', () {
testWidgets('should show the DID', (tester) async {
const uri = 'did:example:123';

await tester.pumpWidget(
WidgetHelpers.testableWidget(child: const AccountDidPage(), overrides: [
didProvider.overrideWithValue(
DidJwk(uri: uri, keyManager: keyManager),
),
]),
);

expect(find.text(uri), findsOneWidget);
});
});
}
4 changes: 4 additions & 0 deletions frontend/test/helpers/mocks.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
import 'package:mocktail/mocktail.dart';
import 'package:web5_flutter/web5_flutter.dart';

class MockKeyManager extends Mock implements KeyManager {}
77 changes: 77 additions & 0 deletions frontend/test/shared/number_pad_test.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
import 'package:flutter_starter/shared/number_pad.dart';
import 'package:flutter_test/flutter_test.dart';

import '../helpers/widget_helpers.dart';

void main() {
List<String> numberKeys = [
'1',
'2',
'3',
'4',
'5',
'6',
'7',
'8',
'9',
'0',
'.',
'<',
];

group('NumberPad', () {
testWidgets('should show all number keys', (tester) async {
await tester.pumpWidget(
WidgetHelpers.testableWidget(
child: NumberPad(
onKeyPressed: (key) {},
onDeletePressed: () {},
),
),
);

for (String key in numberKeys) {
expect(find.text(key), findsOneWidget);
}
});

testWidgets('should call onKeyPressed when a key is pressed',
(tester) async {
var pressedKey = '';
await tester.pumpWidget(
WidgetHelpers.testableWidget(
child: NumberPad(
onKeyPressed: (key) {
pressedKey = key;
},
onDeletePressed: () {},
),
),
);

// exclude the delete key '<'
for (String key in numberKeys.sublist(0, numberKeys.length - 1)) {
await tester.tap(find.text(key));
expect(pressedKey, key);
}
});

testWidgets('should call onDeletePressed when delete key is pressed',
(tester) async {
var deletePressed = false;
await tester.pumpWidget(
WidgetHelpers.testableWidget(
child: NumberPad(
onKeyPressed: (key) {},
onDeletePressed: () {
deletePressed = true;
},
),
),
);

await tester.tap(find.text('<'));
expect(deletePressed, true);
});
});
}

0 comments on commit 63281e3

Please sign in to comment.