<?php

#namespace Saireh\Tests;

error_log(E_ALL);
ini_set("display_error", 1);
error_reporting(E_ALL);


// Reemplaza con la ubicación de tu archivo refactorizado

use PHPUnit\Framework\TestCase;
use phpmock\MockBuilder;
use phpmock\functions\FixedValueFunction;
use Saireh\IDbSelector;
use Saireh\redirectTo as redirectTo;
/*
class MockDbSelector implements IDbSelector
{
    public function selectDb($connection, $dbName)
    {
        // Simulamos seleccionar la base de datos
        // Puedes personalizar este comportamiento para tus pruebas
        return true; // o false dependiendo de tu escenario
    }

    public function connect($maquina, $usuario, $clave)
    {
        return true;
    }

    public function query($enlace, $query)
    {
        return true;
    }
}

class generar_asientosTest extends TestCase
{
    // public function setUp()
    // {
    //     $_SERVER["REQUEST_METHOD"] = "POST";

    //     parent::setUp();
    // }

    public function testRedirectTo()
    {
        // Mockear mysqli_connect para que devuelva un valor fijo
        $builder = new MockBuilder();
        $builder->setNamespace('Saireh')
            ->setName('mysqli_connect')
            ->setFunction(
                function ($host = '', $username = '', $password = '', $database = '') {
                    $mysqli = new \mysqli($host, $username, $password, $database);
                    return $mysqli; // Devuelve un objeto mysqli simulado
                }
            );

        $mock = $builder->build();
        $mock->enable();

        $builder = new MockBuilder();
        $builder->setNamespace('Saireh')
            ->setName('mysqli_num_rows')
            ->setFunction(
                function ($consulta) {

                    return 5;
                }
            );

        $mock = $builder->build();
        $mock->enable();


        $builder = new MockBuilder();
        $builder->setNamespace('Saireh')
            ->setName('mysqli_query')
            ->setFunction(
                function ($enlace, $query) {

                    return True;
                }
            );

        $mock = $builder->build();
        $mock->enable();


        $builder = new MockBuilder();
        $builder->setNamespace('Saireh')
            ->setName('mysqli_fetch_array')
            ->setFunction(
                function ($consulta) {

                    $data = array(
                        array("codigo" => "foo", "detalle" => "foo"),
                        array("codigo" => "var", "detalle" => "var")
                    );

                    foreach ($data as $value) {
                        return $value;
                    }
                }
            );

        $mock = $builder->build();
        $mock->enable();

        // Mockear mysqli_select_db para que no haga nada
        $mockDbSelector = new MockDbSelector();

        require_once("site/generar_asientos.php");
        // Llama a la función redirectTo directamente
        Saireh\redirectTo("example.com");

        // Verifica la salida esperada
        $this->expectOutputString("Location: example.com");
    }

    public function testHandlePostRequest()
    {
        $_POST['generarBanco'] = true;
        // Simula la conexión y otros datos necesarios
        $_SESSION['tipousuario'] = '1';
        $_SESSION['nombre_validar'] = 'test_user';
        // Simula la consulta y otros datos necesarios
        //getMenu();

        // Ejecutar la función de manejo de solicitud POST
        //handlePostRequest();
        // Realizar aserciones según sea necesario
    }

    public function testHandleGetRequest()
    {
        // Simula la conexión y otros datos necesarios
        $_SESSION['tipousuario'] = '2';
        $_SESSION['nombre_validar'] = 'test_user';

        // Ejecutar la función de manejo de solicitud GET
        var_dump(getRequest());
        // Realizar aserciones según sea necesario
    }
}
*/