public void ParseValue()
    {
        // arrange
        var type            = new AnyType();
        var objectValueNode = new ObjectValueNode(
            new ObjectFieldNode(
                AnyType.TypeNameField,
                "test"
                ),
            new ObjectFieldNode(
                "foo",
                "bar"
                )
            );
        var representation = new Representation
        {
            TypeName = "test",
            Data     = objectValueNode
        };

        // act
        IValueNode valueSyntax = type.ParseValue(representation);

        // assert
        Assert.Equal(
            objectValueNode,
            Assert.IsType <ObjectValueNode>(valueSyntax));
    }
    public void ParseValue_InvalidValue()
    {
        // arrange
        var type = new AnyType();

        // act
        void Action() => type.ParseValue(1);

        // assert
        Assert.Throws <SerializationException>(Action);
    }
    public void ParseValue_Null()
    {
        // arrange
        var type = new AnyType();

        // act
        IValueNode valueSyntax = type.ParseValue(null);

        // assert
        Assert.IsType <NullValueNode>(valueSyntax);
    }
        public override IValueNode ParseValue(object value)
        {
            if (value == null)
            {
                return(new NullValueNode(null));
            }

            if (value is Geometry)
            {
                var writer = new GeoJsonWriter();

                var objStr = writer.Write(value);

                // turn json back into object
                var obj = JsonSerializer.Deserialize <object>(objStr);

                // convert it to graphql node tree
                var nodeTree = _anyType.ParseValue(obj);

                return(nodeTree);
            }

            throw new ArgumentException("The specified value has to be a Geometry Type");
        }