Esempio n. 1
0
        public UIElement GetView(CommandResultDto commandResult, string result)
        {
            HttpResponseMessage response = null;

            if (commandResult.Status != null)
            {
                response = HttpResponseDeserializer.DecodeResponse(result);
            }

            using (var scope = _context.CreateChildContainer())
            {
                var viewProviders   = scope.Resolve <IEnumerable <ICommandResultViewProvider> >().OrderByDescending(x => x.Priority);
                var serviceProvider = scope.Resolve <IServiceProvider>();

                foreach (var viewProvider in viewProviders)
                {
                    try
                    {
                        var view = viewProvider.GetView(response, commandResult, serviceProvider);
                        if (view != null)
                        {
                            return(view);
                        }
                    }
                    catch (Exception e)
                    {
                        Logger.Error(e, "Error occurred on GetView() on {viewProviderType}", viewProvider.GetType().FullName);
                    }
                }
            }

            return(null);
        }
        public async Task DeserializeQueryResultWithErrors()
        {
            // arrange
            var qux = new OrderedDictionary {
                { "quux", 123 }
            };
            var baz = new OrderedDictionary {
                { "qux", qux }
            };
            var objectList = new List <object> {
                baz
            };
            var scalarList = new List <object> {
                123
            };

            var result = QueryResultBuilder.New();

            var data = new OrderedDictionary();

            data["foo"] = objectList;
            data["bar"] = scalarList;
            data["baz"] = baz;
            result.SetData(data);

            result.AddError(ErrorBuilder.New()
                            .SetMessage("foo")
                            .SetPath(Path.New("root").Append("child"))
                            .AddLocation(new Location(15, 16))
                            .SetExtension("bar", "baz")
                            .Build());

            result.AddError(ErrorBuilder.New()
                            .SetMessage("qux")
                            .SetExtension("bar", "baz")
                            .Build());

            result.AddError(ErrorBuilder.New()
                            .SetMessage("quux")
                            .Build());

            var stream     = new MemoryStream();
            var serializer = new JsonQueryResultSerializer();
            await serializer.SerializeAsync(result.Create(), stream);

            byte[] buffer = stream.ToArray();

            var serializedResult = Utf8GraphQLRequestParser.ParseJson(buffer);

            // act
            IReadOnlyQueryResult deserializedResult =
                HttpResponseDeserializer.Deserialize(
                    (IReadOnlyDictionary <string, object>)serializedResult);

            // assert
            Snapshot.Match(deserializedResult);
        }
        public async Task DeserializeQueryResultWithErrors()
        {
            // arrange
            var qux = new OrderedDictionary {
                { "quux", 123 }
            };
            var baz = new OrderedDictionary {
                { "qux", qux }
            };
            var objectList = new List <object> {
                baz
            };
            var scalarList = new List <object> {
                123
            };

            var result = new QueryResult();

            result.Data["foo"] = objectList;
            result.Data["bar"] = scalarList;
            result.Data["baz"] = baz;

            result.Errors.Add(ErrorBuilder.New()
                              .SetMessage("foo")
                              .SetPath(Path.New("root").Append("child"))
                              .AddLocation(new Location(15, 16))
                              .SetExtension("bar", "baz")
                              .Build());

            result.Errors.Add(ErrorBuilder.New()
                              .SetMessage("qux")
                              .SetExtension("bar", "baz")
                              .Build());

            result.Errors.Add(ErrorBuilder.New()
                              .SetMessage("quux")
                              .Build());

            var stream     = new MemoryStream();
            var serializer = new JsonQueryResultSerializer();
            await serializer.SerializeAsync(result, stream);

            byte[] buffer = stream.ToArray();

            string json             = Encoding.UTF8.GetString(buffer, 0, buffer.Length);
            var    serializedResult = JsonConvert.DeserializeObject <JObject>(json);

            // act
            IReadOnlyQueryResult deserializedResult =
                HttpResponseDeserializer.Deserialize(serializedResult);

            // assert
            Snapshot.Match(deserializedResult);
        }
        public async Task DeserializeQueryResultWithExtensions()
        {
            // arrange
            var qux = new OrderedDictionary {
                { "quux", 123 }
            };
            var baz = new OrderedDictionary {
                { "qux", qux }
            };
            var objectList = new List <object> {
                baz
            };
            var scalarList = new List <object> {
                123
            };

            var result = QueryResultBuilder.New();

            var data = new OrderedDictionary();

            data["foo"] = objectList;
            data["bar"] = scalarList;
            data["baz"] = baz;
            result.SetData(data);

            var extensionData = new ExtensionData();

            extensionData["foo"] = objectList;
            extensionData["bar"] = scalarList;
            extensionData["baz"] = baz;
            result.SetExtensions(extensionData);

            var stream     = new MemoryStream();
            var serializer = new JsonQueryResultSerializer();
            await serializer.SerializeAsync(result.Create(), stream);

            byte[] buffer = stream.ToArray();

            var serializedResult = Utf8GraphQLRequestParser.ParseJson(buffer);

            // act
            IReadOnlyQueryResult deserializedResult =
                HttpResponseDeserializer.Deserialize(
                    (IReadOnlyDictionary <string, object>)serializedResult);

            // assert
            deserializedResult.MatchSnapshot(m => m.Ignore(c => c.Field <JObject>("Extensions")));
            deserializedResult.Extensions.OrderBy(t => t.Key)
            .MatchSnapshot(new SnapshotNameExtension("extensions"));
        }
