Migrations.php

<?php

namespace Tlf\LilDb\Test;

class Migrations extends \Tlf\Tester {

    public function testMigrateUp1(){
        // @export_start(Example.Migration)
        $db = $this->file('test/input/migrate/db.sqlite');
        unlink($db);
        $migrations_dir = $this->file('test/input/migrate/');

        // init the database
        $ldb = \Tlf\LilDb::sqlite($db);
        $ldb->create('blog',
            ['title'=>'varchar(200)']
        );
        $ldb->insert('blog',['title'=>'one']);

        // do the migration
        $lm = new \Tlf\LilMigrations($ldb->pdo, $migrations_dir);
        // $lm->migration_vars = ['some_var'=> 'some value']; # optionally expose variables to the migration files.
        $lm->migrate(0,1);

        // test that the table has been altered to have a 'description' field
        $this->compare(
            $ldb->select('blog')[0],
            ['title'=>'one',
            'description'=>'',
            ],
        );
        // @export_end(Example.Migration)
    }


    public function testMigrateUp2(){
        $db = $this->file('test/input/migrate/db.sqlite');
        unlink($db);
        $migrations_dir = $this->file('test/input/migrate/');

        $ldb = \Tlf\LilDb::sqlite($db);
        $ldb->create('blog',
            ['title'=>'varchar(200)']
        );
        $ldb->insert('blog',['title'=>'one']);

        $lm = new \Tlf\LilMigrations($ldb->pdo, $migrations_dir);

        $lm->migrate(0,2);
        $this->compare(
            $ldb->select('blog')[0],
            ['title'=>'one',
            'description'=>'',
            'id'=>null,
            ],
        );

    }


    public function testMigrateDown2(){
        $db = $this->file('test/input/migrate/db.sqlite');
        unlink($db);
        $migrations_dir = $this->file('test/input/migrate/');

        $ldb = \Tlf\LilDb::sqlite($db);
        $ldb->create('blog',
            ['id'=>'int(11)', 'title'=>'varchar(200)', 'description'=>'varchar(300)']
        );
        $ldb->insert('blog',['title'=>'one']);

        $lm = new \Tlf\LilMigrations($ldb->pdo, $migrations_dir);

        $lm->migrate(3,1);
        $this->compare(
            ['title'=>'one'],
            $ldb->select('blog')[0],
        );

        // exit;

    }

}