From 618e24b2f8f76644fb30c65c1b13a551a1c94f54 Mon Sep 17 00:00:00 2001 From: Gregg Van Hove Date: Mon, 1 Apr 2019 18:52:27 -0700 Subject: [PATCH] Handle WebSocket events in IE when detecting Errors - Fixes #1623 --- spec/core/baseSpec.js | 30 ++++++++++++++++++++++++++++++ src/core/base.js | 12 +++++++++--- 2 files changed, 39 insertions(+), 3 deletions(-) create mode 100644 spec/core/baseSpec.js diff --git a/spec/core/baseSpec.js b/spec/core/baseSpec.js new file mode 100644 index 00000000..b312b6d1 --- /dev/null +++ b/spec/core/baseSpec.js @@ -0,0 +1,30 @@ +describe('base helpers', function() { + describe('isError_', function() { + fit("correctly handles WebSocket events", function(done) { + if (typeof jasmine.getGlobal().WebSocket === 'undefined') { + done(); + return; + } + + var obj = (function() { + var sock = new WebSocket('ws://localhost'); + var event; + sock.onerror = function(e) { + event = e + }; + return function() { return event }; + })(); + var left = 20; + + var int = setInterval(function() { + if (obj() || left === 0) { + var result = jasmineUnderTest.isError_(obj()); + expect(result).toBe(false); + done(); + } else { + left--; + } + }, 100); + }); + }); +}); diff --git a/src/core/base.js b/src/core/base.js index 57d4cea7..3a584f09 100644 --- a/src/core/base.js +++ b/src/core/base.js @@ -89,9 +89,15 @@ getJasmineRequireObj().base = function(j$, jasmineGlobal) { if (value instanceof Error) { return true; } - if (value && value.constructor && value.constructor.constructor && - (value instanceof (value.constructor.constructor('return this')()).Error)) { - return true; + if (value && value.constructor && value.constructor.constructor) { + var valueGlobal = value.constructor.constructor('return this'); + if (j$.isFunction_(valueGlobal)) { + valueGlobal = valueGlobal(); + } + + if (valueGlobal.Error && value instanceof valueGlobal.Error) { + return true; + } } return false; };