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:]
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', )]
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', )]
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 == []
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
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', )]
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')