Ejemplo n.º 1
0
def test_bigint_parse_literal():
    from rating_agent.graphql.types import BigInt
    from graphql.language import ast  # type: ignore
    from graphene.types.scalars import MAX_INT  # type: ignore

    node = ast.IntValue(value=MAX_INT + 1)
    res = BigInt.parse_literal(node)
    assert type(res) == float

    node = ast.IntValue(value=MAX_INT)
    res = BigInt.parse_literal(node)
    assert type(res) == int
Ejemplo n.º 2
0
 def test_invalid_email_parse_literal_wrong_ast_type(self):
     test_value = ast.IntValue(value="1234")
     with self.assertRaisesRegex(
             GraphQLError,
             scalar_error_only_types("strings", "email address",
                                     str(ast.Type))):
         EmailAddress.parse_literal(test_value)
Ejemplo n.º 3
0
    def test_timestamp(self):
        now = datetime.datetime.now()
        timestamp_type = types.Timestamp()
        node = ast.IntValue(now.timestamp())

        self.assertEqual(timestamp_type.serialize(now), int(now.timestamp()))
        self.assertEqual(timestamp_type.parse_literal(node), now)
Ejemplo n.º 4
0
def test_parse_creates_ast():
    source = Source("""{
  node(id: 4) {
    id,
    name
  }
}
""")
    result = parse(source)

    assert result == \
        ast.Document(
            loc=Loc(start=0, end=41, source=source),
            definitions=[ast.OperationDefinition(
                loc=Loc(start=0, end=40, source=source),
                operation='query',
                name=None,
                variable_definitions=None,
                directives=[],
                selection_set=ast.SelectionSet(
                    loc=Loc(start=0, end=40, source=source),
                    selections=[ast.Field(
                        loc=Loc(start=4, end=38, source=source),
                        alias=None,
                        name=ast.Name(
                            loc=Loc(start=4, end=8, source=source),
                            value='node'),
                        arguments=[ast.Argument(
                            name=ast.Name(loc=Loc(start=9, end=11, source=source),
                                          value='id'),
                            value=ast.IntValue(
                                   loc=Loc(start=13, end=14, source=source),
                                   value='4'),
                            loc=Loc(start=9, end=14, source=source))],
                        directives=[],
                        selection_set=ast.SelectionSet(
                            loc=Loc(start=16, end=38, source=source),
                            selections=[ast.Field(
                                loc=Loc(start=22, end=24, source=source),
                                alias=None,
                                name=ast.Name(
                                    loc=Loc(start=22, end=24, source=source),
                                    value='id'),
                                arguments=[],
                                directives=[],
                                selection_set=None),
                                ast.Field(
                                loc=Loc(start=30, end=34, source=source),
                                alias=None,
                                name=ast.Name(
                                    loc=Loc(start=30, end=34, source=source),
                                    value='name'),
                                arguments=[],
                                directives=[],
                                selection_set=None)]))]))])
Ejemplo n.º 5
0
def get_ast_value(value):
    if isinstance(value, ast.Node):
        return value
    if isinstance(value, six.string_types):
        return ast.StringValue(value=value)
    elif isinstance(value, bool):
        return ast.BooleanValue(value=value)
    elif isinstance(value, (float, decimal.Decimal)):
        return ast.FloatValue(value=value)
    elif isinstance(value, int):
        return ast.IntValue(value=value)
    return None
def test_converts_input_objects():
    value = OrderedDict([('foo', 3), ('bar', 'HELLO')])

    assert ast_from_value(value) == ast.ObjectValue(fields=[
        ast.ObjectField(name=ast.Name('foo'), value=ast.IntValue('3')),
        ast.ObjectField(name=ast.Name('bar'), value=ast.StringValue('HELLO'))
    ])

    input_obj = GraphQLInputObjectType(
        'MyInputObj', {
            'foo': GraphQLInputObjectField(GraphQLFloat),
            'bar': GraphQLInputObjectField(my_enum)
        })

    assert ast_from_value(value, input_obj) == ast.ObjectValue(fields=[
        ast.ObjectField(name=ast.Name('foo'), value=ast.FloatValue('3.0')),
        ast.ObjectField(name=ast.Name('bar'), value=ast.EnumValue('HELLO'))
    ])
