예제 #1
0
def test_merge(action_types, query, parameters):
    ast = Merge(
        pattern_part=PatternPart(),
        actions=[
            MergeAction(
                action_type=action_type,
                then=Set(
                    items=SetItems(
                        SetVariableItem(
                            target="foo",
                            value=Expression("bar"),
                        ),
                    ),
                ),
            )
            for action_type in action_types or []
        ]
    )
    assert_that(
        str(ast),
        is_(equal_to(query)),
    )
    assert_that(
        dict(ast),
        is_(equal_to(parameters)),
    )
예제 #2
0
def test_create():
    ast = Create(pattern=Pattern(items=NonEmptySequence[PatternPart](
        PatternPart(), ), ), )
    assert_that(
        str(ast),
        is_(equal_to("CREATE ()")),
    )
    assert_that(
        dict(ast),
        is_(equal_to(dict())),
    )
예제 #3
0
def test_pattern():
    ast = Pattern(items=NonEmptySequence[PatternPart](PatternPart(
        pattern_element=PatternElement(items=[], ),
        variable=Variable("foo"),
    ), ), )
    assert_that(
        str(ast),
        is_(equal_to("foo = ()")),
    )
    assert_that(
        dict(ast),
        is_(equal_to(dict())),
    )
예제 #4
0
def test_match(optional, where, query, parameters):
    ast = Match(
        pattern=Pattern(items=NonEmptySequence[PatternPart](PatternPart(), )),
        optional=optional,
        where=Where(Expression(where)) if where is not None else None,
    )
    assert_that(
        str(ast),
        is_(equal_to(query)),
    )
    assert_that(
        dict(ast),
        is_(equal_to(parameters)),
    )
예제 #5
0
def test_pattern_chain():
    ast = Pattern(items=NonEmptySequence[PatternPart](PatternPart(
        pattern_element=PatternElement(items=[
            PatternElementChain(),
            PatternElementChain(),
            PatternElementChain(relationship_pattern=RelationshipPattern(
                detail=RelationshipDetail(), )),
        ], ), ), ), )
    assert_that(
        str(ast),
        is_(equal_to("()--()--()-[]-()")),
    )
    assert_that(
        dict(ast),
        is_(equal_to(dict())),
    )
예제 #6
0
def test_write(value, reading_clause, query, parameters):
    ast = Cypher(statement=RegularQuery(query=SinglePartWriteQuery(
        return_=Return(body=ReturnBody(items=NonEmptySequence[ReturnItem](
            Expression(value), ), ), ) if value else None,
        reading_clauses=[
            reading_clause,
        ] if reading_clause else [],
        updating_clauses=[
            Merge(pattern_part=PatternPart()),
        ],
    ), ), )
    assert_that(
        str(ast),
        is_(equal_to(query)),
    )
    assert_that(
        dict(ast),
        is_(equal_to(parameters)),
    )
예제 #7
0
 def merge(cls, pattern_element: PatternElement) -> Merge:
     return Merge(pattern_part=PatternPart(pattern_element), )
예제 #8
0
 def match(cls, pattern_element: PatternElement) -> Match:
     return Match(pattern=Pattern(items=NonEmptySequence[PatternPart](
         PatternPart(pattern_element), ), ), )
예제 #9
0
 def create(cls, pattern_element: PatternElement) -> Create:
     return Create(pattern=Pattern(items=NonEmptySequence[PatternPart](
         PatternPart(pattern_element), ), ), )
예제 #10
0
    NodePattern,
    NonEmptySequence,
    Pattern,
    PatternElement,
    PatternPart,
    SinglePartReadQuery,
    SinglePartWriteQuery,
    RegularQuery,
    Return,
    ReturnBody,
    ReturnItem,
    Union,
)

MATCH = Match(
    Pattern(items=NonEmptySequence[PatternPart](PatternPart(
        PatternElement(NodePattern(), ), ), ), ), )


@parameterized([
    (
        None,
        "RETURN foo",
        dict(),
    ),
    (
        MATCH,
        "MATCH () RETURN foo",
        dict(),
    ),
])
def test_read(reading_clause, query, parameters):