X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=plugins%2FIrc%2Fextlib%2Fphergie%2FTests%2FPhergie%2FPlugin%2FSpellCheckTest.php;h=369a0c64446ea7125ecc1449f621c157e17eead2;hb=b716d01a41c54c06676a1e54a48c36e05755a247;hp=8ed9f0d36d09ecfc2fae6bcccaf623244594e225;hpb=bee50840728ca8af99e988bcce71876849ba61d3;p=quix0rs-gnu-social.git diff --git a/plugins/Irc/extlib/phergie/Tests/Phergie/Plugin/SpellCheckTest.php b/plugins/Irc/extlib/phergie/Tests/Phergie/Plugin/SpellCheckTest.php index 8ed9f0d36d..369a0c6444 100644 --- a/plugins/Irc/extlib/phergie/Tests/Phergie/Plugin/SpellCheckTest.php +++ b/plugins/Irc/extlib/phergie/Tests/Phergie/Plugin/SpellCheckTest.php @@ -12,15 +12,13 @@ * http://phergie.org/license * * @category Phergie - * @package Phergie + * @package Phergie_Tests * @author Phergie Development Team * @copyright 2008-2010 Phergie Development Team (http://phergie.org) * @license http://phergie.org/license New BSD License - * @link http://pear.phergie.org/package/Phergie + * @link http://pear.phergie.org/package/Phergie_Tests */ -require_once dirname(__FILE__) . '/TestCase.php'; - /** * Unit test suite for Pherge_Plugin_SpellCheck. * @@ -28,178 +26,141 @@ require_once dirname(__FILE__) . '/TestCase.php'; * @package Phergie_Tests * @author Phergie Development Team * @license http://phergie.org/license New BSD License - * @link http://pear.phergie.org/package/Phergie + * @link http://pear.phergie.org/package/Phergie_Tests */ class Phergie_Plugin_SpellCheckTest extends Phergie_Plugin_TestCase { - /** - * Current SpellCheck plugin instance + * Checks for the pspell extension. * - * @var Phergie_Plugin_SpellCheck - */ - protected $spell; - - /** - * Sets up the fixture, for example, opens a network connection. - * This method is called before a test is executed. - * * @return void */ - protected function setUp() + public function setUp() { - $this->config = array('spellcheck.lang' => 'en'); + parent::setUp(); - $this->spell = new Phergie_Plugin_SpellCheck(); - $this->setPlugin(new Phergie_Plugin_Command()); - - $config = $this->plugin->getConfig(); - - $handler = new Phergie_Plugin_Handler($config, $this->handler); - $this->plugin->setPluginHandler($handler); - - $handler->addPlugin($this->plugin); - $handler->addPlugin($this->spell); - - $this->spell->setEventHandler($this->handler); - $this->spell->setConnection($this->connection); + if (!extension_loaded('pspell')) { + $this->markTestSkipped('pspell extension not available'); + } } /** - * @event Phergie_Event_Request::privmsg - * @eventArg #zftalk - * @eventArg spell + * Tests for the plugin failing to load when the language setting is not + * specified. + * + * @return void */ - public function testSpell() + public function testLanguageSettingNotSet() { - $this->spell->onLoad(); - - $this->copyEvent(); - $this->plugin->onPrivMsg(); - $this->assertDoesNotHaveEvent(Phergie_Event_Command::TYPE_PRIVMSG); + try { + $this->plugin->onLoad(); + $this->fail('Expected exception was not thrown'); + } catch (Phergie_Plugin_Exception $e) { + return; + } + $this->fail('Unexpected exception was thrown'); } /** - * @event Phergie_Event_Request::privmsg - * @eventArg #phergie - * @eventArg spell test + * Tests for the plugin requiring the Command plugin as a dependency. + * + * @return void */ - public function testSpellTest() + public function testRequiresCommandPlugin() { - $this->spell->onLoad(); - - $this->copyEvent(); - $this->plugin->onPrivMsg(); - - $events = $this->getResponseEvents(Phergie_Event_Command::TYPE_PRIVMSG); - - $this->assertEquals(1, count($events)); - foreach ($events as $event) { - $args = $event->getArguments(); - - $this->assertEquals('#phergie', $args[0]); - - $this->assertContains('CheckSpellUser:', $args[1]); - $this->assertContains('test', $args[1]); - $this->assertContains('correct', $args[1]); - } + $this->setConfig('spellcheck.lang', 'en'); + $this->assertRequiresPlugin('Command'); + $this->plugin->onLoad(); } /** - * @event Phergie_Event_Request::privmsg - * @eventArg #phergie - * @eventArg spell testz + * Tests for the plugin failing to load because of a dictionary error. + * + * @return void */ - public function testSpellTestz() + public function testLoadDictionaryError() { - $this->spell->onLoad(); - - $this->copyEvent(); - $this->plugin->onPrivMsg(); - - $events = $this->getResponseEvents(Phergie_Event_Command::TYPE_PRIVMSG); - - $this->assertEquals(1, count($events)); - foreach ($events as $event) { - $args = $event->getArguments(); - - $this->assertEquals('#phergie', $args[0]); - - $this->assertContains('CheckSpellUser:', $args[1]); - $this->assertRegExp('/([a-z]+, ){4}/', $args[1]); - $this->assertContains('testz', $args[1]); - $this->assertContains('test,', $args[1]); + $this->setConfig('spellcheck.lang', 'foo'); + try { + $this->plugin->onLoad(); + $this->fail('Expected exception not thrown'); + } catch (Phergie_Plugin_Exception $e) { + return; } + $this->fail('Unexpected exception was thrown'); } /** - * @event Phergie_Event_Request::privmsg - * @eventArg #phergie - * @eventArg spell testz + * Initializes a spell check event. + * + * @param string $word Word to be checked + * + * @return void */ - public function testSpellMoreSuggestions() + private function initializeSpellCheckEvent($word) { - $config = $this->spell->getConfig(); - - $this->copyEvent(); - $config['spellcheck.limit'] = 6; - - $this->spell->onLoad(); - $this->plugin->onPrivMsg(); - - $events = $this->getResponseEvents(Phergie_Event_Command::TYPE_PRIVMSG); - - $this->assertEquals(1, count($events)); - foreach ($events as $event) { - $args = $event->getArguments(); - - $this->assertEquals('#phergie', $args[0]); - - $this->assertContains('CheckSpellUser:', $args[1]); - $this->assertRegExp('/([a-z]+, ){5}/', $args[1]); - $this->assertContains('testz', $args[1]); - $this->assertContains('test,', $args[1]); - } + $this->setConfig('spellcheck.lang', 'en'); + $this->plugin->onLoad(); + $args = array( + 'receiver' => $this->source, + 'text' => 'spell ' . $word + ); + $event = $this->getMockEvent('privmsg', $args); + $this->plugin->setEvent($event); } /** - * @event Phergie_Event_Request::privmsg - * @eventArg #phergie - * @eventArg spell qwertyuiopasdfghjklzxcvbnm + * Checks for a specified response to a spell check event. + * + * @param string $word Work being checked + * @param string $response Expected response + * + * @return void */ - public function testSpellNoSuggestions() + private function checkForSpellCheckResponse($word, $response) { - $this->spell->onLoad(); - - $this->copyEvent(); - $this->plugin->onPrivMsg(); - - $events = $this->getResponseEvents(Phergie_Event_Command::TYPE_PRIVMSG); - - $this->assertEquals(1, count($events)); - foreach ($events as $event) { - $args = $event->getArguments(); - - $this->assertEquals('#phergie', $args[0]); - - $this->assertContains('CheckSpellUser:', $args[1]); - $this->assertContains('find any suggestions', $args[1]); - } + $this->assertEmitsEvent('privmsg', array($this->source, $response)); + $this->plugin->onCommandSpell($word); } - + /** - * Copy event from command to spell plugin - * + * Tests for the plugin returning a response for a correctly spelled word. + * * @return void */ - protected function copyEvent() + public function testRespondsForCorrectlySpelledWord() { - $hostmask = Phergie_Hostmask::fromString('CheckSpellUser!test@testing.org'); - - $event = $this->plugin->getEvent(); - $event->setHostmask($hostmask); + $word = 'test'; + $this->initializeSpellCheckEvent($word); + $response = $this->nick . ': The word "' . $word . '" seems to be spelled correctly.'; + $this->checkForSpellCheckResponse($word, $response); + } - $this->spell->setEvent($event); + /** + * Tests for the plugin returning a response when it can't find any + * suggestions for a word. + * + * @return void + */ + public function testRespondsWithoutSuggestions() + { + $word = 'kjlfljlkjljkljlj'; + $this->initializeSpellCheckEvent($word); + $response = $this->nick . ': I could not find any suggestions for "' . $word . '".'; + $this->checkForSpellCheckResponse($word, $response); } + /** + * Tests for the plugin returning a response when it is able to find + * suggestions for a word. + * + * @return void + */ + public function testRespondsWithSuggestions() + { + $word = 'teh'; + $this->initializeSpellCheckEvent($word); + $response = $this->nick . ': Suggestions for "' . $word . '": the, Te, tech, Th, eh.'; + $this->checkForSpellCheckResponse($word, $response); + } }