Fixed XHR tests

Summary:
The XMLHttpRequest jest tests were attempting to call a private method in XMLHttpRequestBase.js (denoted by an _ prefix).

JS doesn't actually have any language-level support for private methods, the use of _ prefix is just a convention. But to prevent casually calling private methods externally, we have a transform that mangles the names of prefixed methods so that that attempting to call them will fail.

Using a double _ bypasses this name-mangling mechanism, while still making it clear that the method is intended to be private.

Reviewed By: javache

Differential Revision: D3276261

fb-gh-sync-id: e0c17e1003d2df09d1a16f78ae9d95bef923d74e
fbshipit-source-id: e0c17e1003d2df09d1a16f78ae9d95bef923d74e
This commit is contained in:
Nick Lockwood 2016-05-09 10:35:19 -07:00 committed by Facebook Github Bot 6
parent e737891242
commit 963a53b1a7
2 changed files with 19 additions and 8 deletions

View File

@ -214,7 +214,7 @@ class XMLHttpRequestBase extends EventTarget(...XHR_EVENTS) {
this._requestId = requestId;
this._subscriptions.push(RCTDeviceEventEmitter.addListener(
'didSendNetworkData',
(args) => this._didUploadProgress(...args)
(args) => this.__didUploadProgress(...args)
));
this._subscriptions.push(RCTDeviceEventEmitter.addListener(
'didReceiveNetworkResponse',
@ -226,11 +226,12 @@ class XMLHttpRequestBase extends EventTarget(...XHR_EVENTS) {
));
this._subscriptions.push(RCTDeviceEventEmitter.addListener(
'didCompleteNetworkResponse',
(args) => this._didCompleteResponse(...args)
(args) => this.__didCompleteResponse(...args)
));
}
_didUploadProgress(requestId: number, progress: number, total: number): void {
// exposed for testing
__didUploadProgress(requestId: number, progress: number, total: number): void {
if (requestId === this._requestId) {
this.upload.dispatchEvent({
type: 'progress',
@ -266,7 +267,8 @@ class XMLHttpRequestBase extends EventTarget(...XHR_EVENTS) {
}
}
_didCompleteResponse(requestId: number, error: string, timeOutError: boolean): void {
// exposed for testing
__didCompleteResponse(requestId: number, error: string, timeOutError: boolean): void {
if (requestId === this._requestId) {
if (error) {
this.responseText = error;

View File

@ -1,3 +1,12 @@
/**
* Copyright (c) 2013-present, Facebook, Inc.
* All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*/
'use strict';
jest
@ -55,7 +64,7 @@ describe('XMLHttpRequestBase', function(){
});
it('should call ontimeout function when the request times out', function(){
xhr._didCompleteResponse(1, 'Timeout', true);
xhr.__didCompleteResponse(1, 'Timeout', true);
expect(xhr.readyState).toBe(xhr.DONE);
@ -69,7 +78,7 @@ describe('XMLHttpRequestBase', function(){
});
it('should call onerror function when the request times out', function(){
xhr._didCompleteResponse(1, 'Generic error');
xhr.__didCompleteResponse(1, 'Generic error');
expect(xhr.readyState).toBe(xhr.DONE);
@ -85,7 +94,7 @@ describe('XMLHttpRequestBase', function(){
});
it('should call onload function when there is no error', function(){
xhr._didCompleteResponse(1, null);
xhr.__didCompleteResponse(1, null);
expect(xhr.readyState).toBe(xhr.DONE);
@ -105,7 +114,7 @@ describe('XMLHttpRequestBase', function(){
var handleProgress = jest.fn();
xhr.upload.addEventListener('progress', handleProgress);
xhr._didUploadProgress(1, 42, 100);
xhr.__didUploadProgress(1, 42, 100);
expect(xhr.upload.onprogress.mock.calls.length).toBe(1);
expect(handleProgress.mock.calls.length).toBe(1);