'use strict';
const fs = require('fs');
const path = require('path');
const root = __dirname;
const read = p => fs.readFileSync(path.join(root, p), 'utf8');
const files = {
  fn: read('app/functions.php'),
  css: read('assets/css/style.css'),
  header: read('app/header.php'),
  migration: read('upgrade_v3_22_1.sql'),
  ticketView: read('ticket_view.php'),
};
let pass = 0, fail = 0;
function check(name, ok) {
  if (ok) { console.log('PASS', name); pass++; }
  else { console.log('FAIL', name); fail++; }
}

check('USERF fallback display je Zaposleni — Fondacija', files.fn.includes("'USERF' => 'Zaposleni — Fondacija'"));
check('USERDS fallback display je Zaposleni — Dečije selo', files.fn.includes("'USERDS' => 'Zaposleni — Dečije selo'"));
check('Interni USERF/USERDS kodovi ostaju osnovne role', files.fn.includes("return ['USERF', 'USERDS'];"));
check('Centralni role_label koristi business_role_definitions', /function role_label\([\s\S]*?business_role_definitions\(\)\[\$roleCode\]/.test(files.fn));
check('Audit role formatter ne dodaje tehnički kod u zagradama', /responsible_role_changed[\s\S]*?return role_label\(\$value\);/.test(files.fn) && !/return role_label\(\$value\) \. ' \('/.test(files.fn));
check('ticket_view koristi centralni format_event_value za generičke događaje', files.ticketView.includes("format_event_value($event['old_value'], $event['event_type'])") && files.ticketView.includes("format_event_value($event['new_value'], $event['event_type'])"));
check('Migracija menja samo USERF display name', /UPDATE roles[\s\S]*?Zaposleni — Fondacija[\s\S]*?role_code = 'USERF'/.test(files.migration));
check('Migracija menja samo USERDS display name', /UPDATE roles[\s\S]*?Zaposleni — Dečije selo[\s\S]*?role_code = 'USERDS'/.test(files.migration));
check('Migracija ne menja šemu', !/\bALTER\s+TABLE\b/i.test(files.migration) && !/\bDROP\s+TABLE\b/i.test(files.migration));
check('Migracija ne menja user_roles ili tikete', !/UPDATE\s+user_roles/i.test(files.migration) && !/UPDATE\s+tickets/i.test(files.migration));
check('Postoji lokalni mobile breakpoint 640px', /@media \(max-width: 640px\)[\s\S]*v3\.22\.3|v3\.22\.3[\s\S]*@media \(max-width: 640px\)/.test(files.css));
check('Quick access dugmad resetuju 180px flex basis samo lokalno', /\.quick-card \.inline-actions \.button,[\s\S]*?flex:\s*0 0 auto;/.test(files.css));
check('Ticket form dugmad koriste isti lokalni mobile override', /\.ticket-form-actions \.button[\s\S]*?flex:\s*0 0 auto;/.test(files.css));
check('Ciljana mobile touch visina je najmanje 48px', /v3\.22\.3[\s\S]*?min-height:\s*48px;/.test(files.css));
check('Ciljana mobile korekcija ne redefiniše boje ili radius', (() => {
  const idx = files.css.indexOf('v3.22.1 — kompaktna mobilna action dugmad');
  const end = files.css.indexOf('v3.22.2 — kompaktna mobile dugmad', idx + 1);
  const block = idx >= 0 ? files.css.slice(idx, end > idx ? end : files.css.length) : '';
  return idx >= 0 && !/background\s*:|color\s*:|border-radius\s*:|box-shadow\s*:/.test(block);
})());
check('Asset cache verzija je 3.25.0', (files.header.match(/\?v=3\.25\.0/g) || []).length >= 2);

console.log(`SUMMARY ${pass}/${pass+fail} PASS`);
process.exit(fail ? 1 : 0);
