Skip to content

Commit 8e2e651

Browse files
authored
Always fetch initial results with a valid filter (#188)
1 parent 46f3f30 commit 8e2e651

File tree

3 files changed

+45
-32
lines changed

3 files changed

+45
-32
lines changed

current_results_ui/lib/src/features/results_overview/data/results_repository.dart

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -32,12 +32,8 @@ abstract class QueryResultsBase extends ChangeNotifier {
3232
Counts resultCounts = Counts();
3333
int fetchedResultsCount = 0;
3434

35-
QueryResultsBase(
36-
this._filter, {
37-
bool fetchInitialResults = false,
38-
this.supportsEmptyQuery = false,
39-
}) {
40-
if (fetchInitialResults) {
35+
QueryResultsBase(this._filter, {this.supportsEmptyQuery = false}) {
36+
if (_filter.terms.isNotEmpty || supportsEmptyQuery) {
4137
_fetchResults();
4238
}
4339
}

current_results_ui/lib/src/features/try_results/data/try_results_repository.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ class TryQueryResults extends QueryResultsBase {
2121
required Filter filter,
2222
ResultsService? resultsService,
2323
}) : _resultsService = resultsService ?? ResultsService(),
24-
super(filter, fetchInitialResults: true, supportsEmptyQuery: true);
24+
super(filter, supportsEmptyQuery: true);
2525

2626
@override
2727
Stream<Iterable<(ChangeInResult, Result)>> createResultsStream() async* {

current_results_ui/test/routing_test.dart

Lines changed: 42 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -23,20 +23,30 @@ import 'package:provider/provider.dart';
2323

2424
import 'routing_test.mocks.dart';
2525

26-
class FakeQueryResults extends TryQueryResults {
27-
FakeQueryResults({
28-
super.cl = 0,
29-
super.patchset = 0,
30-
required super.filter,
31-
super.resultsService,
32-
});
26+
mixin FakeCreateResultsStreamMixin on QueryResultsBase {
27+
bool createResultsStreamCalled = false;
3328

3429
@override
3530
Stream<Iterable<(ChangeInResult, Result)>> createResultsStream() async* {
31+
createResultsStreamCalled = true;
3632
yield [];
3733
}
3834
}
3935

36+
class FakeQueryResults extends QueryResults with FakeCreateResultsStreamMixin {
37+
FakeQueryResults(super.filter);
38+
}
39+
40+
class FakeTryQueryResults extends TryQueryResults
41+
with FakeCreateResultsStreamMixin {
42+
FakeTryQueryResults({
43+
required super.cl,
44+
required super.patchset,
45+
required super.filter,
46+
super.resultsService,
47+
});
48+
}
49+
4050
@GenerateNiceMocks([
4151
MockSpec<AuthService>(),
4252
MockSpec<http.Client>(),
@@ -45,7 +55,8 @@ class FakeQueryResults extends TryQueryResults {
4555
void main() {
4656
late MockAuthService mockAuthService;
4757
late GoRouter router;
48-
late TryQueryResults queryResults;
58+
late FakeQueryResults queryResults;
59+
late FakeTryQueryResults tryQueryResults;
4960
late MockResultsService mockResultsService;
5061

5162
setUp(() {
@@ -55,13 +66,10 @@ void main() {
5566
(_) async => Review(id: '123', subject: 'Test Subject', patchsets: []),
5667
);
5768
router = createRouter(
58-
queryResultsProvider: (filter) => queryResults = FakeQueryResults(
59-
filter: filter,
60-
resultsService: mockResultsService,
61-
),
69+
queryResultsProvider: (filter) => queryResults = FakeQueryResults(filter),
6270
tryQueryResultsProvider:
6371
({required cl, required patchset, required filter}) =>
64-
queryResults = FakeQueryResults(
72+
tryQueryResults = FakeTryQueryResults(
6573
cl: cl,
6674
patchset: patchset,
6775
filter: filter,
@@ -92,6 +100,7 @@ void main() {
92100
final tabBar = tester.widget<TabBar>(find.byType(TabBar));
93101
expect(tabBar.controller?.index, equals(0));
94102
expect(find.byType(Instructions), findsNothing);
103+
expect(queryResults.createResultsStreamCalled, isTrue);
95104
});
96105

97106
testWidgets('Routing works for flaky parameter', (WidgetTester tester) async {
@@ -104,6 +113,7 @@ void main() {
104113
expect(resultsScreen.filter.terms, isEmpty);
105114
final tabBar = tester.widget<TabBar>(find.byType(TabBar));
106115
expect(tabBar.controller?.index, equals(1));
116+
expect(queryResults.createResultsStreamCalled, isFalse);
107117
});
108118

109119
testWidgets('Routing works for showAll parameter', (
@@ -118,6 +128,7 @@ void main() {
118128
expect(resultsScreen.filter.terms, isEmpty);
119129
final tabBar = tester.widget<TabBar>(find.byType(TabBar));
120130
expect(tabBar.controller?.index, equals(2));
131+
expect(queryResults.createResultsStreamCalled, isFalse);
121132
});
122133

123134
testWidgets('Routing works for combined parameters', (
@@ -132,6 +143,7 @@ void main() {
132143
expect(resultsScreen.filter.terms, equals(['test-filter']));
133144
final tabBar = tester.widget<TabBar>(find.byType(TabBar));
134145
expect(tabBar.controller?.index, equals(2));
146+
expect(queryResults.createResultsStreamCalled, isTrue);
135147
});
136148

137149
testWidgets('Routing works for default route', (WidgetTester tester) async {
@@ -145,6 +157,7 @@ void main() {
145157
final tabBar = tester.widget<TabBar>(find.byType(TabBar));
146158
expect(tabBar.controller?.index, equals(0));
147159
expect(find.byType(Instructions), findsOneWidget);
160+
expect(queryResults.createResultsStreamCalled, isFalse);
148161
});
149162

150163
testWidgets('Routing works for cl route', (WidgetTester tester) async {
@@ -155,9 +168,10 @@ void main() {
155168

156169
final tabBar = tester.widget<TabBar>(find.byType(TabBar));
157170
expect(tabBar.controller?.index, equals(0));
158-
expect(queryResults.cl, equals(1234));
159-
expect(queryResults.patchset, equals(5));
160-
expect(queryResults.filter.terms, isEmpty);
171+
expect(tryQueryResults.cl, equals(1234));
172+
expect(tryQueryResults.patchset, equals(5));
173+
expect(tryQueryResults.filter.terms, isEmpty);
174+
expect(tryQueryResults.createResultsStreamCalled, isTrue);
161175
});
162176

163177
testWidgets('Routing works for cl route with filter', (
@@ -170,9 +184,10 @@ void main() {
170184

171185
final tabBar = tester.widget<TabBar>(find.byType(TabBar));
172186
expect(tabBar.controller?.index, equals(0));
173-
expect(queryResults.cl, equals(1234));
174-
expect(queryResults.patchset, equals(5));
175-
expect(queryResults.filter.terms, equals(['my-filter']));
187+
expect(tryQueryResults.cl, equals(1234));
188+
expect(tryQueryResults.patchset, equals(5));
189+
expect(tryQueryResults.filter.terms, equals(['my-filter']));
190+
expect(tryQueryResults.createResultsStreamCalled, isTrue);
176191
});
177192

178193
testWidgets('Routing works for cl route with flaky', (
@@ -185,9 +200,10 @@ void main() {
185200

186201
final tabBar = tester.widget<TabBar>(find.byType(TabBar));
187202
expect(tabBar.controller?.index, equals(1));
188-
expect(queryResults.cl, equals(1234));
189-
expect(queryResults.patchset, equals(5));
190-
expect(queryResults.filter.terms, isEmpty);
203+
expect(tryQueryResults.cl, equals(1234));
204+
expect(tryQueryResults.patchset, equals(5));
205+
expect(tryQueryResults.filter.terms, isEmpty);
206+
expect(tryQueryResults.createResultsStreamCalled, isTrue);
191207
});
192208

193209
testWidgets('Routing works for cl route with showAll', (
@@ -200,8 +216,9 @@ void main() {
200216

201217
final tabBar = tester.widget<TabBar>(find.byType(TabBar));
202218
expect(tabBar.controller?.index, equals(2));
203-
expect(queryResults.cl, equals(1234));
204-
expect(queryResults.patchset, equals(5));
205-
expect(queryResults.filter.terms, isEmpty);
219+
expect(tryQueryResults.cl, equals(1234));
220+
expect(tryQueryResults.patchset, equals(5));
221+
expect(tryQueryResults.filter.terms, isEmpty);
222+
expect(tryQueryResults.createResultsStreamCalled, isTrue);
206223
});
207224
}

0 commit comments

Comments
 (0)