Skip to content

Commit d458496

Browse files
PIG208gnprice
authored andcommitted
fake_api: Allow recording and taking multiple requests.
Signed-off-by: Zixuan James Li <[email protected]>
1 parent 850e59f commit d458496

File tree

2 files changed

+13
-12
lines changed

2 files changed

+13
-12
lines changed

test/api/fake_api.dart

+8-7
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,12 @@ class _PreparedSuccess extends _PreparedResponse {
2929
/// An [http.Client] that accepts and replays canned responses, for testing.
3030
class FakeHttpClient extends http.BaseClient {
3131

32-
http.BaseRequest? lastRequest;
32+
Iterable<http.BaseRequest> get requestHistory => _requestHistory;
33+
List<http.BaseRequest> _requestHistory = [];
3334

34-
http.BaseRequest? takeLastRequest() {
35-
final result = lastRequest;
36-
lastRequest = null;
35+
List<http.BaseRequest> takeRequests() {
36+
final result = _requestHistory;
37+
_requestHistory = [];
3738
return result;
3839
}
3940

@@ -80,7 +81,7 @@ class FakeHttpClient extends http.BaseClient {
8081

8182
@override
8283
Future<http.StreamedResponse> send(http.BaseRequest request) {
83-
lastRequest = request;
84+
_requestHistory.add(request);
8485

8586
if (_nextResponse == null) {
8687
throw FlutterError.fromParts([
@@ -205,9 +206,9 @@ class FakeApiConnection extends ApiConnection {
205206
super.close();
206207
}
207208

208-
http.BaseRequest? get lastRequest => client.lastRequest;
209+
http.BaseRequest? get lastRequest => client._requestHistory.lastOrNull;
209210

210-
http.BaseRequest? takeLastRequest() => client.takeLastRequest();
211+
List<http.BaseRequest> takeRequests() => client.takeRequests();
211212

212213
/// Prepare the response for the next request.
213214
///

test/model/store_test.dart

+5-5
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,7 @@ void main() {
205205
await store.sendMessage(
206206
destination: StreamDestination(stream.streamId, 'world'),
207207
content: 'hello');
208-
check(connection.takeLastRequest()).isA<http.Request>()
208+
check(connection.takeRequests()).single.isA<http.Request>()
209209
..method.equals('POST')
210210
..url.path.equals('/api/v1/messages')
211211
..bodyFields.deepEquals({
@@ -233,7 +233,7 @@ void main() {
233233
}
234234

235235
void checkLastRequest() {
236-
check(connection.takeLastRequest()).isA<http.Request>()
236+
check(connection.takeRequests()).single.isA<http.Request>()
237237
..method.equals('POST')
238238
..url.path.equals('/api/v1/register');
239239
}
@@ -337,7 +337,7 @@ void main() {
337337
}
338338

339339
void checkLastRequest({required int lastEventId}) {
340-
check(connection.takeLastRequest()).isA<http.Request>()
340+
check(connection.takeRequests()).single.isA<http.Request>()
341341
..method.equals('GET')
342342
..url.path.equals('/api/v1/events')
343343
..url.queryParameters.deepEquals({
@@ -487,14 +487,14 @@ void main() {
487487
}
488488

489489
void checkLastRequestApns({required String token, required String appid}) {
490-
check(connection.takeLastRequest()).isA<http.Request>()
490+
check(connection.takeRequests()).single.isA<http.Request>()
491491
..method.equals('POST')
492492
..url.path.equals('/api/v1/users/me/apns_device_token')
493493
..bodyFields.deepEquals({'token': token, 'appid': appid});
494494
}
495495

496496
void checkLastRequestFcm({required String token}) {
497-
check(connection.takeLastRequest()).isA<http.Request>()
497+
check(connection.takeRequests()).single.isA<http.Request>()
498498
..method.equals('POST')
499499
..url.path.equals('/api/v1/users/me/android_gcm_reg_id')
500500
..bodyFields.deepEquals({'token': token});

0 commit comments

Comments
 (0)