Esempio n. 5
0
        public async Task DeserializeQueryResultOnlyErrors()
        {
            // arrange
            var qux = new OrderedDictionary {
                { "quux", 123 }
            };
            var baz = new OrderedDictionary {
                { "qux", qux }
            };
            var objectList = new List <object> {
                baz
            };
            var scalarList = new List <object> {
                123
            };

            var result = new QueryResult();

            result.Errors.Add(new QueryError(
                                  "foo",
                                  Path.New("root").Append("child"),
                                  new List <Location> {
                new Location(15, 16)
            },
                                  new ErrorProperty("bar", "baz")));
            result.Errors.Add(new QueryError(
                                  "qux",
                                  new ErrorProperty("bar", "baz")));
            result.Errors.Add(new QueryError("quux"));

            var stream     = new MemoryStream();
            var serializer = new JsonQueryResultSerializer();
            await serializer.SerializeAsync(result, stream);

            byte[] buffer = stream.ToArray();

            string json             = Encoding.UTF8.GetString(buffer, 0, buffer.Length);
            var    serializedResult = JsonConvert.DeserializeObject <JObject>(json);

            // act
            IReadOnlyQueryResult deserializedResult =
                HttpResponseDeserializer.Deserialize(serializedResult);

            // assert
            Snapshot.Match(deserializedResult);
        }
Esempio n. 6
0
        public async Task DeserializeQueryResultWithExtensions()
        {
            // arrange
            var qux = new OrderedDictionary {
                { "quux", 123 }
            };
            var baz = new OrderedDictionary {
                { "qux", qux }
            };
            var objectList = new List <object> {
                baz
            };
            var scalarList = new List <object> {
                123
            };

            var result = new QueryResult();

            result.Data["foo"] = objectList;
            result.Data["bar"] = scalarList;
            result.Data["baz"] = baz;

            result.Extensions["foo"] = objectList;
            result.Extensions["bar"] = scalarList;
            result.Extensions["baz"] = baz;

            var stream     = new MemoryStream();
            var serializer = new JsonQueryResultSerializer();
            await serializer.SerializeAsync(result, stream);

            byte[] buffer = stream.ToArray();

            string json             = Encoding.UTF8.GetString(buffer, 0, buffer.Length);
            var    serializedResult = JsonConvert.DeserializeObject <JObject>(json);

            // act
            IReadOnlyQueryResult deserializedResult =
                HttpResponseDeserializer.Deserialize(serializedResult);

            // assert
            Snapshot.Match(deserializedResult);
        }
        public async Task DeserializeQueryResultWithExtensions()
        {
            // arrange
            var qux = new OrderedDictionary {
                { "quux", 123 }
            };
            var baz = new OrderedDictionary {
                { "qux", qux }
            };
            var objectList = new List <object> {
                baz
            };
            var scalarList = new List <object> {
                123
            };

            var result = new QueryResult();

            result.Data["foo"] = objectList;
            result.Data["bar"] = scalarList;
            result.Data["baz"] = baz;

            result.Extensions["foo"] = objectList;
            result.Extensions["bar"] = scalarList;
            result.Extensions["baz"] = baz;

            var stream     = new MemoryStream();
            var serializer = new JsonQueryResultSerializer();
            await serializer.SerializeAsync(result, stream);

            byte[] buffer = stream.ToArray();

            var serializedResult = Utf8GraphQLRequestParser.ParseJson(buffer);

            // act
            IReadOnlyQueryResult deserializedResult =
                HttpResponseDeserializer.Deserialize(
                    (IReadOnlyDictionary <string, object>)serializedResult);

            // assert
            Snapshot.Match(deserializedResult);
        }
        public async Task DeserializeQueryResult(object value, string type)
        {
            // arrange
            var qux = new OrderedDictionary {
                { "quux", value }
            };
            var baz = new OrderedDictionary {
                { "qux", qux }
            };
            var objectList = new List <object> {
                baz
            };
            var scalarList = new List <object> {
                value
            };

            var result = QueryResultBuilder.New();
            var data   = new OrderedDictionary();

            data["foo"] = objectList;
            data["bar"] = scalarList;
            data["baz"] = baz;
            result.SetData(data);

            var stream     = new MemoryStream();
            var serializer = new JsonQueryResultSerializer();
            await serializer.SerializeAsync(result.Create(), stream);

            byte[] buffer = stream.ToArray();

            var serializedResult = Utf8GraphQLRequestParser.ParseJson(buffer);

            // act
            IReadOnlyQueryResult deserializedResult =
                HttpResponseDeserializer.Deserialize(
                    (IReadOnlyDictionary <string, object>)serializedResult);

            // assert
            Snapshot.Match(deserializedResult,
                           "DeserializeQueryResult_" + type);
        }