mirror of
https://github.com/Iconica-Development/flutter_profile.git
synced 2025-05-18 16:53:45 +02:00
Added widget tests
This commit is contained in:
parent
7600f1ad98
commit
d0c027820a
5 changed files with 162 additions and 3 deletions
|
@ -11,9 +11,10 @@ import 'package:profile/profile.dart';
|
|||
abstract class ProfileService {
|
||||
const ProfileService();
|
||||
|
||||
deleteProfile() {}
|
||||
deleteProfile() async {}
|
||||
|
||||
editProfile<T extends ProfileData>(User user, String key, String value) {
|
||||
editProfile<T extends ProfileData>(
|
||||
User user, String key, String value) async {
|
||||
if (user.profileData != null) {
|
||||
var map = user.profileData!.toMap();
|
||||
if (map.containsKey(key)) {
|
||||
|
|
|
@ -31,6 +31,7 @@ class ItemBuilder {
|
|||
return Form(
|
||||
key: formKey,
|
||||
child: TextFormField(
|
||||
key: Key(key),
|
||||
controller: controller,
|
||||
decoration: inputDecoration,
|
||||
readOnly: options.readOnly,
|
||||
|
|
|
@ -1 +1,94 @@
|
|||
// todo
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
import 'package:profile/profile.dart';
|
||||
|
||||
import 'test_classes/test_profile_data.dart';
|
||||
import 'test_classes/test_profile_service.dart';
|
||||
|
||||
void main() {
|
||||
testWidgets('Profile page with preset values', (tester) async {
|
||||
await tester.pumpWidget(
|
||||
MaterialApp(
|
||||
home: Material(
|
||||
child: ProfilePage(
|
||||
user: User(
|
||||
'Firstname',
|
||||
'Lastname',
|
||||
Uint8List.fromList([]),
|
||||
TestProfileData(email: 'test@email.com'),
|
||||
),
|
||||
service: TestProfileService(),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
final firstNameFinder = find.text('Firstname');
|
||||
final lastNameFinder = find.text('Lastname');
|
||||
final emailFinder = find.text('test@email.com');
|
||||
|
||||
expect(firstNameFinder, findsOneWidget);
|
||||
expect(lastNameFinder, findsOneWidget);
|
||||
expect(emailFinder, findsOneWidget);
|
||||
});
|
||||
|
||||
testWidgets('Profile page without preset value', (tester) async {
|
||||
await tester.pumpWidget(
|
||||
MaterialApp(
|
||||
home: Material(
|
||||
child: ProfilePage(
|
||||
user: User(
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
TestProfileData(email: null),
|
||||
),
|
||||
service: TestProfileService(),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
});
|
||||
|
||||
testWidgets('Profile page with preset value and changing them',
|
||||
(tester) async {
|
||||
await tester.pumpWidget(
|
||||
MaterialApp(
|
||||
home: Material(
|
||||
child: ProfilePage(
|
||||
user: User(
|
||||
'Firstname',
|
||||
'Lastname',
|
||||
null,
|
||||
TestProfileData(email: 'test@email.com'),
|
||||
),
|
||||
service: TestProfileService(),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
await tester.enterText(find.text('Firstname'), 'FirstEditedName');
|
||||
await tester.testTextInput.receiveAction(TextInputAction.send);
|
||||
await tester.pump();
|
||||
|
||||
await tester.enterText(find.text('test@email.com'), 'edited@emial.com');
|
||||
await tester.testTextInput.receiveAction(TextInputAction.send);
|
||||
await tester.pump();
|
||||
|
||||
final firstNameFinder = find.text('Firstname');
|
||||
final firstNameEditedFinder = find.text('FirstEditedName');
|
||||
|
||||
final lastNameFinder = find.text('Lastname');
|
||||
|
||||
final emailFinder = find.text('test@email.com');
|
||||
final emailEditedFinder = find.text('edited@emial.com');
|
||||
|
||||
expect(firstNameFinder, findsNothing);
|
||||
expect(firstNameEditedFinder, findsOneWidget);
|
||||
expect(lastNameFinder, findsOneWidget);
|
||||
expect(emailFinder, findsNothing);
|
||||
expect(emailEditedFinder, findsOneWidget);
|
||||
});
|
||||
}
|
||||
|
|
39
test/test_classes/test_profile_data.dart
Normal file
39
test/test_classes/test_profile_data.dart
Normal file
|
@ -0,0 +1,39 @@
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:profile/profile.dart';
|
||||
|
||||
class TestProfileData extends ProfileData {
|
||||
TestProfileData({
|
||||
this.email,
|
||||
});
|
||||
|
||||
String? email;
|
||||
|
||||
@override
|
||||
Map<String, dynamic> mapWidget(
|
||||
VoidCallback update,
|
||||
BuildContext context,
|
||||
) {
|
||||
return {
|
||||
'email': null,
|
||||
};
|
||||
}
|
||||
|
||||
@override
|
||||
ProfileData fromMap(Map<String, dynamic> data) {
|
||||
return TestProfileData(
|
||||
email: data['email'],
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
Map<String, dynamic> toMap() {
|
||||
return {
|
||||
'email': email,
|
||||
};
|
||||
}
|
||||
|
||||
@override
|
||||
ProfileData create() {
|
||||
return TestProfileData();
|
||||
}
|
||||
}
|
25
test/test_classes/test_profile_service.dart
Normal file
25
test/test_classes/test_profile_service.dart
Normal file
|
@ -0,0 +1,25 @@
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:profile/profile.dart';
|
||||
|
||||
class TestProfileService extends ProfileService {
|
||||
TestProfileService();
|
||||
|
||||
@override
|
||||
void deleteProfile() {
|
||||
super.deleteProfile();
|
||||
}
|
||||
|
||||
@override
|
||||
void editProfile<T extends ProfileData>(
|
||||
User<ProfileData> user,
|
||||
String key,
|
||||
String value,
|
||||
) {
|
||||
super.editProfile(user, key, value);
|
||||
}
|
||||
|
||||
@override
|
||||
Future<void> uploadImage(BuildContext context) async {
|
||||
super.uploadImage(context);
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue