示例#1
0
def test_lru(session):
    tanker.LRU_SIZE = 10
    tanker.LRU_PAGE_SIZE = 5
    factor = 3
    nb_record = tanker.LRU_SIZE * factor
    values = [('c%s' % i, ) for i in range(nb_record)]
    country_view = View('country', ['name'])
    team_view = View('team', ['name', 'country.name'])

    # Fill country table, clean team table
    country_view.write(values)
    team_view.delete()

    # Fill team table to trigger lru on country fk
    values = [(
        't%s' % i,
        'c%s' % i,
    ) for i in range(nb_record)]
    seed(1)  # Reset seed to get determinism
    shuffle(values)
    team_view.write(values)

    teams = team_view.read().all()
    assert len(teams) == nb_record
    for team_name, country_name in teams:
        assert team_name[0] == 't'
        assert country_name[0] == 'c'
        assert team_name[1:] == country_name[1:]
示例#2
0
def test_delete_filter_dict(session):
    # Not sure why sqlite fail on this one
    if ctx.flavor == 'sqlite':
        return
    view = View('country', ['name'])
    view.delete(filters={'name': 'France'})

    res = view.read().all()
    assert res == [('Belgium', ), ('Holland', )]
示例#3
0
def test_delete_by_id(session):
    # Not sure why sqlite fail on this one
    if ctx.flavor == 'sqlite':
        return
    view = View('country', ['id'])
    data = view.read('(= name "France")').all()
    view.delete(data=data)

    res = View('country', ['name']).read().all()
    assert res == [('Belgium', ), ('Holland', )]
示例#4
0
def test_delete_data_extra_col(session):
    full_view = View(
        'member',
        ['name', 'team.country.name', 'team.name', 'registration_code'])
    full_view.write(members)
    assert len(full_view.read().all()) == len(members)

    full_view.delete(data=members)

    res = full_view.read().all()
    assert res == []
示例#5
0
def test_delete_data_id(session):
    # Not sure why sqlite fail on this one
    if ctx.flavor == 'sqlite':
        return

    view = View('country', ['id'])

    data = view.read('(!= name "Belgium")').all()
    view.delete(data=[[i] for i, in data])

    res = view.read().all()
    assert len(res) == 1
示例#6
0
def test_delete_filter(session):
    # Not sure why sqlite fail on this one
    if ctx.flavor == 'sqlite':
        return

    # Use a list of filters
    view = View('country', ['name'])
    view.delete(['(> id 0 )', '(< id 0)'])
    res = view.read(order='name').all()
    assert res == [('Belgium', ), ('France', ), ('Holland', )]

    # Filter with args
    view = View('country', ['name'])
    view.delete('(in name {names})', args={'names': ['France', 'Holland']})

    res = view.read().all()
    assert res == [('Belgium', )]
示例#7
0
def test_insert(session):
    inject('member', 'acl-write', ['(= registration_code "001")'])
    # Test that main table is filtered on insertion
    view = View('member', ['registration_code', 'name'])
    cnt = view.write([
        ('001', 'Bob'),
        ('002', 'Alice'),
    ])
    assert cnt['filtered'] == 1
    bob, = view.read().all()
    assert bob == ('001', 'Bob')
    view.delete()

    # Test on insert with filter on relation
    inject('member', 'acl-write', ['(= team.name "Blue")'])
    cnt = View('member', member_cols).write([
        ['Bob', 'Belgium', 'Blue', '001'],
        ['Alice', 'Belgium', 'Red', '002'],
    ])
    assert cnt['filtered'] == 1
    bob, = view.read().all()
    assert bob == ('001', 'Bob')