Tests.php

<?php

namespace Tlf\LilDb\Test;

class Tests extends \Tlf\Tester {


    public function testInsertAll(){

        $this->test("Insert one row");
        $ldb = \Tlf\LilDb::sqlite();

        $ldb->create('blog',
            [
                'id'=>'integer',
                'title'=>'varchar(254)',
                'body'=>'varchar(500)',
            ]
        );
        $first=['id'=>0, 'title'=>'query_title', 'body'=>'query_body'];
        $ldb->insertAll('blog',[$first]);
        $rows = $ldb->select('blog');
        $this->compare_arrays([$first], $rows);



        $ldb->delete('blog', []);
        $this->test("Insert two rows");
        $ldb = \Tlf\LilDb::sqlite();

        $ldb->create('blog',
            [
                'id'=>'integer',
                'title'=>'varchar(254)',
                'body'=>'varchar(500)',
            ]
        );
        $first=['id'=>0, 'title'=>'query_title', 'body'=>'query_body'];
        $second=['id'=>1, 'title'=>'query_title2', 'body'=>'query_body2'];
        $ldb->insertAll('blog',[$first, $second]);
        $rows = $ldb->select('blog');
        $this->compare_arrays([$first, $second], $rows);

    }
    public function testInsertEmptyRow(){
        $this->disable();

        echo "This test disabled because i can't figure out how to insert an empty row in sqlite. it seems to work fine in mysql, but mysql setup is more complicated so I don't want to test with mysql";

        return;
        $ldb = \Tlf\LilDb::sqlite();
        // $ldb = \Tlf\LilDb::mysql();
        $ldb->create('cat', ['id'=>'integer', 'name'=>'VARCHAR(50)', 'description'=>'VARCHAR(200)']);

        $ldb->insert('cat',[]);
    }

    public function testDeleteNonExistingRow(){
        $jeff = ['name'=>'Jeff', 'description'=>'A silly cat', 'id'=>0];
        $julie = ['name'=>'Julie', 'description'=>'A very silly cat','id'=>1];
        $ldb = \Tlf\LilDb::sqlite();
        // $ldb = \Tlf\LilDb::mysql();
        $ldb->create('cat', ['id'=>'integer', 'name'=>'VARCHAR(50)', 'description'=>'VARCHAR(200)']);

        $ldb->insert('cat',$jeff);
        $ldb->insert('cat',$julie);

        $response = $ldb->delete('cat', ['id'=>20]);
        
        $this->is_false($response);
    }

    public function testDelete(){
        $jeff = ['name'=>'Jeff', 'description'=>'A silly cat', 'id'=>0];
        $julie = ['name'=>'Julie', 'description'=>'A very silly cat','id'=>1];
        $ldb = \Tlf\LilDb::sqlite();
        // $ldb = \Tlf\LilDb::mysql();
        $ldb->create('cat', ['id'=>'integer', 'name'=>'VARCHAR(50)', 'description'=>'VARCHAR(200)']);

        $ldb->insert('cat',$jeff);
        $ldb->insert('cat',$julie);

        $response = $ldb->delete('cat', ['id'=>1]);
        
        $this->is_true($response);
    }

    public function testEverything(){
        $jeff = ['name'=>'Jeff', 'description'=>'A silly cat', 'id'=>0];
        $julie = ['name'=>'Julie', 'description'=>'A very silly cat','id'=>1];
        $ldb = \Tlf\LilDb::sqlite();
        // $ldb = \Tlf\LilDb::mysql();
        $ldb->create('cat', ['id'=>'integer', 'name'=>'VARCHAR(50)', 'description'=>'VARCHAR(200)']);

        $ldb->insert('cat',$jeff);
        $ldb->insert('cat',$julie);

        $jeff['id'] = 0;
        $julie['id'] = 1;

        $this->test('Insert');
            $this->compare(
                $jeff, $ldb->select('cat', ['name'=>$jeff['name']])[0]
            );
            $this->compare(
                $jeff, $ldb->select('cat', ['id'=>$jeff['id']])[0]
            );

        $julie['name'] = 'Julie The Great';
        $ldb->update('cat',$julie);

        $this->test('Update');
            $this->compare(
                $julie,
                $ldb->select('cat', ['id'=>$julie['id']])[0]
            );

        $this->test('Update Where');
        $julie['description'] = 'The most powerful cat.';
        $ldb->updateWhere('cat', $julie, ['name'=>$julie['name']]);
            $this->compare(
                $julie,
                $ldb->select('cat', ['name'=>$julie['name']])[0]
            );

        $this->compare(
            [$jeff,$julie],
            $ldb->select('cat',[])
        );

        $ldb->delete('cat',['name'=>$jeff['name']]);
        $this->compare(
            [$julie],
            $ldb->query('SELECT * FROM cat')
        );

        $this->compare(
            [$julie],
            $ldb->query("SELECT * FROM cat WHERE name LIKE :name", ['name'=>$julie['name']])
        );

        $ldb->insert('cat',$jeff);
        $ldb->insert('cat',['name'=>'beep','description'=>'boop']);
        $ldb->delete('cat',[]);
        $this->compare(
            [],
            $ldb->select('cat', [])
        );
    }

}