#!/usr/bin/env python3
import glob, sqlite3
from pathlib import Path

ROOT=Path(__file__).resolve().parents[1]
db=sqlite3.connect(':memory:');db.execute('PRAGMA foreign_keys=ON')
db.executescript((ROOT/'database/schema.sqlite.sql').read_text())
for f in sorted(glob.glob(str(ROOT/'database/migrations/*.sqlite.sql'))): db.executescript(Path(f).read_text())

cols={r[1] for r in db.execute('PRAGMA table_info(equipment)')}
assert {'asset_type','manufacturer','model','serial_number','plate_number','model_year','purchase_value','meter_type','registration_expiry','insurance_expiry','inspection_expiry','next_service_meter','suspension_reason','updated_by','archived_at'} <= cols
assert db.execute("SELECT COUNT(*) FROM sqlite_master WHERE type='table' AND name='equipment_meter_readings'").fetchone()[0]==1

db.execute("INSERT INTO users(name,email,password_hash,role) VALUES('مدير','fleet@test.local','x','general-manager')"); uid=db.execute('SELECT last_insert_rowid()').fetchone()[0]
db.execute("INSERT INTO companies(code,name,status) VALUES('SAC','سواعد','active')"); company=db.execute('SELECT last_insert_rowid()').fetchone()[0]
db.execute("INSERT INTO projects(company_id,code,name,status) VALUES(?,'PRJ-1','مشروع 1','active')",(company,)); p1=db.execute('SELECT last_insert_rowid()').fetchone()[0]
db.execute("INSERT INTO projects(company_id,code,name,status) VALUES(?,'PRJ-2','مشروع 2','active')",(company,)); p2=db.execute('SELECT last_insert_rowid()').fetchone()[0]
db.execute("INSERT INTO equipment(code,project_id,name,asset_type,ownership_type,serial_number,plate_number,meter_type,meter_hours,registration_expiry,insurance_expiry,inspection_expiry,status,updated_by) VALUES('VH-1',?,'شاحنة','vehicle','owned','SN-1','ABC-1','kilometers',1200,'2027-12-31','2027-12-31','2027-12-31','working',?)",(p1,uid)); asset=db.execute('SELECT last_insert_rowid()').fetchone()[0]
db.execute("INSERT INTO equipment_meter_readings(equipment_id,reading_date,meter_value,notes,recorded_by) VALUES(?,'2026-07-21',1250,'قراءة دورية',?)",(asset,uid));db.execute('UPDATE equipment SET meter_hours=1250 WHERE id=?',(asset,))
assert db.execute('SELECT meter_hours FROM equipment WHERE id=?',(asset,)).fetchone()[0]==1250
db.execute("INSERT INTO equipment_transfers(transfer_code,equipment_id,from_project_id,to_project_id,requested_by,transferred_on,meter_hours,status) VALUES('ET-1',?,?,?,?,?,1250,'pending')",(asset,p1,p2,uid,'2026-07-21'))
assert db.execute("SELECT COUNT(*) FROM equipment_transfers WHERE equipment_id=? AND status='pending'",(asset,)).fetchone()[0]==1

api=(ROOT/'public/api/supply.php').read_text();ops=(ROOT/'public/api/operations.php').read_text();ui=(ROOT/'public/assets/backend-sync.js').read_text()
for marker in ['update_equipment','record_equipment_meter','suspend_equipment','activate_equipment','archive_equipment','equipmentReady']: assert marker in api
for marker in ['openEditEquipmentModal','openEquipmentMeterModal','openSuspendEquipmentModal','archiveEquipment']: assert marker in ui
assert "asset_type<>'vehicle' OR registration_expiry>=CURRENT_DATE" in ops
print('OK: equipment fleet master, documents, meter history, transfer guard, maintenance integration, and safe archive verified')
