[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [websites/sso-kde-org] app: Fix seeder issue, add unit test for fields
From:       Sayak Banerjee <sayakb () kde ! org>
Date:       2014-10-26 8:39:14
Message-ID: E1XiJM2-0000W2-Hu () scm ! kde ! org
[Download RAW message or body]

Git commit 09b270c19ce60af6ff1f7d46bad01ce62984bc08 by Sayak Banerjee.
Committed on 26/10/2014 at 08:39.
Pushed by sayakb into branch 'master'.

Fix seeder issue, add unit test for fields

M  +2    -2    app/controllers/FieldController.php
M  +32   -50   app/database/seeds/V100Seeder.php
M  +23   -0    app/tests/helpers/TestHelper.php
A  +215  -0    app/tests/steps/FieldTest.php
M  +3    -3    app/views/field/manage.blade.php

http://commits.kde.org/websites/sso-kde-org/09b270c19ce60af6ff1f7d46bad01ce62984bc08

diff --git a/app/controllers/FieldController.php b/app/controllers/FieldController.php
index 6c95a99..54fcfdd 100755
--- a/app/controllers/FieldController.php
+++ b/app/controllers/FieldController.php
@@ -126,7 +126,7 @@ class FieldController extends BaseController {
 		Cache::tags('field')->flush();
 
 		// Build the 'field created' message
-		$link = link_to("field/permission/{$field->id}", Lang::get('field.manage_permissions'));
+		$link = link_to("field/permissions/{$field->id}", Lang::get('field.manage_permissions'));
 
 		Session::flash('messages.success', Lang::get('field.field_created', array('link' => $link)));
 
@@ -294,7 +294,7 @@ class FieldController extends BaseController {
 	 * @param  int  $id
 	 * @return View
 	 */
-	public function getPermission($id)
+	public function getPermissions($id)
 	{
 		$field = Field::findOrFail($id);
 
diff --git a/app/database/seeds/V100Seeder.php b/app/database/seeds/V100Seeder.php
index 80f1b30..2886859 100755
--- a/app/database/seeds/V100Seeder.php
+++ b/app/database/seeds/V100Seeder.php
@@ -32,84 +32,66 @@ class V100Seeder extends Seeder {
 	{
 		// Insert ACL types
 		DB::table('acl_types')->insert(array(
-			array('name' => 'Self'),
-			array('name' => 'All'),
-			array('name' => 'User'),
-			array('name' => 'Group'),
+			array('id' => 1, 'name' => 'Self'),
+			array('id' => 2, 'name' => 'All'),
+			array('id' => 3, 'name' => 'User'),
+			array('id' => 4, 'name' => 'Group'),
 		));
 
 		// Insert ACL flags
 		DB::table('acl_flags')->insert(array(
-			array('name' => 'acl_manage'),
-			array('name' => 'field_edit'),
-			array('name' => 'field_manage'),
-			array('name' => 'field_view'),
-			array('name' => 'group_edit'),
-			array('name' => 'group_manage'),
-			array('name' => 'user_edit'),
-			array('name' => 'user_manage'),
+			array('id' => 1, 'name' => 'acl_manage'),
+			array('id' => 2, 'name' => 'field_edit'),
+			array('id' => 3, 'name' => 'field_manage'),
+			array('id' => 4, 'name' => 'field_view'),
+			array('id' => 5, 'name' => 'group_edit'),
+			array('id' => 6, 'name' => 'group_manage'),
+			array('id' => 7, 'name' => 'user_edit'),
+			array('id' => 8, 'name' => 'user_manage'),
 		));
 
 		// Insert the user status values
 		DB::table('user_status')->insert(array(
-			array('name' => 'Inactive'),
-			array('name' => 'Active'),
-			array('name' => 'Blocked'),
+			array('id' => 1, 'name' => 'Inactive'),
+			array('id' => 2, 'name' => 'Active'),
+			array('id' => 3, 'name' => 'Blocked'),
 		));
 
 		// Insert token types
 		DB::table('token_types')->insert(array(
-			array('name' => 'Email'),
-			array('name' => 'Password'),
+			array('id' => 1, 'name' => 'Email'),
+			array('id' => 2, 'name' => 'Password'),
 		));
 
 		// Insert device types
 		DB::table('device_types')->insert(array(
-			array('name' => 'Computer'),
-			array('name' => 'Mobile'),
-			array('name' => 'Tablet'),
+			array('id' => 1, 'name' => 'Computer'),
+			array('id' => 2, 'name' => 'Mobile'),
+			array('id' => 3, 'name' => 'Tablet'),
 		));
 
 		// Insert group types
 		DB::table('group_types')->insert(array(
-			array('name' => 'Open'),
-			array('name' => 'Request'),
-			array('name' => 'Closed'),
+			array('id' => 1, 'name' => 'Open'),
+			array('id' => 2, 'name' => 'Request'),
+			array('id' => 3, 'name' => 'Closed'),
 		));
 
 		// Insert field categories
 		DB::table('field_categories')->insert(array(
-			array('name' => 'Basic'),
-			array('name' => 'Contact'),
-			array('name' => 'Other'),
+			array('id' => 1, 'name' => 'Basic'),
+			array('id' => 2, 'name' => 'Contact'),
+			array('id' => 3, 'name' => 'Other'),
 		));
 
 		// Insert field types
 		DB::table('field_types')->insert(array(
-			array(
-				'name'   => 'TextBox',
-				'option' => Flags::NO,
-			),
-			array(
-				'name'   => 'TextArea',
-				'option' => Flags::NO,
-			),
-			array(
-				'name'   => 'Radio',
-				'option' => Flags::YES,
-			),
-			array(
-				'name'   => 'CheckBox',
-				'option' => Flags::YES,
-			),
-			array(
-				'name'   => 'Dropdown',
-				'option' => Flags::YES,
-			),
-			array(
-				'name'   => 'DatePicker',
-				'option' => Flags::NO,
-			),
+			array('id' => 1, 'name' => 'TextBox', 'option' => Flags::NO),
+			array('id' => 2, 'name' => 'TextArea', 'option' => Flags::NO),
+			array('id' => 3, 'name' => 'Radio', 'option' => Flags::YES),
+			array('id' => 4, 'name' => 'CheckBox', 'option' => Flags::YES),
+			array('id' => 5, 'name' => 'Dropdown', 'option' => Flags::YES),
+			array('id' => 6, 'name' => 'DatePicker', 'option' => Flags::NO),
 		));
 
 		// Insert admin user account
diff --git a/app/tests/helpers/TestHelper.php b/app/tests/helpers/TestHelper.php
index f9978c4..d5fbdf0 100755
--- a/app/tests/helpers/TestHelper.php
+++ b/app/tests/helpers/TestHelper.php
@@ -154,6 +154,29 @@ class TestHelper {
 		);
 	}
 
+	/**
+	 * Creates a field in the test database
+	 *
+	 * @static
+	 * @access public
+	 * @return Field
+	 */
+	public static function createField()
+	{
+		$order = Field::where('category', FieldCategories::BASIC)->max('order') + 1;
+
+		$field = Field::create(array(
+			'name'         => 'unit test field',
+			'machine_name' => str_random(10),
+			'type'         => FieldTypes::TEXTBOX,
+			'category'     => FieldCategories::BASIC,
+			'required'     => false,
+			'order'        => $order,
+		));
+
+		return $field;
+	}
+
 }
 
 ?>
diff --git a/app/tests/steps/FieldTest.php b/app/tests/steps/FieldTest.php
new file mode 100755
index 0000000..8844f3d
--- /dev/null
+++ b/app/tests/steps/FieldTest.php
@@ -0,0 +1,215 @@
+<?php
+
+/**
+ * Keychain
+ *
+ * SSO login provider for enterprise.
+ *
+ * @package     Keychain
+ * @copyright   (c) Keychain Developers
+ * @license     http://opensource.org/licenses/BSD-3-Clause
+ * @link        https://github.com/keychain-sso/keychain
+ * @since       Version 1.0
+ * @filesource
+ */
+
+/**
+ * FieldTest class
+ *
+ * Unit test cases for FieldController
+ *
+ * @package     Keychain
+ * @subpackage  UnitTests
+ */
+class FieldTest extends KeychainTestCase {
+
+	/**
+	 * Tests the getIndex method of the controller
+	 *
+	 * @access public
+	 * @return void
+	 */
+	public function testGetIndex()
+	{
+		$admin = TestHelper::createUser(UserStatus::ACTIVE, true)->user;
+
+		$this->be($admin);
+		$this->call('GET', 'field');
+
+		$this->assertResponseOk();
+		$this->assertViewHas('fields');
+	}
+
+	/**
+	 * Tests the getIndex method of the controller when user does not
+	 * have permissions
+	 *
+	 * @access public
+	 * @return void
+	 * @expectedException \Symfony\Component\HttpKernel\Exception\HttpException
+	 */
+	public function testGetIndexNoPermissions()
+	{
+		$user = TestHelper::createUser(UserStatus::ACTIVE)->user;
+
+		$this->be($user);
+		$this->call('GET', 'field');
+	}
+
+	/**
+	 * Tests the getCreate method of the controller
+	 *
+	 * @access public
+	 * @return void
+	 */
+	public function testGetCreate()
+	{
+		$admin = TestHelper::createUser(UserStatus::ACTIVE, true)->user;
+
+		$this->be($admin);
+		$this->call('GET', 'field/create');
+
+		$this->assertResponseOk();
+		$this->assertViewHas('modal');
+	}
+
+	/**
+	 * Tests the postCreate method of the controller
+	 *
+	 * @access public
+	 * @return void
+	 */
+	public function testPostCreate()
+	{
+		$admin = TestHelper::createUser(UserStatus::ACTIVE, true)->user;
+
+		$this->be($admin);
+
+		$this->call('POST', 'field/create', array(
+			'name'     => 'field name',
+			'type'     => FieldTypes::TEXTAREA,
+			'category' => FieldCategories::BASIC,
+		));
+
+		$this->assertRedirectedTo('field');
+		$this->assertSessionHas('messages.success');
+		$this->assertEquals(1, Field::where('name', 'field name')->count());
+	}
+
+	/**
+	 * Tests the getEdit method of the controller
+	 *
+	 * @access public
+	 * @return void
+	 */
+	public function testGetEdit()
+	{
+		$admin = TestHelper::createUser(UserStatus::ACTIVE, true)->user;
+		$field = TestHelper::createField();
+
+		$this->be($admin);
+		$this->call('GET', "field/edit/{$field->id}");
+
+		$this->assertResponseOk();
+		$this->assertViewHas('modal');
+	}
+
+	/**
+	 * Tests the postEdit method of the controller
+	 *
+	 * @access public
+	 * @return void
+	 */
+	public function testPostEdit()
+	{
+		$admin = TestHelper::createUser(UserStatus::ACTIVE, true)->user;
+		$field = TestHelper::createField();
+
+		$this->be($admin);
+
+		$this->call('POST', 'field/edit', array(
+			'id'       => $field->id,
+			'name'     => 'field name new',
+			'category' => FieldCategories::BASIC,
+		));
+
+		$this->assertRedirectedTo('field');
+		$this->assertSessionHas('messages.success');
+		$this->assertEquals(1, Field::where('name', 'field name new')->count());
+	}
+
+	/**
+	 * Tests the getDelete method of the controller
+	 *
+	 * @access public
+	 * @return void
+	 */
+	public function testGetDelete()
+	{
+		$admin = TestHelper::createUser(UserStatus::ACTIVE, true)->user;
+		$field = TestHelper::createField();
+
+		$this->be($admin);
+		$this->call('GET', "field/delete/{$field->id}");
+
+		$this->assertSessionHas('messages.success');
+		$this->assertEquals(null, Field::find($field->id));
+	}
+
+	/**
+	 * Tests the getMove method of the controller with direction as 'up'
+	 *
+	 * @access public
+	 * @return void
+	 */
+	public function testGetMoveUp()
+	{
+		$admin = TestHelper::createUser(UserStatus::ACTIVE, true)->user;
+		$fieldTop = TestHelper::createField();
+		$fieldBottom = TestHelper::createField();
+
+		$this->be($admin);
+		$this->call('GET', "field/move/up/{$fieldBottom->id}");
+
+		$this->assertEquals(1, Field::find($fieldBottom->id)->order);
+		$this->assertEquals(2, Field::find($fieldTop->id)->order);
+	}
+
+	/**
+	 * Tests the getMove method of the controller with direction as 'down'
+	 *
+	 * @access public
+	 * @return void
+	 */
+	public function testGetMoveDown()
+	{
+		$admin = TestHelper::createUser(UserStatus::ACTIVE, true)->user;
+		$fieldTop = TestHelper::createField();
+		$fieldBottom = TestHelper::createField();
+
+		$this->be($admin);
+		$this->call('GET', "field/move/down/{$fieldTop->id}");
+
+		$this->assertEquals(1, Field::find($fieldBottom->id)->order);
+		$this->assertEquals(2, Field::find($fieldTop->id)->order);
+	}
+
+	/**
+	 * Tests the getPermissions method of the controller
+	 *
+	 * @access public
+	 * @return void
+	 */
+	public function testGetPermissions()
+	{
+		$admin = TestHelper::createUser(UserStatus::ACTIVE, true)->user;
+		$field = TestHelper::createField();
+
+		$this->be($admin);
+		$this->call('GET', "field/permissions/{$field->id}");
+
+		$this->assertResponseOk();
+		$this->assertViewHas('acl');
+	}
+
+}
diff --git a/app/views/field/manage.blade.php b/app/views/field/manage.blade.php
index b088c6a..4ae915e 100755
--- a/app/views/field/manage.blade.php
+++ b/app/views/field/manage.blade.php
@@ -53,7 +53,7 @@
 
 								<ul class="dropdown-menu">
 									<li>
-										<a href="{{ url("field/permission/{$fieldBasic->id}") }}">
+										<a href="{{ url("field/permissions/{$fieldBasic->id}") }}">
 											{{ Lang::get('global.permissions') }}
 										</a>
 									</li>
@@ -113,7 +113,7 @@
 
 								<ul class="dropdown-menu">
 									<li>
-										<a href="{{ url("field/permission/{$fieldContact->id}") }}">
+										<a href="{{ url("field/permissions/{$fieldContact->id}") }}">
 											{{ Lang::get('global.permissions') }}
 										</a>
 									</li>
@@ -173,7 +173,7 @@
 
 								<ul class="dropdown-menu">
 									<li>
-										<a href="{{ url("field/permission/{$fieldOther->id}") }}">
+										<a href="{{ url("field/permissions/{$fieldOther->id}") }}">
 											{{ Lang::get('global.permissions') }}
 										</a>
 									</li>
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic