mirror of
https://github.com/Iconica-Development/flutter_profile.git
synced 2025-05-19 09:13:44 +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 {
|
abstract class ProfileService {
|
||||||
const 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) {
|
if (user.profileData != null) {
|
||||||
var map = user.profileData!.toMap();
|
var map = user.profileData!.toMap();
|
||||||
if (map.containsKey(key)) {
|
if (map.containsKey(key)) {
|
||||||
|
|
|
@ -31,6 +31,7 @@ class ItemBuilder {
|
||||||
return Form(
|
return Form(
|
||||||
key: formKey,
|
key: formKey,
|
||||||
child: TextFormField(
|
child: TextFormField(
|
||||||
|
key: Key(key),
|
||||||
controller: controller,
|
controller: controller,
|
||||||
decoration: inputDecoration,
|
decoration: inputDecoration,
|
||||||
readOnly: options.readOnly,
|
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