Skip to content

Commit a181372

Browse files
committed
fixup tests
1 parent a7cf974 commit a181372

File tree

2 files changed

+31
-27
lines changed

2 files changed

+31
-27
lines changed

lib/src/client/transport/xhr_transport.dart

+8-3
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ import 'web_streams.dart';
3131
const _contentTypeKey = 'Content-Type';
3232

3333
class XhrTransportStream implements GrpcTransportStream {
34-
final XMLHttpRequest _request;
34+
final IXMLHttpRequest _request;
3535
final ErrorHandler _onError;
3636
final Function(XhrTransportStream stream) _onDone;
3737
bool _headersReceived = false;
@@ -163,6 +163,7 @@ abstract interface class IXMLHttpRequest {
163163
set responseType(String responseType);
164164
set withCredentials(bool withCredentials);
165165

166+
void abort();
166167
void open(
167168
String method,
168169
String url, [
@@ -212,6 +213,11 @@ class XMLHttpRequestImpl implements IXMLHttpRequest {
212213
_xhr.withCredentials = withCredentials;
213214
}
214215

216+
@override
217+
void abort() {
218+
_xhr.abort();
219+
}
220+
215221
@override
216222
void open(
217223
String method,
@@ -301,8 +307,7 @@ class XhrClientConnection implements ClientConnection {
301307

302308
XhrTransportStream _createXhrTransportStream(IXMLHttpRequest request,
303309
ErrorHandler onError, void Function(XhrTransportStream stream) onDone) {
304-
return XhrTransportStream(request.toXMLHttpRequest(),
305-
onError: onError, onDone: onDone);
310+
return XhrTransportStream(request, onError: onError, onDone: onDone);
306311
}
307312

308313
void _removeStream(XhrTransportStream stream) {

test/client_tests/client_xhr_transport_test.dart

+23-24
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ library;
1717

1818
import 'dart:async';
1919
import 'dart:js_interop';
20-
20+
import 'dart:typed_data';
2121
import 'package:async/async.dart';
2222
import 'package:grpc/src/client/call.dart';
2323
import 'package:grpc/src/client/transport/xhr_transport.dart';
@@ -53,9 +53,9 @@ class MockHttpRequest extends Mock implements IXMLHttpRequest {
5353
@override
5454
final int status;
5555

56-
// Some test code expects to call this
57-
set readyState(int state);
58-
set responseText(String text);
56+
@override
57+
String get responseText =>
58+
super.noSuchMethod(Invocation.getter(#responseText), returnValue: '');
5959

6060
@override
6161
int get readyState =>
@@ -213,7 +213,7 @@ void main() {
213213
await stream.terminate();
214214

215215
final expectedData = frame(data);
216-
verify(connection.latestRequest.send(expectedData.toJSBox));
216+
verify(connection.latestRequest.send(Uint8List.fromList(expectedData).toJS));
217217
});
218218

219219
test('Stream handles headers properly', () async {
@@ -229,16 +229,15 @@ void main() {
229229
(error, _) => fail(error.toString()));
230230

231231
when(transport.latestRequest.responseHeaders).thenReturn(responseHeaders);
232-
when(transport.latestRequest.response)
233-
.thenReturn(String.fromCharCodes(frame(<int>[])).toJS);
232+
when(transport.latestRequest.responseText)
233+
.thenReturn(String.fromCharCodes(frame(<int>[])));
234234

235235
// Set expectation for request readyState and generate two readyStateChange
236236
// events, so that incomingMessages stream completes.
237237
final readyStates = [XMLHttpRequest.HEADERS_RECEIVED, XMLHttpRequest.DONE];
238-
transport.latestRequest.readyState = readyStates[0];
238+
when(transport.latestRequest.readyState).thenReturnInOrder(readyStates);
239239
transport.latestRequest.readyStateChangeController
240240
.add(readyStateChangeEvent);
241-
transport.latestRequest.readyState = readyStates[1];
242241
transport.latestRequest.readyStateChangeController
243242
.add(readyStateChangeEvent);
244243

@@ -271,15 +270,15 @@ void main() {
271270
final encodedString = String.fromCharCodes(encodedTrailers);
272271

273272
when(connection.latestRequest.responseHeaders).thenReturn(requestHeaders);
274-
when(connection.latestRequest.response).thenReturn(encodedString.toJS);
273+
when(connection.latestRequest.responseText).thenReturn(encodedString);
275274

276275
// Set expectation for request readyState and generate events so that
277276
// incomingMessages stream completes.
278-
connection.latestRequest.readyState = XMLHttpRequest.HEADERS_RECEIVED;
277+
when(connection.latestRequest.readyState).thenReturnInOrder(
278+
[XMLHttpRequest.HEADERS_RECEIVED, XMLHttpRequest.DONE]);
279279
connection.latestRequest.readyStateChangeController
280280
.add(readyStateChangeEvent);
281281
connection.latestRequest.progressController.add(progressEvent);
282-
connection.latestRequest.readyState = XMLHttpRequest.DONE;
283282
connection.latestRequest.readyStateChangeController
284283
.add(readyStateChangeEvent);
285284

@@ -306,14 +305,14 @@ void main() {
306305
final encodedString = String.fromCharCodes(encoded);
307306

308307
when(connection.latestRequest.responseHeaders).thenReturn(requestHeaders);
309-
when(connection.latestRequest.response).thenReturn(encodedString.toJS);
308+
when(connection.latestRequest.responseText).thenReturn(encodedString);
310309
// Set expectation for request readyState and generate events so that
311310
// incomingMessages stream completes.
312-
connection.latestRequest.readyState = XMLHttpRequest.HEADERS_RECEIVED;
311+
when(connection.latestRequest.readyState).thenReturnInOrder(
312+
[XMLHttpRequest.HEADERS_RECEIVED, XMLHttpRequest.DONE]);
313313
connection.latestRequest.readyStateChangeController
314314
.add(readyStateChangeEvent);
315315
connection.latestRequest.progressController.add(progressEvent);
316-
connection.latestRequest.readyState = XMLHttpRequest.DONE;
317316
connection.latestRequest.readyStateChangeController
318317
.add(readyStateChangeEvent);
319318

@@ -338,16 +337,16 @@ void main() {
338337
requestHeaders, (error, _) => fail(error.toString()));
339338
final data = List<int>.filled(10, 224);
340339
when(connection.latestRequest.responseHeaders).thenReturn(requestHeaders);
341-
when(connection.latestRequest.response)
342-
.thenReturn(String.fromCharCodes(frame(data)).toJS);
340+
when(connection.latestRequest.responseText)
341+
.thenReturn(String.fromCharCodes(frame(data)));
343342

344343
// Set expectation for request readyState and generate events, so that
345344
// incomingMessages stream completes.
346-
connection.latestRequest.readyState = XMLHttpRequest.HEADERS_RECEIVED;
345+
when(connection.latestRequest.readyState).thenReturnInOrder(
346+
[XMLHttpRequest.HEADERS_RECEIVED, XMLHttpRequest.DONE]);
347347
connection.latestRequest.readyStateChangeController
348348
.add(readyStateChangeEvent);
349349
connection.latestRequest.progressController.add(progressEvent);
350-
connection.latestRequest.readyState = XMLHttpRequest.DONE;
351350
connection.latestRequest.readyStateChangeController
352351
.add(readyStateChangeEvent);
353352

@@ -369,8 +368,8 @@ void main() {
369368
const errorDetails = 'error details';
370369
when(connection.latestRequest.responseHeaders)
371370
.thenReturn({'content-type': 'application/grpc+proto'});
372-
connection.latestRequest.readyState = XMLHttpRequest.DONE;
373-
connection.latestRequest.responseText = errorDetails;
371+
when(connection.latestRequest.readyState).thenReturn(XMLHttpRequest.DONE);
372+
when(connection.latestRequest.responseText).thenReturn(errorDetails);
374373
connection.latestRequest.readyStateChangeController
375374
.add(readyStateChangeEvent);
376375
await errorReceived.future;
@@ -403,12 +402,12 @@ void main() {
403402
// At first invocation the response should be the the first message, after
404403
// that first + last messages.
405404
var first = true;
406-
when(connection.latestRequest.response).thenAnswer((_) {
405+
when(connection.latestRequest.responseText).thenAnswer((_) {
407406
if (first) {
408407
first = false;
409-
return encodedStrings[0].toJS;
408+
return encodedStrings[0];
410409
}
411-
return (encodedStrings[0] + encodedStrings[1]).toJS;
410+
return encodedStrings[0] + encodedStrings[1];
412411
});
413412

414413
final readyStates = [XMLHttpRequest.HEADERS_RECEIVED, XMLHttpRequest.DONE];

0 commit comments

Comments
 (0)