From 6d8764c5366e0b1baf66da50230dac623edb2450 Mon Sep 17 00:00:00 2001
From: Jacek Kowalski <Jacek@jacekk.info>
Date: Sun, 06 Jul 2014 22:25:29 +0000
Subject: [PATCH] [core] Umożliwienie ustawienia katalogu z danymi sesji użytkowników i dostosowanie testów jednostkowych.
---
tests/Core/BotSessionTest.php | 72 ++++++++++++++++++++----------------
1 files changed, 40 insertions(+), 32 deletions(-)
diff --git a/tests/Core/BotSessionTest.php b/tests/Core/BotSessionTest.php
index 1b2209f..62a79d7 100644
--- a/tests/Core/BotSessionTest.php
+++ b/tests/Core/BotSessionTest.php
@@ -1,68 +1,77 @@
<?php
class BotSessionTest extends PHPUnit_Framework_TestCase {
- function testSessionFolder() {
- $dbFolder = dirname(__FILE__).'/../../database';
+ private static $dataFolder;
+ private static $legacyFolder;
+
+ private static function tmpdir() {
+ $tmpName = tempnam(sys_get_temp_dir(), 'Bot');
+ unlink($tmpName);
+ mkdir($tmpName);
+ return $tmpName;
+ }
+
+ private static function rmdir($dir) {
+ foreach(glob($dir.'/*', GLOB_NOSORT) as $name) {
+ if($name == '.' || $name == '..') continue;
+
+ if(is_dir($name)) {
+ self::rmdir($name);
+ } else {
+ unlink($name);
+ }
+ }
- $this->assertTrue(is_writable($dbFolder));
- $this->assertTrue(count(glob($dbFolder.'/*.sqlite')) == 0);
+ rmdir($dir);
}
/**
- * @depends testSessionFolder
+ * Create one-time directories for testing purposes.
*/
+ static function setUpBeforeClass() {
+ self::$dataFolder = self::tmpdir();
+ self::$legacyFolder = self::tmpdir();
+ }
+
function testPullEmpty() {
- $dbFolder = dirname(__FILE__).'/../../database';
-
- $session = new BotSession('test://user1@test');
+ $session = new BotSession('test://user1@test', self::$dataFolder, self::$legacyFolder);
$session->setClass('test');
$this->assertEquals(array(), $session->pull());
- $this->assertTrue(count(glob($dbFolder.'/*.sqlite')) == 1);
+ $this->assertTrue(count(glob(self::$dataFolder.'/*.sqlite')) == 1);
}
/**
- * @depends testPullEmpty
* @expectedException Exception
*/
function testSetClass() {
- $session = new BotSession('test://user1');
+ $session = new BotSession('test://testException', self::$dataFolder, self::$legacyFolder);
$session->pull();
}
- /**
- * @depends testPullEmpty
- */
function testLegacyImport() {
- $dbFolder = dirname(__FILE__).'/../../database';
- $oldDbFolder = $dbFolder = dirname(__FILE__).'/../../db';
-
$data = array('test' => true, 'other' => 'yes, sir!');
$data_serialized = serialize($data);
- $this->assertTrue(mkdir($oldDbFolder));
- $this->assertTrue(is_writable($oldDbFolder));
- $this->assertTrue(mkdir($oldDbFolder.'/test'));
+ $this->assertTrue(mkdir(self::$legacyFolder.'/test'));
- $filename = $oldDbFolder.'/test/testUser.ggdb';
+ $filename = self::$legacyFolder.'/test/legacyUser.ggdb';
$this->assertEquals(strlen($data_serialized), file_put_contents($filename, $data_serialized));
$this->assertEquals($data_serialized, file_get_contents($filename));
- $session = new BotSession('test://testUser@test');
+ $session = new BotSession('test://legacyUser@test', self::$dataFolder, self::$legacyFolder);
$session->setClass('test');
$this->assertTrue(isset($session->test));
$this->assertEquals($data, $session->pull());
$this->assertFalse(file_exists($filename));
- $this->assertTrue(rmdir($oldDbFolder.'/test'));
- $this->assertTrue(rmdir($oldDbFolder));
}
/**
* @depends testPullEmpty
*/
function testManualExample() {
- $session = new BotSession('test://user1@test');
+ $session = new BotSession('test://user1@test', self::$dataFolder, self::$legacyFolder);
$session->setClass('test');
// Ustawienie pojedynczej wartości
@@ -108,7 +117,7 @@
* @depends testManualExample
*/
function testManualExample2() {
- $session = new BotSession('test://user1@test');
+ $session = new BotSession('test://user1@test', self::$dataFolder, self::$legacyFolder);
$session->setClass('test');
$array = array(
@@ -124,13 +133,12 @@
$this->assertEquals(array(), $session->pull());
}
- /**
- * @depends testManualExample2
- */
- function testCleanup() {
- $dbFolder = dirname(__FILE__).'/../../database';
- foreach(glob($dbFolder.'/*.sqlite') as $file) {
+ static function tearDownAfterClass() {
+ foreach(glob(self::$dataFolder.'/*.sqlite') as $file) {
unlink($file);
}
+
+ self::rmdir(self::$dataFolder);
+ self::rmdir(self::$legacyFolder);
}
}
--
Gitblit v1.9.1