Files
Viano-Core/tests/clientless/test_portal_conditions.py
T
Nico 54d77d1e4d
clang PCH / build (push) Canceled after 0s
GCC PCH / build (push) Canceled after 0s
Fix AdventureBot group preparation, public portals and flight recovery
Add preparation outings and equipment checks with a five-minute return to the meeting point. Correct static portal visitor casting and level conditions, with native interaction diagnostics. Recover suspended flying mounts, walk to verified takeoff sites, and validate landing and return volumes. Include SQL migrations, targeted regression tests and live validation checkpoints.
2026-10-29 18:21:43 +01:00

39 lines
2.1 KiB
Python

"""Check the scoped portal condition migration and preserve the native level gate."""
from pathlib import Path
import sqlite3
root = Path(__file__).resolve().parents[2]
sql = (root / 'sql/custom/world/2026_10_29_03_blasted_lands_portal_conditions.sql').read_text()
db = sqlite3.connect(':memory:')
columns = ['SourceTypeOrReferenceId','SourceGroup','SourceEntry','SourceId',
'ConditionTypeOrReference','ConditionTarget','ConditionValue1',
'ConditionValue2','NegativeCondition']
db.execute('CREATE TABLE conditions (' + ','.join(c+' INTEGER' for c in columns) + ')')
rows = [(17,0,65728,0,27,0,58,3,0), (17,0,65729,0,27,0,58,3,0),
(17,0,17334,0,27,0,58,3,0), (17,0,65728,0,27,0,60,3,0),
(17,0,65729,0,27,0,58,3,1), (13,0,65728,0,27,0,58,3,0)]
db.executemany('INSERT INTO conditions VALUES (?,?,?,?,?,?,?,?,?)',rows)
db.executescript(sql)
result = db.execute('SELECT * FROM conditions').fetchall()
assert result[0][5] == result[1][5] == 1
assert result[2:] == rows[2:]
for row in result[:2]:
assert row[6:8] == (58,3), 'Native minimum level and comparison must survive'
db.executescript(sql)
assert db.execute('SELECT * FROM conditions').fetchall() == result
print('Portal condition migration: explicit user target, preserved level gate, scoped updates and idempotence passed.')
# Only named public static portals change caster; preserve summoned/quest data.
db.execute('CREATE TABLE gameobject_template(entry INTEGER,type INTEGER,data2 INTEGER,data6 INTEGER)')
rows2=[(183325,22,0,0),(195142,22,0,0),(209538,22,0,0),(210176,22,0,0),
(176296,22,1,0),(205268,22,0,0),(183325,22,1,0),(183325,10,0,0)]
db.executemany('INSERT INTO gameobject_template VALUES(?,?,?,?)',rows2)
public_sql=(root/'sql/custom/world/2026_10_29_04_public_portal_player_cast.sql').read_text()
db.executescript(public_sql)
after=db.execute('SELECT * FROM gameobject_template').fetchall()
assert all(r[3]==1 for r in after[:4])
assert after[4:]==rows2[4:]
db.executescript(public_sql)
assert db.execute('SELECT * FROM gameobject_template').fetchall()==after
print('Public portal caster migration: static allowlist, party/type guards and idempotence passed.')