select_friend_logic_test.dart
2.01 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
import 'package:doublefeel_flutter/app/modules/friends/controllers/friends_controller.dart';
import 'package:doublefeel_flutter/app/modules/friends/controllers/select_friend_logic.dart';
import 'package:doublefeel_flutter/app/modules/friends/views/select_friend_view.dart';
import 'package:doublefeel_flutter/app/modules/friends/widgets/friend_health_card.dart';
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:get/get.dart';
void main() {
late FriendsController friendsController;
setUp(() {
friendsController = FriendsController();
friendsController.friends.assignAll(_friends);
});
test('sync moves the watch-face selection to the selected friend', () {
final logic = SelectFriendLogic(friendsController);
logic.selectFriendAt(1);
final didSync = logic.syncSelectedFriendToWatchFace();
expect(didSync, isTrue);
expect(friendsController.friends[0].isOnWatchFace, isFalse);
expect(friendsController.friends[1].isOnWatchFace, isTrue);
});
testWidgets('tapping a friend updates the selected card', (tester) async {
await tester.pumpWidget(
GetMaterialApp(
home: Scaffold(
body: SelectFriendView(friendsController: friendsController),
),
),
);
await tester.pump();
var cards = tester.widgetList<FriendHealthCard>(
find.byType(FriendHealthCard),
);
expect(cards.map((card) => card.isSelected), [isTrue, isFalse]);
await tester.tap(find.text('Bob'));
await tester.pump();
cards = tester.widgetList<FriendHealthCard>(find.byType(FriendHealthCard));
expect(cards.map((card) => card.isSelected), [isFalse, isTrue]);
});
}
const _friends = [
FriendHealthData(
name: 'Alice',
updatedAt: '',
sleepQualityScore: null,
steps: null,
statusText: '',
stressValue: null,
isOnWatchFace: true,
),
FriendHealthData(
name: 'Bob',
updatedAt: '',
sleepQualityScore: null,
steps: null,
statusText: '',
stressValue: null,
),
];