Skip to content

Commit 6512b65

Browse files
authored
Merge pull request #395 from rohansen856/tour_test
tests: added tests for files under lib/tour folder
2 parents 68d636e + 966f999 commit 6512b65

6 files changed

+832
-0
lines changed

test/tour/details_page_tour_test.dart

Lines changed: 141 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,141 @@
1+
import 'package:flutter/material.dart';
2+
import 'package:flutter_test/flutter_test.dart';
3+
import 'package:mockito/mockito.dart';
4+
import 'package:taskwarrior/app/tour/details_page_tour.dart';
5+
import 'package:tutorial_coach_mark/tutorial_coach_mark.dart';
6+
7+
class MockTutorialCoachMarkController extends Mock
8+
implements TutorialCoachMarkController {}
9+
10+
void main() {
11+
group('Details Page Tour', () {
12+
late GlobalKey dueKey;
13+
late GlobalKey waitKey;
14+
late GlobalKey untilKey;
15+
late GlobalKey priorityKey;
16+
final controller = MockTutorialCoachMarkController();
17+
18+
setUp(() {
19+
dueKey = GlobalKey();
20+
waitKey = GlobalKey();
21+
untilKey = GlobalKey();
22+
priorityKey = GlobalKey();
23+
});
24+
25+
test('should return a list of TargetFocus with correct properties', () {
26+
final targets = addDetailsPage(
27+
dueKey: dueKey,
28+
waitKey: waitKey,
29+
untilKey: untilKey,
30+
priorityKey: priorityKey,
31+
);
32+
33+
expect(targets.length, 4);
34+
35+
expect(targets[0].keyTarget, dueKey);
36+
expect(targets[0].alignSkip, Alignment.topRight);
37+
expect(targets[0].shape, ShapeLightFocus.RRect);
38+
39+
expect(targets[1].keyTarget, waitKey);
40+
expect(targets[1].alignSkip, Alignment.topRight);
41+
expect(targets[1].shape, ShapeLightFocus.RRect);
42+
43+
expect(targets[2].keyTarget, untilKey);
44+
expect(targets[2].alignSkip, Alignment.topRight);
45+
expect(targets[2].shape, ShapeLightFocus.RRect);
46+
47+
expect(targets[3].keyTarget, priorityKey);
48+
expect(targets[3].alignSkip, Alignment.topRight);
49+
expect(targets[3].shape, ShapeLightFocus.RRect);
50+
});
51+
52+
testWidgets('should render correct text for dueKey TargetContent',
53+
(WidgetTester tester) async {
54+
final targets = addDetailsPage(
55+
dueKey: dueKey,
56+
waitKey: waitKey,
57+
untilKey: untilKey,
58+
priorityKey: priorityKey,
59+
);
60+
61+
final content = targets[0].contents!.first;
62+
63+
await tester.pumpWidget(MaterialApp(
64+
home: Builder(
65+
builder: (context) => content.builder!(context, controller),
66+
),
67+
));
68+
69+
expect(
70+
find.text("This signifies the due date of the task"), findsOneWidget);
71+
});
72+
73+
testWidgets('should render correct text for waitKey TargetContent',
74+
(WidgetTester tester) async {
75+
final targets = addDetailsPage(
76+
dueKey: dueKey,
77+
waitKey: waitKey,
78+
untilKey: untilKey,
79+
priorityKey: priorityKey,
80+
);
81+
82+
final content = targets[1].contents!.first;
83+
84+
await tester.pumpWidget(MaterialApp(
85+
home: Builder(
86+
builder: (context) => content.builder!(context, controller),
87+
),
88+
));
89+
90+
expect(
91+
find.text(
92+
"This signifies the waiting date of the task \n Task will be visible after this date"),
93+
findsOneWidget,
94+
);
95+
});
96+
97+
testWidgets('should render correct text for untilKey TargetContent',
98+
(WidgetTester tester) async {
99+
final targets = addDetailsPage(
100+
dueKey: dueKey,
101+
waitKey: waitKey,
102+
untilKey: untilKey,
103+
priorityKey: priorityKey,
104+
);
105+
106+
final content = targets[2].contents!.first;
107+
108+
await tester.pumpWidget(MaterialApp(
109+
home: Builder(
110+
builder: (context) => content.builder!(context, controller),
111+
),
112+
));
113+
114+
expect(find.text("This shows the last date of the task"), findsOneWidget);
115+
});
116+
117+
testWidgets('should render correct text for priorityKey TargetContent',
118+
(WidgetTester tester) async {
119+
final targets = addDetailsPage(
120+
dueKey: dueKey,
121+
waitKey: waitKey,
122+
untilKey: untilKey,
123+
priorityKey: priorityKey,
124+
);
125+
126+
final content = targets[3].contents!.first;
127+
128+
await tester.pumpWidget(MaterialApp(
129+
home: Builder(
130+
builder: (context) => content.builder!(context, controller),
131+
),
132+
));
133+
134+
expect(
135+
find.text(
136+
"This is the priority of the Tasks \n L -> Low \n M -> Medium \n H -> Hard"),
137+
findsOneWidget,
138+
);
139+
});
140+
});
141+
}
Lines changed: 170 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,170 @@
1+
import 'package:flutter/material.dart';
2+
import 'package:flutter_test/flutter_test.dart';
3+
import 'package:mockito/mockito.dart';
4+
import 'package:taskwarrior/app/tour/filter_drawer_tour.dart';
5+
import 'package:tutorial_coach_mark/tutorial_coach_mark.dart';
6+
7+
class MockTutorialCoachMarkController extends Mock
8+
implements TutorialCoachMarkController {}
9+
10+
void main() {
11+
group('Filter Drawer Page Tour', () {
12+
late GlobalKey statusKey;
13+
late GlobalKey projectsKey;
14+
late GlobalKey projectsKeyTaskc;
15+
late GlobalKey filterTagKey;
16+
late GlobalKey sortByKey;
17+
final controller = MockTutorialCoachMarkController();
18+
19+
setUp(() {
20+
statusKey = GlobalKey();
21+
projectsKey = GlobalKey();
22+
projectsKeyTaskc = GlobalKey();
23+
filterTagKey = GlobalKey();
24+
sortByKey = GlobalKey();
25+
});
26+
27+
test('should return a list of TargetFocus with correct properties', () {
28+
final targets = filterDrawer(
29+
statusKey: statusKey,
30+
projectsKey: projectsKey,
31+
projectsKeyTaskc: projectsKeyTaskc,
32+
filterTagKey: filterTagKey,
33+
sortByKey: sortByKey,
34+
);
35+
36+
expect(targets.length, 5);
37+
38+
expect(targets[0].keyTarget, statusKey);
39+
expect(targets[0].alignSkip, Alignment.topRight);
40+
expect(targets[0].shape, ShapeLightFocus.RRect);
41+
42+
expect(targets[1].keyTarget, projectsKey);
43+
expect(targets[1].alignSkip, Alignment.topRight);
44+
expect(targets[1].shape, ShapeLightFocus.RRect);
45+
46+
expect(targets[2].keyTarget, projectsKeyTaskc);
47+
expect(targets[2].alignSkip, Alignment.topRight);
48+
expect(targets[2].shape, ShapeLightFocus.RRect);
49+
50+
expect(targets[3].keyTarget, filterTagKey);
51+
expect(targets[3].alignSkip, Alignment.topRight);
52+
expect(targets[3].shape, ShapeLightFocus.RRect);
53+
54+
expect(targets[4].keyTarget, sortByKey);
55+
expect(targets[4].alignSkip, Alignment.topRight);
56+
expect(targets[4].shape, ShapeLightFocus.RRect);
57+
});
58+
59+
testWidgets('should render correct text for statusKey TargetContent',
60+
(WidgetTester tester) async {
61+
final targets = filterDrawer(
62+
statusKey: statusKey,
63+
projectsKey: projectsKey,
64+
projectsKeyTaskc: projectsKeyTaskc,
65+
filterTagKey: filterTagKey,
66+
sortByKey: sortByKey,
67+
);
68+
69+
final content = targets[0].contents!.first;
70+
71+
await tester.pumpWidget(MaterialApp(
72+
home: Builder(
73+
builder: (context) => content.builder!(context, controller),
74+
),
75+
));
76+
77+
expect(find.text("Filter tasks based on their completion status"),
78+
findsOneWidget);
79+
});
80+
81+
testWidgets('should render correct text for projectsKey TargetContent',
82+
(WidgetTester tester) async {
83+
final targets = filterDrawer(
84+
statusKey: statusKey,
85+
projectsKey: projectsKey,
86+
projectsKeyTaskc: projectsKeyTaskc,
87+
filterTagKey: filterTagKey,
88+
sortByKey: sortByKey,
89+
);
90+
91+
final content = targets[1].contents!.first;
92+
93+
await tester.pumpWidget(MaterialApp(
94+
home: Builder(
95+
builder: (context) => content.builder!(context, controller),
96+
),
97+
));
98+
99+
expect(find.text("Filter tasks based on the projects"), findsOneWidget);
100+
});
101+
102+
testWidgets('should render correct text for projectsKeyTaskc TargetContent',
103+
(WidgetTester tester) async {
104+
final targets = filterDrawer(
105+
statusKey: statusKey,
106+
projectsKey: projectsKey,
107+
projectsKeyTaskc: projectsKeyTaskc,
108+
filterTagKey: filterTagKey,
109+
sortByKey: sortByKey,
110+
);
111+
112+
final content = targets[2].contents!.first;
113+
114+
await tester.pumpWidget(MaterialApp(
115+
home: Builder(
116+
builder: (context) => content.builder!(context, controller),
117+
),
118+
));
119+
120+
expect(find.text("Filter tasks based on the projects"), findsOneWidget);
121+
});
122+
123+
testWidgets('should render correct text for filterTagKey TargetContent',
124+
(WidgetTester tester) async {
125+
final targets = filterDrawer(
126+
statusKey: statusKey,
127+
projectsKey: projectsKey,
128+
projectsKeyTaskc: projectsKeyTaskc,
129+
filterTagKey: filterTagKey,
130+
sortByKey: sortByKey,
131+
);
132+
133+
final content = targets[3].contents!.first;
134+
135+
await tester.pumpWidget(MaterialApp(
136+
home: Builder(
137+
builder: (context) => content.builder!(context, controller),
138+
),
139+
));
140+
141+
expect(find.text("Toggle between AND and OR tag union types"),
142+
findsOneWidget);
143+
});
144+
145+
testWidgets('should render correct text for sortByKey TargetContent',
146+
(WidgetTester tester) async {
147+
final targets = filterDrawer(
148+
statusKey: statusKey,
149+
projectsKey: projectsKey,
150+
projectsKeyTaskc: projectsKeyTaskc,
151+
filterTagKey: filterTagKey,
152+
sortByKey: sortByKey,
153+
);
154+
155+
final content = targets[4].contents!.first;
156+
157+
await tester.pumpWidget(MaterialApp(
158+
home: Builder(
159+
builder: (context) => content.builder!(context, controller),
160+
),
161+
));
162+
163+
expect(
164+
find.text(
165+
"Sort tasks based on time of creation, urgency, due date, start date, etc."),
166+
findsOneWidget,
167+
);
168+
});
169+
});
170+
}

0 commit comments

Comments
 (0)