diff options
author | sgiehl <stefan@piwik.org> | 2015-10-28 23:24:06 +0300 |
---|---|---|
committer | sgiehl <stefan@piwik.org> | 2015-10-28 23:24:06 +0300 |
commit | c485c086be538e87ba92f26c1f3edd585c55bd46 (patch) | |
tree | 88235f06262b7b96baaf1c20207ae3f29c16158f /plugins/LanguagesManager | |
parent | 07229d109d80e66cad3e4eb3f7bd2635d5c599fb (diff) |
added some tests for LanguagesManager Model class
Diffstat (limited to 'plugins/LanguagesManager')
-rw-r--r-- | plugins/LanguagesManager/Test/Integration/ModelTest.php | 136 |
1 files changed, 136 insertions, 0 deletions
diff --git a/plugins/LanguagesManager/Test/Integration/ModelTest.php b/plugins/LanguagesManager/Test/Integration/ModelTest.php new file mode 100644 index 0000000000..023b43f293 --- /dev/null +++ b/plugins/LanguagesManager/Test/Integration/ModelTest.php @@ -0,0 +1,136 @@ +<?php +/** + * Piwik - free/libre analytics platform + * + * @link http://piwik.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + */ + +namespace Piwik\Plugins\LanguagesManager\tests\Integration; + +use Piwik\Common; +use Piwik\Db; +use Piwik\Plugins\LanguagesManager\Model; +use Piwik\Tests\Framework\TestCase\IntegrationTestCase; + +/** + * @group LanguagesManager + * @group ModelTest + * @group Plugins + */ +class ModelTest extends IntegrationTestCase +{ + + /** + * @var Model + */ + protected $model; + + public function setUp() + { + $this->model = new Model(); + parent::setUp(); + } + + public function test_install_ShouldNotFailAndActuallyCreateTheDatabases() + { + $this->assertContainTables(array('user_language')); + + $columns = Db::fetchAll('show columns from ' . Common::prefixTable('user_language')); + $this->assertCount(3, $columns); + } + + public function test_uninstall_ShouldNotFailAndRemovesAllAlertTables() + { + Model::uninstall(); + + $this->assertNotContainTables(array('user_language')); + + Model::install(); + } + + public function test_handlesUserLanguageEntriesCorrectly() + { + $this->model->setLanguageForUser('admin', 'de'); + + $this->assertTableEntryCount(1); + + $this->assertEquals('de', $this->model->getLanguageForUser('admin')); + + $this->model->deleteUserLanguage('admin'); + + $this->assertTableEntryCount(0); + } + + public function test_handlesUserTimeFormatEntriesCorrectly() + { + $this->model->set12HourClock('admin', false); + + $this->assertTableEntryCount(1); + + $this->assertEquals(false, $this->model->uses12HourClock('admin')); + + $this->model->deleteUserLanguage('admin'); + + $this->assertTableEntryCount(0); + } + + public function test_handlesUserLanguageAndTimeFormatEntriesCorrectly() + { + $this->model->setLanguageForUser('admin', 'de'); + + $this->assertTableEntryCount(1); + + $this->model->set12HourClock('admin', false); + $this->model->set12HourClock('user', true); + + $this->assertTableEntryCount(2); + + $this->assertEquals('de', $this->model->getLanguageForUser('admin')); + $this->assertEquals('', $this->model->getLanguageForUser('user')); + $this->assertEquals(false, $this->model->uses12HourClock('admin')); + $this->assertEquals(true, $this->model->uses12HourClock('user')); + + $this->model->deleteUserLanguage('admin'); + + $this->assertTableEntryCount(1); + } + + private function assertTableEntryCount($count) + { + $entryCount = Db::fetchOne('SELECT COUNT(*) FROM ' . Common::prefixTable('user_language')); + + $this->assertEquals($count, $entryCount); + + } + + private function assertContainTables($expectedTables) + { + $tableNames = $this->getCurrentAvailableTableNames(); + + foreach ($expectedTables as $expectedTable) { + $this->assertContains(Common::prefixTable($expectedTable), $tableNames); + } + } + + private function assertNotContainTables($expectedTables) + { + $tableNames = $this->getCurrentAvailableTableNames(); + + foreach ($expectedTables as $expectedTable) { + $this->assertNotContains(Common::prefixTable($expectedTable), $tableNames); + } + } + + private function getCurrentAvailableTableNames() + { + $tables = Db::fetchAll('show tables'); + + $tableNames = array(); + foreach ($tables as $table) { + $tableNames[] = array_shift($table); + } + + return $tableNames; + } +} |