v0.33.7
This commit is contained in:
1 parent
162e986d37
commit
6b937aaf85
54 files changed
+3527
-1325
No files matched your search
Executable
+37
@@ -0,0 +1,37 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Offline SQLite regression for additive admin preset migration and 16-slot upsert."""
|
||||
from pathlib import Path
|
||||
import sqlite3
|
||||
|
||||
ROOT = Path(__file__).resolve().parents[2]
|
||||
all_scripts = sorted((ROOT / 'migrations').glob('*.sql'))
|
||||
assert [p.name for p in all_scripts][-1] == '0010_dashboard_presets.sql'
|
||||
con = sqlite3.connect(':memory:')
|
||||
con.execute('PRAGMA foreign_keys = ON')
|
||||
for _ in range(2):
|
||||
for script in all_scripts:
|
||||
con.executescript(script.read_text())
|
||||
con.execute("INSERT INTO administrator(id,username,password_hash,generation,created_at) VALUES(1,'owner','hash',1,0)")
|
||||
con.execute("INSERT INTO admin_preferences(administrator_id,document) VALUES(1,'{}')")
|
||||
|
||||
upsert = '''
|
||||
INSERT INTO dashboard_presets(administrator_id, name, document, updated_at)
|
||||
SELECT a.id, ?, ?, ? FROM administrator a WHERE a.id = 1 AND a.username = ?
|
||||
AND ((SELECT count(*) FROM dashboard_presets WHERE administrator_id = a.id) < 16
|
||||
OR EXISTS(SELECT 1 FROM dashboard_presets WHERE administrator_id = a.id AND name = ?))
|
||||
ON CONFLICT(administrator_id, name) DO UPDATE SET document = excluded.document, updated_at = excluded.updated_at
|
||||
'''
|
||||
for i in range(16):
|
||||
name = f'Preset {i}'
|
||||
assert con.execute(upsert, (name,'{}',i,'owner',name)).rowcount == 1
|
||||
assert con.execute(upsert, ('Overflow','{}',16,'owner','Overflow')).rowcount == 0
|
||||
assert con.execute(upsert, ('Preset 0','{"changed":true}',17,'owner','Preset 0')).rowcount == 1
|
||||
assert con.execute(upsert, ('Other account','{}',18,'intruder','Other account')).rowcount == 0
|
||||
assert con.execute('SELECT count(*) FROM dashboard_presets').fetchone()[0] == 16
|
||||
assert con.execute('SELECT document FROM dashboard_presets WHERE name="Preset 0"').fetchone()[0] == '{"changed":true}'
|
||||
assert con.execute('UPDATE OR IGNORE dashboard_presets SET name=? WHERE name=?', ('Preset 1','Preset 0')).rowcount == 0
|
||||
assert con.execute('UPDATE OR IGNORE dashboard_presets SET name=? WHERE name=?', ('Renamed','Preset 0')).rowcount == 1
|
||||
con.execute('DELETE FROM administrator WHERE id=1')
|
||||
assert con.execute('SELECT count(*) FROM dashboard_presets').fetchone()[0] == 0
|
||||
assert con.execute('SELECT count(*) FROM admin_preferences').fetchone()[0] == 0
|
||||
print('PASS SQLite migrations repeated, named-preset CRUD, cap, account ownership and cascade')
|
||||
Reference in new issue
Block a user