예제 #1
0
def test_where_and_or():
    person = Node('Person', name='Ali', age=Property(value=29, type=int),
                  hair_color='red', var='n')
    expected_match = [
        'MATCH (n:`Person`)',
        '    WHERE n.name = {n_name}',
    ]
    match = Match(person.bind('name'))
    assert str(match) == '\n'.join(expected_match)
    assert len(match.params) == 1
    assert 'n_name' in match.params
    assert match.params['n_name'] == 'Ali'
    match.where(person['age']) == 29
    expected_match.append('      AND n.age = {n_age}')
    assert str(match) == '\n'.join(expected_match)
    assert len(match.params) == 2
    assert 'n_name' in match.params
    assert match.params['n_name'] == 'Ali'
    assert 'n_age' in match.params
    assert match.params['n_age'] == 29
    match = Match(person.bind('name'))
    match.where(person['age'], or_=True) == 29
    expected_match.pop()
    expected_match.append('       OR n.age = {n_age}')
    assert str(match) == '\n'.join(expected_match)
    assert len(match.params) == 2
    assert 'n_name' in match.params
    assert match.params['n_name'] == 'Ali'
    assert 'n_age' in match.params
    assert match.params['n_age'] == 29
예제 #2
0
def test_where_and_set():
    person = Node('Person', name='Ali', age=Property(value=29, type=int),
                  hair_color='red', var='n')
    expected_match = [
        'MATCH (n:`Person`)',
        '    WHERE n.name = {n_name}',
    ]
    match = Match(person.bind('name'))
    assert str(match) == '\n'.join(expected_match)
    assert len(match.params) == 1
    assert 'n_name' in match.params
    assert match.params['n_name'] == 'Ali'
    expected_match = [
        'MATCH (n:`Person`)',
        '    WHERE n.name = {n_name} AND n.age = {n_age}',
    ]
    match = Match(person.bind('name', 'age'))
    try:
        assert str(match) == '\n'.join(expected_match)
    except AssertionError:
        expected_match.pop()
        expected_match.append(
            '    WHERE n.age = {n_age}'
            ' AND n.name = {n_name}'
        )
        assert str(match) == '\n'.join(expected_match)
    assert len(match.params) == 2
    assert 'n_name' in match.params
    assert match.params['n_name'] == 'Ali'
    assert 'n_age' in match.params
    assert match.params['n_age'] == 29
    match.set(person['age'] == 30)
    expected_match.append('    SET n.age = {param0}')
    assert str(match) == '\n'.join(expected_match)
    assert len(match.params) == 3
    assert 'n_name' in match.params
    assert match.params['n_name'] == 'Ali'
    assert 'n_age' in match.params
    assert match.params['n_age'] == 29
    assert 'param0' in match.params
    assert match.params['param0'] == 30
    match.set(person['name'] == 'Alison')
    expected_match.append('    SET n.name = {param1}')
    assert str(match) == '\n'.join(expected_match)
    assert len(match.params) == 4
    assert 'n_name' in match.params
    assert match.params['n_name'] == 'Ali'
    assert 'n_age' in match.params
    assert match.params['n_age'] == 29
    assert 'param0' in match.params
    assert match.params['param0'] == 30
    assert 'param1' in match.params
    assert match.params['param1'] == 'Alison'