Exemple #1
0
def test_search(database_test_file, apple, nodes):
    for id, node in nodes.items():
        assert db.atomic(database_test_file, db.find_node(id)) == node
    steves = db.atomic(
        database_test_file,
        db.find_nodes({'name': 'Steve'}, db._search_like,
                      db._search_starts_with))
    assert len(steves) == 2
    assert list(map(lambda x: x['name'],
                    steves)) == ['Steve Wozniak', 'Steve Jobs']
Exemple #2
0
def apple(database_test_file, nodes, edges):
    db.initialize(database_test_file)
    [
        db.atomic(database_test_file, db.add_node(node, id))
        for id, node in nodes.items()
    ]
    for src, targets in edges.items():
        for target in targets:
            tgt, label = target
            if label:
                db.atomic(database_test_file,
                          db.connect_nodes(src, tgt, label))
            else:
                db.atomic(database_test_file, db.connect_nodes(src, tgt))
    yield
Exemple #3
0
def test_bulk_operations(database_test_file, nodes, edges):
    db.initialize(database_test_file)
    ids = []
    bodies = []
    for id, body in nodes.items():
        ids.append(id)
        bodies.append(body)

    # bulk add and confirm
    db.atomic(database_test_file, db.add_nodes(bodies, ids))
    for id, node in nodes.items():
        assert db.atomic(database_test_file, db.find_node(id)) == node

    # bulk upsert and confirm
    db.atomic(database_test_file, db.upsert_nodes(bodies, ids))
    for id, node in nodes.items():
        assert db.atomic(database_test_file, db.find_node(id)) == node

    # bulk connect and confirm
    sources = []
    targets = []
    properties = []
    for src, tgts in edges.items():
        for target in tgts:
            tgt, label = target
            sources.append(src)
            targets.append(tgt)
            if label:
                properties.append(label)
            else:
                properties.append({})

    db.atomic(database_test_file,
              db.connect_many_nodes(sources, targets, properties))
    for src, tgts in edges.items():
        actual = [
            tuple(json.loads(x) for x in edge) for edge in db.atomic(
                database_test_file, db.get_connections_one_way(src))
        ]
        for target in tgts:
            tgt, label = target
            if label:
                expected = (src, tgt, label)
            else:
                expected = (src, tgt, {})
            assert expected in actual

    # bulk remove and confirm
    db.atomic(database_test_file, db.remove_nodes(ids))
    for id in ids:
        assert db.atomic(database_test_file, db.find_node(id)) == {}
Exemple #4
0
from database import Province, Station, Train, TimeTable, atomic

stations = [(station.name, station.id) for station in Station]
stations = dict(stations)
print(stations)

with atomic():
    for timetable in TimeTable:
        try:
            timetable.station_id = stations[timetable.station_id]
            timetable.save()
        except KeyError:
            timetable.delete()