.dev/tests/functional/class_main_real_test.Test.php

Summary

Maintainability
A
1 hr
Test Coverage
<?php

require_once __DIR__ . '/db_real_abstract.php';

/**
 * @requires extension mysqli
 */
class class_main_real_test extends db_real_abstract
{
    public static function db_name()
    {
        return self::$DB_NAME;
    }

    public static function table_name($name)
    {
        return $name;
    }

    public static function setUpBeforeClass() : void
    {
        self::$_bak['DB_DRIVER'] = self::$DB_DRIVER;
        self::$DB_DRIVER = 'mysqli';
        self::_connect();
        self::utils()->truncate_database(self::db_name());
        self::$_bak['ERROR_AUTO_REPAIR'] = self::db()->ERROR_AUTO_REPAIR;
        self::db()->ERROR_AUTO_REPAIR = true;
        $GLOBALS['db'] = self::db();
    }

    public static function tearDownAfterClass() : void
    {
        self::utils()->truncate_database(self::db_name());
        self::$DB_DRIVER = self::$_bak['DB_DRIVER'];
        self::db()->ERROR_AUTO_REPAIR = self::$_bak['ERROR_AUTO_REPAIR'];
    }

    public function test_get_data()
    {
        $this->assertFalse((bool) self::utils()->table_exists('static_pages'));
        $this->assertEmpty(self::db()->from('static_pages')->get_all());
        $this->assertTrue((bool) self::utils()->table_exists('static_pages'));
        $data = [
            'name' => 'for_unit_tests',
            'active' => 1,
        ];
        $this->assertTrue(self::db()->insert('static_pages', $data));
        $first = self::db()->from('static_pages')->get();
        foreach ($data as $k => $v) {
            $this->assertEquals($v, $first[$k]);
        }
        $expected = [$data['name'] => $data['name']];
        $this->assertEquals($expected, main()->get_data('static_pages_names'));
    }

    public function test_plugins_restrictions()
    {
        main()->_plugins_white_list = [];
        main()->_plugins_black_list = [];
        $loaded_plugins1 = main()->_preload_plugins_list($force = true);
        $first = key($loaded_plugins1);
        main()->_plugins_black_list = [$first];
        $loaded_plugins2 = main()->_preload_plugins_list($force = true);
        $this->assertNotEquals($loaded_plugins1, $loaded_plugins2);
        main()->_plugins_white_list = [$first];
        $loaded_plugins3 = main()->_preload_plugins_list($force = true);
        $this->assertEquals($loaded_plugins1, $loaded_plugins3);
        main()->_plugins_white_list = [];
        main()->_plugins_black_list = [];
    }

    public function test_extend_class_storage()
    {
        $model_base = _class('model');
        $this->assertIsObject($model_base);
        $this->assertTrue(is_a($model_base, 'yf_model'));
        $this->assertSame($model_base, _class('yf_model'));

        $model_exists = main()->_class_exists('film_model');
        if ( ! $model_exists) {
            $this->assertFalse(main()->_class_exists('film_model'));
            // unit_tests == name of the custom storage used here
            main()->_custom_class_storages = [
                'film_model' => ['unit_tests' => [__DIR__ . '/model/fixtures/']],
            ];
            $this->assertTrue(main()->_class_exists('film_model'));
        }

        $film_model = _class('film_model');
        $this->assertIsObject($film_model);
        $this->assertTrue(is_a($film_model, 'film_model'));
        $this->assertTrue(is_a($film_model, 'yf_model'));
    }

    public function test_extend_methods()
    {
        //        main()->not_existing_method();
    }
}