From 728c6a5a7d72d54ce34b044139c2a7ad18ee0cb7 Mon Sep 17 00:00:00 2001 From: Daniel Carbone Date: Sun, 10 Aug 2014 10:52:59 -0500 Subject: [PATCH] More test methods and slight modifications to UglyQueue --- src/UglyQueue.php | 60 ++++++---- tests/UglyQueue/UglyQueueTest.php | 165 +++++++++++++++++++++++++-- tests/misc/cleanup.php | 4 + tests/misc/tasty-sandwich/index.html | 2 +- 4 files changed, 196 insertions(+), 35 deletions(-) create mode 100644 tests/misc/cleanup.php diff --git a/src/UglyQueue.php b/src/UglyQueue.php index 270618e..a9e01ec 100644 --- a/src/UglyQueue.php +++ b/src/UglyQueue.php @@ -43,6 +43,8 @@ class UglyQueue throw new \RuntimeException('UglyQueue::__construct - "$config[\'queue-base-dir\']" points to a directory that either doesn\'t exist or is not writable'); $this->config = $config; + + $this->queueBaseDir = $this->config['queue-base-dir']; } /** @@ -130,14 +132,12 @@ class UglyQueue } /** - * @param string $queue_group + * @param string $queueGroup */ - public function initialize($queue_group) + public function initialize($queueGroup) { - $this->queueBaseDir = $this->config['queue-base-dir']; - - $this->queueGroup = $queue_group; - $this->queueGroupDirPath = $this->queueBaseDir.$queue_group.DIRECTORY_SEPARATOR; + $this->queueGroup = $queueGroup; + $this->queueGroupDirPath = $this->queueBaseDir.$queueGroup.DIRECTORY_SEPARATOR; // Create directory for this queue group if (!is_dir($this->queueGroupDirPath)) @@ -293,22 +293,6 @@ HTML; } } - /** - * @return string - */ - public function getQueueGroup() - { - return $this->queueGroup; - } - - /** - * @return string - */ - public function getQueueBaseDir() - { - return $this->queueBaseDir; - } - /** * @return int|null * @throws \RuntimeException @@ -352,4 +336,36 @@ HTML; fclose($queue_file_handle); return false; } + + /** + * @return boolean + */ + public function getInit() + { + return $this->init; + } + + /** + * @return string + */ + public function getQueueBaseDir() + { + return $this->queueBaseDir; + } + + /** + * @return string + */ + public function getQueueGroupDirPath() + { + return $this->queueGroupDirPath; + } + + /** + * @return string + */ + public function getQueueGroup() + { + return $this->queueGroup; + } } \ No newline at end of file diff --git a/tests/UglyQueue/UglyQueueTest.php b/tests/UglyQueue/UglyQueueTest.php index d40b1e7..a21339d 100644 --- a/tests/UglyQueue/UglyQueueTest.php +++ b/tests/UglyQueue/UglyQueueTest.php @@ -1,5 +1,9 @@ getQueueBaseDir(); + + $this->assertFileExists( + $queueBaseDir, + 'Could not verify that Queue Base Dir exists'); + } + + /** + * @covers \DCarbone\UglyQueue::getQueueGroup + * @uses \DCarbone\UglyQueue + * @depends testCanConstructUglyQueueWithValidParameter + * @param \DCarbone\UglyQueue $uglyQueue + */ + public function testGetQueueGroupReturnsNullBeforeInitialization(\DCarbone\UglyQueue $uglyQueue) + { + $queueGroup = $uglyQueue->getQueueGroup(); + + $this->assertNull($queueGroup); + } + + /** + * @covers \DCarbone\UglyQueue::getInit + * @uses \DCarbone\UglyQueue + * @depends testCanConstructUglyQueueWithValidParameter + * @param \DCarbone\UglyQueue $uglyQueue + */ + public function testGetInitReturnsFalseBeforeInitialization(\DCarbone\UglyQueue $uglyQueue) + { + $init = $uglyQueue->getInit(); + $this->assertFalse($init); + } + + /** + * @covers \DCarbone\UglyQueue::getQueueGroupDirPath + * @uses \DCarbone\UglyQueue + * @depends testCanConstructUglyQueueWithValidParameter + * @param \DCarbone\UglyQueue $uglyQueue + */ + public function testGetQueueGroupDirPathReturnsNullBeforeInitialization(\DCarbone\UglyQueue $uglyQueue) + { + $queueGroupDir = $uglyQueue->getQueueGroupDirPath(); + + $this->assertNull($queueGroupDir); + } + + /** + * @covers \DCarbone\UglyQueue::initialize + * @covers \DCarbone\UglyQueue::getInit + * @uses \DCarbone\UglyQueue + * @depends testCanConstructUglyQueueWithValidParameter + * @param \DCarbone\UglyQueue $uglyQueue + * @return \DCarbone\UglyQueue + */ + public function testCanInitializeNewUglyQueue(\DCarbone\UglyQueue $uglyQueue) { $uglyQueue->initialize('tasty-sandwich'); - $this->assertTrue( - is_dir($uglyQueue->getQueueBaseDir().$uglyQueue->getQueueGroup().'/'), - 'Could not verify existence of queue group dir'); + $this->assertTrue($uglyQueue->getInit()); - $this->assertTrue( - file_exists($uglyQueue->getQueueBaseDir().$uglyQueue->getQueueGroup().'/'.'index.html'), - 'Could not verify existence of index.html in queue group dir'); - - $this->assertTrue( - file_exists($uglyQueue->getQueueBaseDir().$uglyQueue->getQueueGroup().'/'.'queue.txt'), - 'Could not verify existence of queue.txt in queue group dir'); + return $uglyQueue; } + + /** + * @covers \DCarbone\UglyQueue::getInit + * @uses \DCarbone\UglyQueue + * @depends testCanInitializeNewUglyQueue + * @param \DCarbone\UglyQueue $uglyQueue + */ + public function testGetInitReturnsTrueAfterInitialization(\DCarbone\UglyQueue $uglyQueue) + { + $init = $uglyQueue->getInit(); + $this->assertTrue($init); + } + + /** + * @covers \DCarbone\UglyQueue::getQueueGroupDirPath + * @uses \DCarbone\UglyQueue + * @depends testCanInitializeNewUglyQueue + * @param \DCarbone\UglyQueue $uglyQueue + */ + public function testCanGetQueueGroupDirectoryAfterInitialization(\DCarbone\UglyQueue $uglyQueue) + { + $queueGroupDir = $uglyQueue->getQueueGroupDirPath(); + + $this->assertFileExists($queueGroupDir); + } + + /** + * @covers \DCarbone\UglyQueue::getQueueGroup + * @uses \DCarbone\UglyQueue + * @depends testCanInitializeNewUglyQueue + * @param \DCarbone\UglyQueue $uglyQueue + */ + public function testCanGetQueueGroupAfterInitialization(\DCarbone\UglyQueue $uglyQueue) + { + $queueGroup = $uglyQueue->getQueueGroup(); + + $this->assertEquals('tasty-sandwich', $queueGroup); + } + + /** + * @covers \DCarbone\UglyQueue::initialize + * @covers \DCarbone\UglyQueue::__construct + * @covers \DCarbone\UglyQueue::getInit + * @uses \DCarbone\UglyQueue + */ + public function testCanInitializeExistingQueue() + { + $conf = array( + 'queue-base-dir' => dirname(__DIR__).'/misc/', + ); + + $uglyQueue = new \DCarbone\UglyQueue($conf); + + $this->assertInstanceOf('\\DCarbone\\UglyQueue', $uglyQueue); + + $this->assertFalse($uglyQueue->getInit()); + + $uglyQueue->initialize('tasty-sandwich'); + + $this->assertTrue($uglyQueue->getInit()); + } + + /** + * @covers \DCarbone\UglyQueue::lock + * @covers \DCarbone\UglyQueue::createQueueLock + * @uses \DCarbone\UglyQueue + * @depends testCanInitializeNewUglyQueue + * @param \DCarbone\UglyQueue $uglyQueue + * @return \DCarbone\UglyQueue + */ + public function testCanLockUglyQueueWithDefaultTTL(\DCarbone\UglyQueue $uglyQueue) + { + $locked = $uglyQueue->lock(); + + $this->assertTrue($locked); + + $queueDir = $uglyQueue->getQueueBaseDir().$uglyQueue->getQueueGroup().'/'; + + $this->assertFileExists($queueDir.'queue.lock'); + + $decode = @json_decode(file_get_contents($queueDir.'queue.lock')); + + $this->assertTrue((json_last_error() === JSON_ERROR_NONE)); + $this->assertObjectHasAttribute('ttl', $decode); + $this->assertObjectHasAttribute('born', $decode); + $this->assertEquals(250, $decode->ttl); + + return $uglyQueue; + } + } \ No newline at end of file diff --git a/tests/misc/cleanup.php b/tests/misc/cleanup.php new file mode 100644 index 0000000..f057983 --- /dev/null +++ b/tests/misc/cleanup.php @@ -0,0 +1,4 @@ + - 403 Forbidden + 403 Forbidden

Directory access is forbidden.