private void HandleErrorEvent(IDictionary <string, object> jsonObject) { object requestId = jsonObject.GetOrDefault("requestId", null); int code = Convert.ToInt32(jsonObject["code"]); string error = (string)jsonObject["error"]; bool reconnect = (bool)jsonObject["reconnect"]; LiveQueryException exception = new ServerReportedException(code, error, reconnect); Subscription subscription; if (requestId != null && _subscriptions.TryGetValue(Convert.ToInt32(requestId), out subscription)) { subscription.DidEncounter(subscription.QueryObj, exception); } DispatchError(exception); }
public void ShouldHandleServerErrorsAndNotifyCallbacks() { LiveQueryException exception = null; ParseQuery <ParseObject> query = new ParseQuery <ParseObject>("test"); ErrorCallback <ParseObject> errorCallback = Substitute.For <ErrorCallback <ParseObject> >(); errorCallback.Invoke(query, Arg.Do <LiveQueryException>(e => exception = e)); Subscription <ParseObject> subscription = Subscribe(query).HandleError(errorCallback); _webSocketClientCallback.OnMessage(MockErrorMessage(subscription.RequestId)); errorCallback.Received().Invoke(query, exception); Assert.IsInstanceOf <ServerReportedException>(exception); ServerReportedException serverException = (ServerReportedException)exception; Assert.AreEqual("testError", serverException.Error); Assert.AreEqual(1, serverException.Code); Assert.AreEqual(true, serverException.IsReconnect); }