Start implementing a Horde_Alarm test suite.
authorJan Schneider <jan@horde.org>
Wed, 5 May 2010 15:28:09 +0000 (17:28 +0200)
committerJan Schneider <jan@horde.org>
Wed, 5 May 2010 16:43:45 +0000 (18:43 +0200)
.gitignore
framework/Alarm/migrations/1_horde_alarms_table.php [new file with mode: 0644]
framework/Alarm/test/Horde/Alarm/AllTests.php [new file with mode: 0644]
framework/Alarm/test/Horde/Alarm/SqlTest.php [new file with mode: 0644]
framework/Alarm/test/Horde/Alarm/conf.php.dist [new file with mode: 0644]

index bcfc0a9..d7c0f56 100644 (file)
@@ -32,6 +32,7 @@ framework/*/test/*/*/*/*.out
 !framework/SyncML/tests/testpacket.php
 !framework/SyncML/tests/testsync.php
 !framework/XML_WBXML/tests/decode.php
+framework/Alarm/test/Horde/Alarm/conf.php
 framework/Db/test/Horde/Db/Adapter/conf.php
 framework/Kolab_Storage/test/Horde/Kolab/Storage/conf.php
 
diff --git a/framework/Alarm/migrations/1_horde_alarms_table.php b/framework/Alarm/migrations/1_horde_alarms_table.php
new file mode 100644 (file)
index 0000000..cbe339a
--- /dev/null
@@ -0,0 +1,32 @@
+<?php
+class HordeAlarmsTable extends Horde_Db_Migration_Base
+{
+    public function up()
+    {
+        $t = $this->createTable('horde_alarms');
+        $t->column('alarm_id', 'string', array('limit' => 255, 'null' => false));
+        $t->column('alarm_uid', 'string', array('limit' => 255));
+        $t->column('alarm_start', 'datetime', array('null' => false));
+        $t->column('alarm_end', 'datetime');
+        $t->column('alarm_methods', 'string', array('limit' => 255));
+        $t->column('alarm_params', 'text');
+        $t->column('alarm_title', 'string', array('limit' => 255, 'null' => false));
+        $t->column('alarm_text', 'text');
+        $t->column('alarm_snooze', 'datetime');
+        $t->column('alarm_dismissed', 'integer', array('limit' => 1, 'null' => false, 'default' => 0));
+        $t->column('alarm_internal', 'text');
+        $t->end();
+
+        $this->addIndex('horde_alarms', array('alarm_id'));
+        $this->addIndex('horde_alarms', array('alarm_uid'));
+        $this->addIndex('horde_alarms', array('alarm_start'));
+        $this->addIndex('horde_alarms', array('alarm_end'));
+        $this->addIndex('horde_alarms', array('alarm_snooze'));
+        $this->addIndex('horde_alarms', array('alarm_dismissed'));
+    }
+
+    public function down()
+    {
+        $this->dropTable('horde_alarms');
+    }
+}
diff --git a/framework/Alarm/test/Horde/Alarm/AllTests.php b/framework/Alarm/test/Horde/Alarm/AllTests.php
new file mode 100644 (file)
index 0000000..20acf6a
--- /dev/null
@@ -0,0 +1,36 @@
+<?php
+/**
+ * Horde_Alarm test suite
+ *
+ * @author     Jan Schneider <jan@horde.org>
+ * @license    http://www.fsf.org/copyleft/lgpl.html LGPL
+ * @category   Horde
+ * @package    Horde_Alarm
+ * @subpackage UnitTests
+ */
+
+/**
+ * Define the main method
+ */
+if (!defined('PHPUnit_MAIN_METHOD')) {
+    define('PHPUnit_MAIN_METHOD', 'Horde_Alarm_AllTests::main');
+}
+
+/**
+ * Prepare the test setup.
+ */
+require_once 'Horde/Test/AllTests.php';
+
+/**
+ * @package    Horde_Alarm
+ * @subpackage UnitTests
+ */
+class Horde_Alarm_AllTests extends Horde_Test_AllTests
+{
+}
+
+Horde_Alarm_AllTests::init('Horde_Alarm', __FILE__);
+
+if (PHPUnit_MAIN_METHOD == 'Horde_Alarm_AllTests::main') {
+    Horde_Alarm_AllTests::main();
+}
diff --git a/framework/Alarm/test/Horde/Alarm/SqlTest.php b/framework/Alarm/test/Horde/Alarm/SqlTest.php
new file mode 100644 (file)
index 0000000..eb95f60
--- /dev/null
@@ -0,0 +1,62 @@
+<?php
+/**
+ * @author     Jan Schneider <jan@horde.org>
+ * @license    http://www.fsf.org/copyleft/lgpl.html LGPL
+ * @category   Horde
+ * @package    Horde_Alarm
+ * @subpackage UnitTests
+ */
+
+class Horde_Alarm_SqlTest extends PHPUnit_Framework_TestCase
+{
+    public function setUp()
+    {
+        // @todo: remove when we no longer depend on DB.
+        error_reporting(E_ALL);
+
+        // @fixme
+        $GLOBALS['language'] = 'en_US';
+
+        $config = getenv('ALARM_TEST_CONFIG');
+        if ($config === false) {
+            $config = dirname(__FILE__) . '/conf.php';
+        }
+        if (file_exists($config)) {
+            require $config;
+        }
+        if (!isset($conf['alarm']['test'])) {
+            $this->markTestSkipped('No configuration for Horde_Alarm test.');
+            return;
+        }
+
+        $adapter = str_replace(' ', '_' , ucwords(str_replace('_', ' ', basename($conf['alarm']['test']['horde']['adapter']))));
+        $class = 'Horde_Db_Adapter_' . $adapter;
+        $this->db = new $class($conf['alarm']['test']['horde']);
+
+        $logger = new Horde_Log_Logger(new Horde_Log_Handler_Stream(STDOUT));
+        $this->migrator = new Horde_Db_Migration_Migrator($this->db, $logger, array('migrationsPath' => dirname(dirname(dirname(dirname(__FILE__)))) . '/migrations'));
+        $this->migrator->up();
+
+        $this->alarm = Horde_Alarm::factory('sql', $conf['alarm']['test']['pear']);
+    }
+
+    public function tearDown()
+    {
+        $this->migrator->down();
+    }
+
+    public function testSet()
+    {
+        $now = time();
+        $date = new Horde_Date($now);
+        $end = new Horde_Date($now + 3600);
+        $hash = array('id' => 'personalalarm',
+                      'user' => 'john',
+                      'start' => $date,
+                      'end' => $end,
+                      'methods' => array(),
+                      'params' => array(),
+                      'title' => 'This is a personal alarm.');
+        $this->alarm->set($hash);
+    }
+}
diff --git a/framework/Alarm/test/Horde/Alarm/conf.php.dist b/framework/Alarm/test/Horde/Alarm/conf.php.dist
new file mode 100644 (file)
index 0000000..b3a5a9c
--- /dev/null
@@ -0,0 +1,15 @@
+<?php
+// PEAR DB configuration.
+$conf['alarm']['test']['pear']['phptype'] = 'mysql';
+$conf['alarm']['test']['pear']['hostspec'] = 'localhost';
+$conf['alarm']['test']['pear']['username'] = '';
+$conf['alarm']['test']['pear']['password'] = '';
+$conf['alarm']['test']['pear']['database'] = 'horde';
+$conf['alarm']['test']['pear']['charset'] = 'utf-8';
+// Horde_Db configuration.
+$conf['alarm']['test']['horde']['adapter'] = 'pdo_mysql';
+$conf['alarm']['test']['horde']['host'] = 'localhost';
+$conf['alarm']['test']['horde']['username'] = '';
+$conf['alarm']['test']['horde']['password'] = '';
+$conf['alarm']['test']['horde']['dbname'] = 'horde';
+$conf['alarm']['test']['horde']['charset'] = 'utf-8';