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);
        }
Example #2
0
            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);
            }