summaryrefslogtreecommitdiff
path: root/libs/picodb/tests/PostgresSchemaTest.php
diff options
context:
space:
mode:
Diffstat (limited to 'libs/picodb/tests/PostgresSchemaTest.php')
-rw-r--r--libs/picodb/tests/PostgresSchemaTest.php40
1 files changed, 40 insertions, 0 deletions
diff --git a/libs/picodb/tests/PostgresSchemaTest.php b/libs/picodb/tests/PostgresSchemaTest.php
new file mode 100644
index 00000000..5ecf1cc5
--- /dev/null
+++ b/libs/picodb/tests/PostgresSchemaTest.php
@@ -0,0 +1,40 @@
+<?php
+
+require_once __DIR__.'/../../../vendor/autoload.php';
+require_once __DIR__.'/SchemaFixture.php';
+
+class PostgresSchemaTest extends PHPUnit_Framework_TestCase
+{
+ /**
+ * @var PicoDb\Database
+ */
+ private $db;
+
+ public function setUp()
+ {
+ $this->db = new PicoDb\Database(array('driver' => 'postgres', 'hostname' => 'localhost', 'username' => 'postgres', 'password' => 'postgres', 'database' => 'picodb'));
+ $this->db->getConnection()->exec('DROP TABLE IF EXISTS test1');
+ $this->db->getConnection()->exec('DROP TABLE IF EXISTS test2');
+ $this->db->getConnection()->exec('DROP TABLE IF EXISTS schema_version');
+ }
+
+ public function testMigrations()
+ {
+ $this->assertTrue($this->db->schema()->check(2));
+ $this->assertEquals(2, $this->db->getDriver()->getSchemaVersion());
+ }
+
+ public function testFailedMigrations()
+ {
+ $this->assertEquals(0, $this->db->getDriver()->getSchemaVersion());
+ $this->assertFalse($this->db->schema()->check(3));
+ $this->assertEquals(2, $this->db->getDriver()->getSchemaVersion());
+
+ $logs = $this->db->getLogMessages();
+ $this->assertNotEmpty($logs);
+ $this->assertEquals('Running migration \Schema\version_1', $logs[0]);
+ $this->assertEquals('Running migration \Schema\version_2', $logs[1]);
+ $this->assertEquals('Running migration \Schema\version_3', $logs[2]);
+ $this->assertStringStartsWith('SQLSTATE[42601]: Syntax error', $logs[3]);
+ }
+}