diff options
Diffstat (limited to 'tests/units/Model')
| -rw-r--r-- | tests/units/Model/CommentModelTest.php | 3 | ||||
| -rw-r--r-- | tests/units/Model/ConfigModelTest.php | 125 | ||||
| -rw-r--r-- | tests/units/Model/ConfigTest.php | 116 | ||||
| -rw-r--r-- | tests/units/Model/InviteModelTest.php | 27 | ||||
| -rw-r--r-- | tests/units/Model/ProjectModelTest.php | 33 | ||||
| -rw-r--r-- | tests/units/Model/ProjectPermissionModelTest.php | 21 | ||||
| -rw-r--r-- | tests/units/Model/UserMentionTest.php | 114 |
7 files changed, 207 insertions, 232 deletions
diff --git a/tests/units/Model/CommentModelTest.php b/tests/units/Model/CommentModelTest.php index 4178a839..c75401cc 100644 --- a/tests/units/Model/CommentModelTest.php +++ b/tests/units/Model/CommentModelTest.php @@ -26,6 +26,7 @@ class CommentModelTest extends Base $this->assertEquals(1, $comment['user_id']); $this->assertEquals('admin', $comment['username']); $this->assertEquals(time(), $comment['date_creation'], '', 3); + $this->assertEquals(time(), $comment['date_modification'], '', 3); $comment = $commentModel->getById(2); $this->assertNotEmpty($comment); @@ -34,6 +35,7 @@ class CommentModelTest extends Base $this->assertEquals(0, $comment['user_id']); $this->assertEquals('', $comment['username']); $this->assertEquals(time(), $comment['date_creation'], '', 3); + $this->assertEquals(time(), $comment['date_modification'], '', 3); } public function testGetAll() @@ -73,6 +75,7 @@ class CommentModelTest extends Base $comment = $commentModel->getById(1); $this->assertNotEmpty($comment); $this->assertEquals('bla', $comment['comment']); + $this->assertEquals(time(), $comment['date_modification'], '', 3); } public function testRemove() diff --git a/tests/units/Model/ConfigModelTest.php b/tests/units/Model/ConfigModelTest.php new file mode 100644 index 00000000..bbc792e3 --- /dev/null +++ b/tests/units/Model/ConfigModelTest.php @@ -0,0 +1,125 @@ +<?php + +require_once __DIR__.'/../Base.php'; + +use Kanboard\Model\ConfigModel; + +class ConfigModelTest extends Base +{ + public function testRegenerateToken() + { + $configModel = new ConfigModel($this->container); + $token = $configModel->getOption('api_token'); + $this->assertTrue($configModel->regenerateToken('api_token')); + $this->assertNotEquals($token, $configModel->getOption('api_token')); + } + + public function testCRUDOperations() + { + $configModel = new ConfigModel($this->container); + + $this->assertTrue($configModel->save(array('key1' => 'value1'))); + $this->assertTrue($configModel->save(array('key1' => 'value2'))); + $this->assertTrue($configModel->save(array('key2' => 'value2'))); + + $this->assertEquals('value2', $configModel->getOption('key1')); + $this->assertEquals('value2', $configModel->getOption('key2')); + $this->assertEquals('', $configModel->getOption('key3')); + $this->assertEquals('default', $configModel->getOption('key3', 'default')); + + $this->assertTrue($configModel->exists('key1')); + $this->assertFalse($configModel->exists('key3')); + + $this->assertTrue($configModel->save(array('key1' => 'value1'))); + + $this->assertArrayHasKey('key1', $configModel->getAll()); + $this->assertArrayHasKey('key2', $configModel->getAll()); + + $this->assertContains('value1', $configModel->getAll()); + $this->assertContains('value2', $configModel->getAll()); + } + + public function testSaveApplicationUrl() + { + $configModel = new ConfigModel($this->container); + + $this->assertTrue($configModel->save(array('application_url' => 'http://localhost/'))); + $this->assertEquals('http://localhost/', $configModel->getOption('application_url')); + + $this->assertTrue($configModel->save(array('application_url' => 'http://localhost'))); + $this->assertEquals('http://localhost/', $configModel->getOption('application_url')); + + $this->assertTrue($configModel->save(array('application_url' => ''))); + $this->assertEquals('', $configModel->getOption('application_url')); + } + + public function testDefaultValues() + { + $configModel = new ConfigModel($this->container); + + $this->assertEquals(172800, $configModel->getOption('board_highlight_period')); + $this->assertEquals(60, $configModel->getOption('board_public_refresh_interval')); + $this->assertEquals(10, $configModel->getOption('board_private_refresh_interval')); + $this->assertEmpty($configModel->getOption('board_columns')); + + $this->assertEquals('yellow', $configModel->getOption('default_color')); + $this->assertEquals('en_US', $configModel->getOption('application_language')); + $this->assertEquals('UTC', $configModel->getOption('application_timezone')); + $this->assertEquals('m/d/Y', $configModel->getOption('application_date_format')); + $this->assertEmpty($configModel->getOption('application_url')); + $this->assertEmpty($configModel->getOption('application_stylesheet')); + $this->assertEquals('USD', $configModel->getOption('application_currency')); + + $this->assertEquals(0, $configModel->getOption('calendar_user_subtasks_time_tracking')); + $this->assertEquals('date_started', $configModel->getOption('calendar_user_tasks')); + $this->assertEquals('date_started', $configModel->getOption('calendar_user_tasks')); + + $this->assertEquals(0, $configModel->getOption('integration_gravatar')); + $this->assertEquals(1, $configModel->getOption('cfd_include_closed_tasks')); + $this->assertEquals(1, $configModel->getOption('password_reset')); + + $this->assertEquals(1, $configModel->getOption('subtask_time_tracking')); + $this->assertEquals(0, $configModel->getOption('subtask_restriction')); + $this->assertEmpty($configModel->getOption('project_categories')); + + $this->assertEmpty($configModel->getOption('webhook_url_task_modification')); + $this->assertEmpty($configModel->getOption('webhook_url_task_creation')); + $this->assertNotEmpty($configModel->getOption('webhook_token')); + $this->assertEmpty($configModel->getOption('webhook_url')); + + $this->assertNotEmpty($configModel->getOption('api_token')); + } + + public function testGetOption() + { + $configModel = new ConfigModel($this->container); + + $this->assertEquals('', $configModel->getOption('board_columns')); + $this->assertEquals('test', $configModel->getOption('board_columns', 'test')); + $this->assertEquals(0, $configModel->getOption('board_columns', 0)); + } + + public function testGetWithCaching() + { + $configModel = new ConfigModel($this->container); + + $this->assertEquals('UTC', $configModel->get('application_timezone')); + $this->assertTrue($configModel->save(array('application_timezone' => 'Europe/Paris'))); + + $this->assertEquals('UTC', $configModel->get('application_timezone')); // cached value + $this->assertEquals('Europe/Paris', $configModel->getOption('application_timezone')); + + $this->assertEquals('', $configModel->get('board_columns')); + $this->assertEquals('test', $configModel->get('board_columns', 'test')); + $this->assertEquals('test', $configModel->get('empty_value', 'test')); + } + + public function testValueLength() + { + $configModel = new ConfigModel($this->container); + $string = str_repeat('a', 65535); + + $this->assertTrue($configModel->save(array('application_stylesheet' => $string))); + $this->assertSame($string, $configModel->getOption('application_stylesheet')); + } +} diff --git a/tests/units/Model/ConfigTest.php b/tests/units/Model/ConfigTest.php deleted file mode 100644 index 3345ee3e..00000000 --- a/tests/units/Model/ConfigTest.php +++ /dev/null @@ -1,116 +0,0 @@ -<?php - -require_once __DIR__.'/../Base.php'; - -use Kanboard\Model\ConfigModel; - -class ConfigTest extends Base -{ - public function testRegenerateToken() - { - $configModel = new ConfigModel($this->container); - $token = $configModel->getOption('api_token'); - $this->assertTrue($configModel->regenerateToken('api_token')); - $this->assertNotEquals($token, $configModel->getOption('api_token')); - } - - public function testCRUDOperations() - { - $c = new ConfigModel($this->container); - - $this->assertTrue($c->save(array('key1' => 'value1'))); - $this->assertTrue($c->save(array('key1' => 'value2'))); - $this->assertTrue($c->save(array('key2' => 'value2'))); - - $this->assertEquals('value2', $c->getOption('key1')); - $this->assertEquals('value2', $c->getOption('key2')); - $this->assertEquals('', $c->getOption('key3')); - $this->assertEquals('default', $c->getOption('key3', 'default')); - - $this->assertTrue($c->exists('key1')); - $this->assertFalse($c->exists('key3')); - - $this->assertTrue($c->save(array('key1' => 'value1'))); - - $this->assertArrayHasKey('key1', $c->getAll()); - $this->assertArrayHasKey('key2', $c->getAll()); - - $this->assertContains('value1', $c->getAll()); - $this->assertContains('value2', $c->getAll()); - } - - public function testSaveApplicationUrl() - { - $c = new ConfigModel($this->container); - - $this->assertTrue($c->save(array('application_url' => 'http://localhost/'))); - $this->assertEquals('http://localhost/', $c->getOption('application_url')); - - $this->assertTrue($c->save(array('application_url' => 'http://localhost'))); - $this->assertEquals('http://localhost/', $c->getOption('application_url')); - - $this->assertTrue($c->save(array('application_url' => ''))); - $this->assertEquals('', $c->getOption('application_url')); - } - - public function testDefaultValues() - { - $c = new ConfigModel($this->container); - - $this->assertEquals(172800, $c->getOption('board_highlight_period')); - $this->assertEquals(60, $c->getOption('board_public_refresh_interval')); - $this->assertEquals(10, $c->getOption('board_private_refresh_interval')); - $this->assertEmpty($c->getOption('board_columns')); - - $this->assertEquals('yellow', $c->getOption('default_color')); - $this->assertEquals('en_US', $c->getOption('application_language')); - $this->assertEquals('UTC', $c->getOption('application_timezone')); - $this->assertEquals('m/d/Y', $c->getOption('application_date_format')); - $this->assertEmpty($c->getOption('application_url')); - $this->assertEmpty($c->getOption('application_stylesheet')); - $this->assertEquals('USD', $c->getOption('application_currency')); - - $this->assertEquals(0, $c->getOption('calendar_user_subtasks_time_tracking')); - $this->assertEquals('date_started', $c->getOption('calendar_user_tasks')); - $this->assertEquals('date_started', $c->getOption('calendar_user_tasks')); - - $this->assertEquals(0, $c->getOption('integration_gravatar')); - $this->assertEquals(1, $c->getOption('cfd_include_closed_tasks')); - $this->assertEquals(1, $c->getOption('password_reset')); - - $this->assertEquals(1, $c->getOption('subtask_time_tracking')); - $this->assertEquals(0, $c->getOption('subtask_restriction')); - $this->assertEmpty($c->getOption('project_categories')); - - $this->assertEmpty($c->getOption('webhook_url_task_modification')); - $this->assertEmpty($c->getOption('webhook_url_task_creation')); - $this->assertNotEmpty($c->getOption('webhook_token')); - $this->assertEmpty($c->getOption('webhook_url')); - - $this->assertNotEmpty($c->getOption('api_token')); - } - - public function testGetOption() - { - $c = new ConfigModel($this->container); - - $this->assertEquals('', $c->getOption('board_columns')); - $this->assertEquals('test', $c->getOption('board_columns', 'test')); - $this->assertEquals(0, $c->getOption('board_columns', 0)); - } - - public function testGetWithCaching() - { - $c = new ConfigModel($this->container); - - $this->assertEquals('UTC', $c->get('application_timezone')); - $this->assertTrue($c->save(array('application_timezone' => 'Europe/Paris'))); - - $this->assertEquals('UTC', $c->get('application_timezone')); // cached value - $this->assertEquals('Europe/Paris', $c->getOption('application_timezone')); - - $this->assertEquals('', $c->get('board_columns')); - $this->assertEquals('test', $c->get('board_columns', 'test')); - $this->assertEquals('test', $c->get('empty_value', 'test')); - } -} diff --git a/tests/units/Model/InviteModelTest.php b/tests/units/Model/InviteModelTest.php new file mode 100644 index 00000000..3a0519fb --- /dev/null +++ b/tests/units/Model/InviteModelTest.php @@ -0,0 +1,27 @@ +<?php + +use Kanboard\Model\InviteModel; + +require_once __DIR__.'/../Base.php'; + +class InviteModelTest extends Base +{ + public function testCreation() + { + $inviteModel = new InviteModel($this->container); + + $this->container['emailClient'] + ->expects($this->exactly(2)) + ->method('send'); + + $inviteModel->createInvites(array('user@domain1.tld', '', 'user@domain2.tld'), 1); + } + + public function testRemove() + { + $inviteModel = new InviteModel($this->container); + $inviteModel->createInvites(array('user@domain1.tld', 'user@domain2.tld'), 0); + $this->assertTrue($inviteModel->remove('user@domain1.tld')); + $this->assertFalse($inviteModel->remove('foobar')); + } +} diff --git a/tests/units/Model/ProjectModelTest.php b/tests/units/Model/ProjectModelTest.php index cd86b654..1f65cad7 100644 --- a/tests/units/Model/ProjectModelTest.php +++ b/tests/units/Model/ProjectModelTest.php @@ -298,6 +298,39 @@ class ProjectModelTest extends Base $this->assertFalse($project); } + public function testEmail() + { + $projectModel = new ProjectModel($this->container); + + // Creation + $this->assertEquals(1, $projectModel->create(array('name' => 'UnitTest1', 'email' => 'test1@localhost'))); + $this->assertEquals(2, $projectModel->create(array('name' => 'UnitTest2'))); + + $project = $projectModel->getById(1); + $this->assertNotEmpty($project); + $this->assertEquals('test1@localhost', $project['email']); + + $project = $projectModel->getById(2); + $this->assertNotEmpty($project); + $this->assertEquals('', $project['email']); + + // Update + $this->assertTrue($projectModel->update(array('id' => '1', 'email' => 'test1@here'))); + + $project = $projectModel->getById(1); + $this->assertNotEmpty($project); + $this->assertEquals('test1@here', $project['email']); + + $project = $projectModel->getByEmail('test1@here'); + $this->assertEquals(1, $project['id']); + + $project = $projectModel->getByEmail('test1@localhost'); + $this->assertEmpty($project); + + $project = $projectModel->getByEmail(''); + $this->assertFalse($project); + } + public function testThatProjectCreatorAreAlsoOwner() { $projectModel = new ProjectModel($this->container); diff --git a/tests/units/Model/ProjectPermissionModelTest.php b/tests/units/Model/ProjectPermissionModelTest.php index 3313cf2d..7f604374 100644 --- a/tests/units/Model/ProjectPermissionModelTest.php +++ b/tests/units/Model/ProjectPermissionModelTest.php @@ -26,7 +26,7 @@ class ProjectPermissionModelTest extends Base $this->assertEquals(1, $projectModel->create(array('name' => 'Project 1'))); $this->assertEquals(2, $userModel->create(array('username' => 'user1'))); - $this->assertEquals(3, $userModel->create(array('username' => 'user2'))); + $this->assertEquals(3, $userModel->create(array('username' => 'user2', 'name' => 'User 2', 'email' => 'test@here', 'avatar_path' => 'test'))); $this->assertEquals(4, $userModel->create(array('username' => 'user3'))); $this->assertEquals(1, $groupModel->create('Group A')); @@ -35,7 +35,24 @@ class ProjectPermissionModelTest extends Base $this->assertTrue($groupRoleModel->addGroup(1, 1, Role::PROJECT_MEMBER)); $this->assertTrue($userRoleModel->addUser(1, 3, Role::PROJECT_MANAGER)); - $this->assertEquals(array('user1', 'user2'), $projectPermissionModel->findUsernames(1, 'us')); + $expected = array( + 'user1' => array( + 'username' => 'user1', + 'name' => null, + 'email' => null, + 'avatar_path' => null, + 'id' => '2', + ), + 'user2' => array( + 'username' => 'user2', + 'name' => 'User 2', + 'email' => 'test@here', + 'avatar_path' => 'test', + 'id' => '3', + ) + ); + + $this->assertEquals($expected, $projectPermissionModel->findUsernames(1, 'us')); $this->assertEmpty($projectPermissionModel->findUsernames(1, 'a')); $this->assertEmpty($projectPermissionModel->findUsernames(2, 'user')); } diff --git a/tests/units/Model/UserMentionTest.php b/tests/units/Model/UserMentionTest.php deleted file mode 100644 index b41c92cd..00000000 --- a/tests/units/Model/UserMentionTest.php +++ /dev/null @@ -1,114 +0,0 @@ -<?php - -require_once __DIR__.'/../Base.php'; - -use Kanboard\Core\Security\Role; -use Kanboard\Event\GenericEvent; -use Kanboard\Model\UserModel; -use Kanboard\Model\TaskModel; -use Kanboard\Model\TaskCreationModel; -use Kanboard\Model\ProjectModel; -use Kanboard\Model\ProjectUserRoleModel; -use Kanboard\Model\UserMentionModel; - -class UserMentionTest extends Base -{ - public function testGetMentionedUsersWithNoMentions() - { - $userModel = new UserModel($this->container); - $userMentionModel = new UserMentionModel($this->container); - - $this->assertNotFalse($userModel->create(array('username' => 'user1'))); - $this->assertEmpty($userMentionModel->getMentionedUsers('test')); - } - - public function testGetMentionedUsersWithNotficationDisabled() - { - $userModel = new UserModel($this->container); - $userMentionModel = new UserMentionModel($this->container); - - $this->assertNotFalse($userModel->create(array('username' => 'user1'))); - $this->assertEmpty($userMentionModel->getMentionedUsers('test @user1')); - } - - public function testGetMentionedUsersWithNotficationEnabled() - { - $userModel = new UserModel($this->container); - $userMentionModel = new UserMentionModel($this->container); - - $this->assertNotFalse($userModel->create(array('username' => 'user1'))); - $this->assertNotFalse($userModel->create(array('username' => 'user2', 'name' => 'Foobar', 'notifications_enabled' => 1))); - - $users = $userMentionModel->getMentionedUsers('test @user2'); - $this->assertCount(1, $users); - $this->assertEquals('user2', $users[0]['username']); - $this->assertEquals('Foobar', $users[0]['name']); - $this->assertEquals('', $users[0]['email']); - $this->assertEquals('', $users[0]['language']); - } - - public function testGetMentionedUsersWithNotficationEnabledAndUserLoggedIn() - { - $this->container['sessionStorage']->user = array('id' => 3); - $userModel = new UserModel($this->container); - $userMentionModel = new UserMentionModel($this->container); - - $this->assertNotFalse($userModel->create(array('username' => 'user1'))); - $this->assertNotFalse($userModel->create(array('username' => 'user2', 'name' => 'Foobar', 'notifications_enabled' => 1))); - - $this->assertEmpty($userMentionModel->getMentionedUsers('test @user2')); - } - - public function testFireEventsWithMultipleMentions() - { - $projectUserRoleModel = new ProjectUserRoleModel($this->container); - $projectModel = new ProjectModel($this->container); - $userModel = new UserModel($this->container); - $userMentionModel = new UserMentionModel($this->container); - $event = new GenericEvent(array('project_id' => 1)); - - $this->assertEquals(2, $userModel->create(array('username' => 'user1', 'name' => 'User 1', 'notifications_enabled' => 1))); - $this->assertEquals(3, $userModel->create(array('username' => 'user2', 'name' => 'User 2', 'notifications_enabled' => 1))); - - $this->assertEquals(1, $projectModel->create(array('name' => 'P1'))); - $this->assertTrue($projectUserRoleModel->addUser(1, 3, Role::PROJECT_MEMBER)); - - $this->container['dispatcher']->addListener(TaskModel::EVENT_USER_MENTION, array($this, 'onUserMention')); - - $userMentionModel->fireEvents('test @user1 @user2', TaskModel::EVENT_USER_MENTION, $event); - - $called = $this->container['dispatcher']->getCalledListeners(); - $this->assertArrayHasKey(TaskModel::EVENT_USER_MENTION.'.UserMentionTest::onUserMention', $called); - } - - public function testFireEventsWithNoProjectId() - { - $projectUserRoleModel = new ProjectUserRoleModel($this->container); - $projectModel = new ProjectModel($this->container); - $taskCreationModel = new TaskCreationModel($this->container); - $userModel = new UserModel($this->container); - $userMentionModel = new UserMentionModel($this->container); - $event = new GenericEvent(array('task_id' => 1)); - - $this->assertEquals(2, $userModel->create(array('username' => 'user1', 'name' => 'User 1', 'notifications_enabled' => 1))); - $this->assertEquals(3, $userModel->create(array('username' => 'user2', 'name' => 'User 2', 'notifications_enabled' => 1))); - - $this->assertEquals(1, $projectModel->create(array('name' => 'P1'))); - $this->assertTrue($projectUserRoleModel->addUser(1, 3, Role::PROJECT_MEMBER)); - - $this->assertEquals(1, $taskCreationModel->create(array('project_id' => 1, 'title' => 'Task 1'))); - - $this->container['dispatcher']->addListener(TaskModel::EVENT_USER_MENTION, array($this, 'onUserMention')); - - $userMentionModel->fireEvents('test @user1 @user2', TaskModel::EVENT_USER_MENTION, $event); - - $called = $this->container['dispatcher']->getCalledListeners(); - $this->assertArrayHasKey(TaskModel::EVENT_USER_MENTION.'.UserMentionTest::onUserMention', $called); - } - - public function onUserMention($event) - { - $this->assertInstanceOf('Kanboard\Event\GenericEvent', $event); - $this->assertEquals(array('id' => '3', 'username' => 'user2', 'name' => 'User 2', 'email' => null, 'language' => null), $event['mention']); - } -} |