Ejemplo n.º 7
0
def test_converts_input_objects():
    value = OrderedDict([("foo", 3), ("bar", "HELLO")])

    assert ast_from_value(value) == ast.ObjectValue(fields=[
        ast.ObjectField(name=ast.Name("foo"), value=ast.IntValue("3")),
        ast.ObjectField(name=ast.Name("bar"), value=ast.StringValue("HELLO")),
    ])

    input_obj = GraphQLInputObjectType(
        "MyInputObj",
        {
            "foo": GraphQLInputObjectField(GraphQLFloat),
            "bar": GraphQLInputObjectField(my_enum),
        },
    )

    assert ast_from_value(value, input_obj) == ast.ObjectValue(fields=[
        ast.ObjectField(name=ast.Name("foo"), value=ast.FloatValue("3.0")),
        ast.ObjectField(name=ast.Name("bar"), value=ast.EnumValue("HELLO")),
    ])
Ejemplo n.º 8
0
def value_node_from_pyvalue(val: object):
    if isinstance(val, str):
        val = val.replace('\\', '\\\\')
        value = eql_quote.quote_literal(val)
        return gql_ast.StringValue(value=value[1:-1])
    elif isinstance(val, bool):
        return gql_ast.BooleanValue(value=bool(val))
    elif isinstance(val, int):
        return gql_ast.IntValue(value=str(val))
    elif isinstance(val, float):
        return gql_ast.FloatValue(value=str(val))
    elif isinstance(val, list):
        return gql_ast.ListValue(
            values=[value_node_from_pyvalue(v) for v in val])
    elif isinstance(val, dict):
        return gql_ast.ObjectValue(fields=[
            gql_ast.ObjectField(name=n, value=value_node_from_pyvalue(v))
            for n, v in val.items()
        ])
    else:
        raise ValueError(f'unexpected constant type: {type(val)!r}')
Ejemplo n.º 9
0
 def test_wrong_ast_type_url_parse_literal(self):
     test_value = ast.IntValue(value="1234")
     with self.assertRaisesRegex(
             GraphQLError,
             scalar_error_only_types("strings", "URLs", str(ast.Type))):
         URL.parse_literal(test_value)
Ejemplo n.º 10
0
def test_parse_creates_ast():
    # type: () -> None
    source = Source(
        """{
  node(id: 4) {
    id,
    name
  }
}
"""
    )
    result = parse(source)

    assert result == ast.Document(
        loc=Loc(start=0, end=41, source=source),
        definitions=[
            ast.OperationDefinition(
                loc=Loc(start=0, end=40, source=source),
                operation="query",
                name=None,
                variable_definitions=None,
                directives=[],
                selection_set=ast.SelectionSet(
                    loc=Loc(start=0, end=40, source=source),
                    selections=[
                        ast.Field(
                            loc=Loc(start=4, end=38, source=source),
                            alias=None,
                            name=ast.Name(
                                loc=Loc(start=4, end=8, source=source), value="node"
                            ),
                            arguments=[
                                ast.Argument(
                                    name=ast.Name(
                                        loc=Loc(start=9, end=11, source=source),
                                        value="id",
                                    ),
                                    value=ast.IntValue(
                                        loc=Loc(start=13, end=14, source=source),
                                        value="4",
                                    ),
                                    loc=Loc(start=9, end=14, source=source),
                                )
                            ],
                            directives=[],
                            selection_set=ast.SelectionSet(
                                loc=Loc(start=16, end=38, source=source),
                                selections=[
                                    ast.Field(
                                        loc=Loc(start=22, end=24, source=source),
                                        alias=None,
                                        name=ast.Name(
                                            loc=Loc(start=22, end=24, source=source),
                                            value="id",
                                        ),
                                        arguments=[],
                                        directives=[],
                                        selection_set=None,
                                    ),
                                    ast.Field(
                                        loc=Loc(start=30, end=34, source=source),
                                        alias=None,
                                        name=ast.Name(
                                            loc=Loc(start=30, end=34, source=source),
                                            value="name",
                                        ),
                                        arguments=[],
                                        directives=[],
                                        selection_set=None,
                                    ),
                                ],
                            ),
                        )
                    ],
                ),
            )
        ],
    )
Ejemplo n.º 11
0
def test_converts_numeric_values_to_asts():
    assert ast_from_value(123) == ast.IntValue("123")
    assert ast_from_value(123.0) == ast.IntValue("123")
    assert ast_from_value(123.5) == ast.FloatValue("123.5")
    assert ast_from_value(1e4) == ast.IntValue("10000")
    assert ast_from_value(1e40) == ast.FloatValue("1e+40")
def test_converts_numeric_values_to_asts():
    assert ast_from_value(123) == ast.IntValue('123')
    assert ast_from_value(123.0) == ast.IntValue('123')
    assert ast_from_value(123.5) == ast.FloatValue('123.5')
    assert ast_from_value(1e4) == ast.IntValue('10000')
    assert ast_from_value(1e40) == ast.FloatValue('1e+40')