"""Monta testar_monielle.py reaproveitando o DOM falso do teste do protótipo da Fer."""
from pathlib import Path

AQUI = Path(__file__).resolve().parent
base = (AQUI / 'testar_prototipo.py').read_text(encoding='utf-8')
shim = base[base.index("SHIM = r'''"):base.index("TESTES = r'''")]
shim = shim.replace(
    "var CONHECIDOS = ['tela', 'horaTopo', 'horaIphone', 'painel', 'veu', 'toast', 'botaoTema', 'telaApp'];",
    "var CONHECIDOS = ['tela', 'horaTopo', 'horaAparelho', 'painel', 'veu', 'toast', 'botaoTema', 'telaApp', 'textoPrevia'];")
shim = shim.replace('var window = globalThis;', 'var window = globalThis;\nwindow.innerWidth = 1440;\nwindow.innerHeight = 900;')
assert 'textoPrevia' in shim and 'innerWidth' in shim

CABECA = '''"""Roda o JavaScript do copiloto da Dra. Monielle num DOM falso e exercita telas e ações."""
import re
import sys

import quickjs

html = open(sys.argv[1], encoding='utf-8').read()
script = re.findall(r'<script>(.*?)</script>', html, re.S)[0]
fim = script.rfind('})();')
exporta = ('\\nglobalThis.__t = { get estado() { return estado; }, ACOES, render, definirModo, resumoDoDia, '
           'PAC, CONSULTA, CONSULTAS, TELAS, HOJE, get modo() { return modo; } };\\n')
script = script[:fim] + exporta + script[fim:]

'''

TESTES = (AQUI / 'testes_monielle.js').read_text(encoding='utf-8')

RODAPE = '''
ctx = quickjs.Context()
ctx.eval(SHIM)
ctx.eval(script)
ctx.eval(TESTES)
while ctx.execute_pending_job():
    pass
saida = ctx.eval('__out.join("\\\\n")')
print(saida)
falhas = saida.count('FALHA')
print(f'{saida.count("ok    ")} ok, {falhas} falha(s)')
sys.exit(1 if falhas else 0)
'''

(AQUI / 'testar_monielle.py').write_text(CABECA + shim + "TESTES = r'''\n" + TESTES + "\n'''\n" + RODAPE, encoding='utf-8')
print('escrito')
