Skip to content

Commit 5ab8779

Browse files
committed
Update tests and add goldens on CredentialManifestOfferPickPage
1 parent 11795d9 commit 5ab8779

20 files changed

+296
-23
lines changed

test/dashboard/drawer/src/view/drawer_page_test.dart

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -89,13 +89,13 @@ void main() {
8989
),
9090
);
9191

92-
expect(find.text('Wallet Profiles'), findsOneWidget);
92+
expect(find.text('Wallet Profile'), findsOneWidget);
9393
expect(
94-
find.text('Choose your SSI profile or customize your own'),
94+
find.text('Choose your wallet profile or customize your own'),
9595
findsOneWidget,
9696
);
9797

98-
await tester.tap(find.text('Wallet Profiles'));
98+
await tester.tap(find.text('Wallet Profile'));
9999
await tester.pumpAndSettle();
100100

101101
verify(
@@ -158,7 +158,7 @@ void main() {
158158
expect(find.text('Blockchain Settings'), findsOneWidget);
159159
expect(
160160
find.text(
161-
'Manage accounts, Recovery Phrase, Connected dApps and Networks',
161+
'Manage accounts, recovery phrase, connected DApps and networks',
162162
),
163163
findsOneWidget,
164164
);
@@ -240,7 +240,7 @@ void main() {
240240
expect(
241241
find.text(
242242
'Contact us and get support if you need '
243-
'assistance on using our wallet',
243+
'assistance on using your wallet',
244244
),
245245
findsOneWidget,
246246
);
@@ -315,7 +315,9 @@ void main() {
315315

316316
expect(find.text('Reset Wallet'), findsOneWidget);
317317
expect(
318-
find.text('Erase all data stored on your phone and reset your wallet.'),
318+
find.text(
319+
'Erase all data stored on this device and reset your wallet.',
320+
),
319321
findsOneWidget,
320322
);
321323

test/dashboard/home/tab_bar/credentials/present/pick/credential_manifest/view/credential_manifest_credential_offer_pick_page_test.dart

Lines changed: 69 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,9 @@ import 'package:flutter_test/flutter_test.dart';
1313
import 'package:mocktail/mocktail.dart';
1414
import 'package:oidc4vc/oidc4vc.dart';
1515

16+
import '../../../../../../../../golden_test_config.dart';
17+
import '../../../../../../../../test_objects.dart';
18+
1619
class MockProfileCubit extends MockCubit<ProfileState>
1720
implements ProfileCubit {}
1821

@@ -83,7 +86,7 @@ class MockProfileState extends Fake implements ProfileState {
8386

8487
void main() {
8588
// Enable mocking of named constructors
86-
setUpAll(() {
89+
setUpAll(() async {
8790
registerFallbackValue(
8891
const CredentialManifestPickState(filteredCredentialList: []),
8992
);
@@ -105,10 +108,11 @@ void main() {
105108
PresentationDefinition(id: 'test', inputDescriptors: []),
106109
);
107110
registerFallbackValue(MockQRCodeScanCubit());
111+
await loadAppFonts();
108112
});
109113

110114
group('CredentialManifestOfferPickPage', () {
111-
late MockCredentialManifestPickCubit credentialManifestPickCubit;
115+
late CredentialManifestPickCubit credentialManifestPickCubit;
112116
late MockCredentialsCubit credentialsCubit;
113117
late MockProfileCubit profileCubit;
114118
late MockScanCubit scanCubit;
@@ -233,15 +237,18 @@ void main() {
233237
// Set up credential manifest pick cubit state
234238
when(() => credentialManifestPickCubit.state).thenReturn(
235239
CredentialManifestPickState(
236-
filteredCredentialList: [testCredential],
240+
filteredCredentialList: [TEST_CREDENTIAL],
237241
selected: const [],
238242
presentationDefinition: presentationDefinition,
239-
isButtonEnabled: false,
243+
isButtonEnabled: true,
240244
),
241245
);
242246

243247
when(() => credentialsCubit.state).thenReturn(
244-
const CredentialsState(status: CredentialsStatus.idle, credentials: []),
248+
CredentialsState(
249+
status: CredentialsStatus.idle,
250+
credentials: [TEST_CREDENTIAL],
251+
),
245252
);
246253

247254
when(
@@ -279,7 +286,7 @@ void main() {
279286
),
280287
],
281288
child: Material(
282-
child: CredentialManifestOfferPickPage(
289+
child: CredentialManifestOfferPickView(
283290
uri: uri,
284291
credential: credential,
285292
issuer: issuer,
@@ -301,19 +308,64 @@ void main() {
301308
await tester.pump(const Duration(seconds: 1));
302309
});
303310

304-
testWidgets('displays purpose text from input descriptor', (
305-
WidgetTester tester,
306-
) async {
307-
await tester.pumpWidget(buildSubject());
308-
await tester.pumpAndSettle();
311+
for (final device in phoneScreenSizes) {
312+
testWidgets(
313+
'Displays purpose text from input descriptor on ${device.name}',
314+
(WidgetTester tester) async {
315+
// Set the surface size for the test
316+
await tester.binding.setSurfaceSize(device.size);
317+
tester.view.devicePixelRatio = device.devicePixelRatio;
318+
addTearDown(() {
319+
tester.view.resetPhysicalSize();
320+
tester.view.resetDevicePixelRatio();
321+
});
322+
whenListen(
323+
credentialManifestPickCubit,
324+
Stream.fromIterable([
325+
CredentialManifestPickState(
326+
filteredCredentialList: [TEST_CREDENTIAL],
327+
selected: const [],
328+
presentationDefinition: presentationDefinition,
329+
isButtonEnabled: false,
330+
),
331+
CredentialManifestPickState(
332+
filteredCredentialList: [TEST_CREDENTIAL],
333+
selected: const [],
334+
presentationDefinition: presentationDefinition,
335+
isButtonEnabled: true,
336+
),
337+
]),
338+
);
339+
await tester.pumpWidget(
340+
MediaQuery(
341+
data: MediaQueryData(
342+
size: device.size,
343+
devicePixelRatio: device.devicePixelRatio,
344+
),
345+
child: buildSubject(),
346+
),
347+
);
348+
await tester.pumpAndSettle();
309349

310-
// Verify that the purpose text is shown somewhere in the widget tree
311-
expect(
312-
find.text(inputDescriptor.purpose ?? ''),
313-
findsOneWidget,
314-
reason: 'Purpose text from input descriptor should be displayed',
350+
await expectLater(
351+
find.byType(CredentialManifestOfferPickView),
352+
matchesGoldenFile(
353+
'goldens/credential_manifest_offer_pick_page_${device.name}.png',
354+
),
355+
);
356+
357+
// Verify that the purpose text is shown somewhere in the widget tree
358+
expect(
359+
find.text(inputDescriptor.purpose ?? ''),
360+
findsOneWidget,
361+
reason: 'Purpose text from input descriptor should be displayed',
362+
);
363+
364+
// Reset the surface size
365+
await tester.binding.setSurfaceSize(null);
366+
},
315367
);
316-
});
368+
}
317369

318370
testWidgets('displays credential list item', (WidgetTester tester) async {
319371
await tester.pumpWidget(buildSubject());
Loading
Loading
Loading
Loading
Loading
Loading
Loading
Loading

0 commit comments

Comments
 (0)