Convert part of task validation to use CodeIgniter's validation library
This commit is contained in:
parent
4334d40ecb
commit
1ecb26ec1f
@ -24,12 +24,12 @@ $config = [
|
|||||||
[
|
[
|
||||||
'field' => 'due_hour',
|
'field' => 'due_hour',
|
||||||
'label' => 'Due Hour',
|
'label' => 'Due Hour',
|
||||||
'rules' => 'min_length[1]|less_than[24]|is_natural'
|
'rules' => 'less_than[24]|is_natural'
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
'field' => 'due_minute',
|
'field' => 'due_minute',
|
||||||
'label' => 'Due Minute',
|
'label' => 'Due Minute',
|
||||||
'rules' => 'min_length[1]|less_than[61]|is_natural'
|
'rules' => 'less_than[61]|is_natural'
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
'field' => 'due',
|
'field' => 'due',
|
||||||
|
@ -57,5 +57,23 @@ class Validation_callbacks {
|
|||||||
|
|
||||||
return $valid;
|
return $valid;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Verify that a reminder has a valid due date
|
||||||
|
*
|
||||||
|
* @param string $date
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function reminder_due($date)
|
||||||
|
{
|
||||||
|
$has_date = ($date != '0');
|
||||||
|
|
||||||
|
if ( ! $has_date)
|
||||||
|
{
|
||||||
|
$this->CI->form_validation->set_message('validate', 'You must set a due date in order to get a reminder.');
|
||||||
|
}
|
||||||
|
|
||||||
|
return $has_date;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// End of libraries/Validation_callbacks.php
|
// End of libraries/Validation_callbacks.php
|
@ -401,49 +401,18 @@ class Task_model extends CI_Model {
|
|||||||
// Clear previous validations
|
// Clear previous validations
|
||||||
$this->form_vals = NULL;
|
$this->form_vals = NULL;
|
||||||
|
|
||||||
$title = $this->input->post('title', TRUE);
|
|
||||||
$desc = $this->input->post('desc', TRUE);
|
|
||||||
$category = (int) $this->input->post('category');
|
|
||||||
$priority = (int) $this->input->post('priority');
|
|
||||||
$due = $this->input->post('due', TRUE);
|
$due = $this->input->post('due', TRUE);
|
||||||
$due_hour = $this->input->post('due_hour', TRUE);
|
$due_hour = $this->input->post('due_hour', TRUE);
|
||||||
$due_minute = $this->input->post('due_minute', TRUE);
|
$due_minute = $this->input->post('due_minute', TRUE);
|
||||||
$status = ($this->input->post('status') == FALSE) ? 1 : $this->input->post('status');
|
|
||||||
$created = time();
|
|
||||||
|
|
||||||
$err = array();
|
$err = array();
|
||||||
|
|
||||||
//Check title
|
// Basic validation
|
||||||
if(strlen($title) < 1)
|
$valid = $this->form_validation->run('task');
|
||||||
{
|
|
||||||
$err[] = "You must give the task a title";
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
//Return form values
|
|
||||||
$this->form_vals['title'] = $title;
|
|
||||||
}
|
|
||||||
|
|
||||||
//Check description
|
if ( ! $valid)
|
||||||
if(strlen($desc) < 1)
|
|
||||||
{
|
{
|
||||||
$err[] = "The task must have a description";
|
$err = array_merge($err, $this->form_validation->get_error_array());
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
//Return form values
|
|
||||||
$this->form_vals['description'] = $desc;
|
|
||||||
}
|
|
||||||
|
|
||||||
//Check task category
|
|
||||||
if((int)$category < 1)
|
|
||||||
{
|
|
||||||
$err[] = "Select a task category";
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
//Return form values
|
|
||||||
$this->form_vals['category'] = $category;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//Check due date
|
//Check due date
|
||||||
@ -452,10 +421,8 @@ class Task_model extends CI_Model {
|
|||||||
//Verify date format
|
//Verify date format
|
||||||
$valid = $this->validation_callbacks->due_date($due);
|
$valid = $this->validation_callbacks->due_date($due);
|
||||||
|
|
||||||
|
|
||||||
if ( ! $valid)
|
if ( ! $valid)
|
||||||
{
|
{
|
||||||
$err[] = "You must enter a due date in YYYY-MM-DD format.";
|
|
||||||
return $err;
|
return $err;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -537,12 +504,6 @@ class Task_model extends CI_Model {
|
|||||||
$this->groups = ( ! empty($groups)) ? $groups : FALSE;
|
$this->groups = ( ! empty($groups)) ? $groups : FALSE;
|
||||||
$this->friends = ( ! empty($friends)) ? $friends : FALSE;
|
$this->friends = ( ! empty($friends)) ? $friends : FALSE;
|
||||||
$this->share_type = $share_type;
|
$this->share_type = $share_type;
|
||||||
$this->title = $title;
|
|
||||||
$this->description = $desc;
|
|
||||||
$this->category = $category;
|
|
||||||
$this->priority = $priority;
|
|
||||||
$this->status = $status;
|
|
||||||
$this->created = $created;
|
|
||||||
$this->due = $due_timestamp;
|
$this->due = $due_timestamp;
|
||||||
$this->friend_perms = (isset($friend_perms)) ? $friend_perms : FALSE;
|
$this->friend_perms = (isset($friend_perms)) ? $friend_perms : FALSE;
|
||||||
$this->group_perms = (isset($group_perms)) ? $group_perms : FALSE;
|
$this->group_perms = (isset($group_perms)) ? $group_perms : FALSE;
|
||||||
@ -569,12 +530,19 @@ class Task_model extends CI_Model {
|
|||||||
*/
|
*/
|
||||||
public function add_task()
|
public function add_task()
|
||||||
{
|
{
|
||||||
$title = $this->title;
|
$title = $this->input->post('title', TRUE);
|
||||||
|
$desc = $this->input->post('desc', TRUE);
|
||||||
|
$category = (int) $this->input->post('category');
|
||||||
|
$priority = (int) $this->input->post('priority');
|
||||||
|
$status = ($this->input->post('status') == FALSE) ? 1 : $this->input->post('status');
|
||||||
|
$created = time();
|
||||||
|
|
||||||
|
/*$title = $this->title;
|
||||||
$desc = $this->description;
|
$desc = $this->description;
|
||||||
$category = $this->category;
|
$category = $this->category;
|
||||||
$priority = $this->priority;
|
$priority = $this->priority;
|
||||||
$status = $this->status;
|
$status = $this->status;
|
||||||
$created = $this->created;
|
$created = $this->created;*/
|
||||||
$due = $this->due;
|
$due = $this->due;
|
||||||
$uid = $this->user_id;
|
$uid = $this->user_id;
|
||||||
|
|
||||||
|
147
tests/models/TaskModelNoFixturesTest.php
Normal file
147
tests/models/TaskModelNoFixturesTest.php
Normal file
@ -0,0 +1,147 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
class TaskModelNoFixturesTest extends Todo_TestCase {
|
||||||
|
|
||||||
|
public function setUp()
|
||||||
|
{
|
||||||
|
parent::setUp();
|
||||||
|
$this->CI->load->model('task_model');
|
||||||
|
$this->CI->form_validation->reset();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function dataValidateTask()
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'Empty task with reminder validation' => [
|
||||||
|
'post' => [
|
||||||
|
'due' => 'April 27, 2014',
|
||||||
|
'reminder' => 'rem_true'
|
||||||
|
],
|
||||||
|
'expected' => [
|
||||||
|
'The Title field is required.',
|
||||||
|
'The Description field is required.',
|
||||||
|
'The Category field is required.',
|
||||||
|
'The Priority field is required.',
|
||||||
|
'You must enter a due date in YYYY-MM-DD format.',
|
||||||
|
'You must set a due date in order to get a reminder.',
|
||||||
|
'You must put numeric hours and minutes for a reminder time.'
|
||||||
|
]
|
||||||
|
],
|
||||||
|
'Empty task with bad due date' => [
|
||||||
|
'post' => [
|
||||||
|
'due' => '165743248576543152',
|
||||||
|
],
|
||||||
|
'expected' => [
|
||||||
|
'The Title field is required.',
|
||||||
|
'The Description field is required.',
|
||||||
|
'The Category field is required.',
|
||||||
|
'The Priority field is required.',
|
||||||
|
'You must enter a due date in YYYY-MM-DD format.'
|
||||||
|
]
|
||||||
|
],
|
||||||
|
'Simple task validation' => [
|
||||||
|
'post' => [
|
||||||
|
'title' => 'A Test Task',
|
||||||
|
'desc' => 'A test task to validate with',
|
||||||
|
'category' => 7,
|
||||||
|
'priority' => 5,
|
||||||
|
'due' => '2015-03-09',
|
||||||
|
],
|
||||||
|
'expected' => TRUE,
|
||||||
|
/*'form_vals' => [
|
||||||
|
'title' => 'A Test Task',
|
||||||
|
'description' => 'A test task to validate with',
|
||||||
|
'category' => 7,
|
||||||
|
'due' => 1425873600,
|
||||||
|
'due_minute' => FALSE
|
||||||
|
],*/
|
||||||
|
],
|
||||||
|
'task validation with reminder' => [
|
||||||
|
'post' => [
|
||||||
|
'title' => 'A Test Task',
|
||||||
|
'desc' => 'A test task to validate with',
|
||||||
|
'category' => 7,
|
||||||
|
'priority' => 5,
|
||||||
|
'due' => '2015-03-09',
|
||||||
|
'reminder' => 'rem_true',
|
||||||
|
'rem_minutes' => 30,
|
||||||
|
'rem_hours' => 4
|
||||||
|
],
|
||||||
|
'expected' => TRUE,
|
||||||
|
/*'form_vals' => [
|
||||||
|
'title' => 'A Test Task',
|
||||||
|
'description' => 'A test task to validate with',
|
||||||
|
'category' => 7,
|
||||||
|
'due' => 1425873600,
|
||||||
|
'due_minute' => FALSE,
|
||||||
|
'reminder' => TRUE,
|
||||||
|
'rem_hours' => 4,
|
||||||
|
'rem_minutes' => 30
|
||||||
|
],*/
|
||||||
|
],
|
||||||
|
'task validation group shared task' => [
|
||||||
|
'post' => [
|
||||||
|
'title' => 'A Test Task',
|
||||||
|
'desc' => 'A test task to validate with',
|
||||||
|
'category' => 7,
|
||||||
|
'priority' => 5,
|
||||||
|
'due' => '2015-03-09',
|
||||||
|
'share' => TRUE,
|
||||||
|
'group' => [
|
||||||
|
'62'
|
||||||
|
],
|
||||||
|
'group_perms' => 2,
|
||||||
|
'friend_perms' => -1
|
||||||
|
],
|
||||||
|
'expected' => TRUE,
|
||||||
|
/*'form_vals' => [
|
||||||
|
'title' => 'A Test Task',
|
||||||
|
'description' => 'A test task to validate with',
|
||||||
|
'category' => 7,
|
||||||
|
'due' => 1425873600,
|
||||||
|
'due_minute' => FALSE,
|
||||||
|
],*/
|
||||||
|
],
|
||||||
|
'task validation user shared task' => [
|
||||||
|
'post' => [
|
||||||
|
'title' => 'A Test Task',
|
||||||
|
'desc' => 'A test task to validate with',
|
||||||
|
'category' => 7,
|
||||||
|
'priority' => 5,
|
||||||
|
'due' => '2015-03-09',
|
||||||
|
'share' => TRUE,
|
||||||
|
'friend' => [3,7],
|
||||||
|
'friend_perms' => 2,
|
||||||
|
'group_perms' => -1
|
||||||
|
],
|
||||||
|
'expected' => TRUE,
|
||||||
|
/*'form_vals' => [
|
||||||
|
'title' => 'A Test Task',
|
||||||
|
'description' => 'A test task to validate with',
|
||||||
|
'category' => 7,
|
||||||
|
'due' => 1425873600,
|
||||||
|
'due_minute' => FALSE,
|
||||||
|
],*/
|
||||||
|
],
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dataProvider dataValidateTask
|
||||||
|
*/
|
||||||
|
public function testValidateTask($post, $expected)
|
||||||
|
{
|
||||||
|
$_POST = [];
|
||||||
|
$_POST = $post;
|
||||||
|
|
||||||
|
$actual = $this->CI->task_model->validate_task();
|
||||||
|
|
||||||
|
// Verify the form validation data
|
||||||
|
//$this->assertEquals($form_vals, $this->CI->task_model->form_vals);
|
||||||
|
|
||||||
|
|
||||||
|
// Verify the function data
|
||||||
|
$this->assertEquals($expected, $actual);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// End of TaskModelNoFixturesTest
|
@ -27,136 +27,6 @@ class TaskModelTest extends Todo_TestCase {
|
|||||||
parent::setUp();
|
parent::setUp();
|
||||||
$this->CI->load->model('task_model');
|
$this->CI->load->model('task_model');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function dataValidateTask()
|
|
||||||
{
|
|
||||||
return [
|
|
||||||
'Empty task with reminder validation' => [
|
|
||||||
'post' => [
|
|
||||||
'due' => 'April 27, 2014',
|
|
||||||
'reminder' => 'rem_true'
|
|
||||||
],
|
|
||||||
'expected' => [
|
|
||||||
'You must give the task a title',
|
|
||||||
'The task must have a description',
|
|
||||||
'Select a task category',
|
|
||||||
'You must set a due date in order to get a reminder.',
|
|
||||||
'You must put numeric hours and minutes for a reminder time.',
|
|
||||||
]
|
|
||||||
],
|
|
||||||
'Empty task with bad due date' => [
|
|
||||||
'post' => [
|
|
||||||
'due' => '165743248576543152',
|
|
||||||
],
|
|
||||||
'expected' => [
|
|
||||||
'You must give the task a title',
|
|
||||||
'The task must have a description',
|
|
||||||
'Select a task category',
|
|
||||||
'You must enter a due date in YYYY-MM-DD format.'
|
|
||||||
]
|
|
||||||
],
|
|
||||||
'Simple task validation' => [
|
|
||||||
'post' => [
|
|
||||||
'title' => 'A Test Task',
|
|
||||||
'desc' => 'A test task to validate with',
|
|
||||||
'category' => 7,
|
|
||||||
'priority' => 5,
|
|
||||||
'due' => '2015-03-09',
|
|
||||||
],
|
|
||||||
'expected' => TRUE,
|
|
||||||
'form_vals' => [
|
|
||||||
'title' => 'A Test Task',
|
|
||||||
'description' => 'A test task to validate with',
|
|
||||||
'category' => 7,
|
|
||||||
'due' => 1425873600,
|
|
||||||
'due_minute' => FALSE
|
|
||||||
],
|
|
||||||
],
|
|
||||||
'task validation with reminder' => [
|
|
||||||
'post' => [
|
|
||||||
'title' => 'A Test Task',
|
|
||||||
'desc' => 'A test task to validate with',
|
|
||||||
'category' => 7,
|
|
||||||
'priority' => 5,
|
|
||||||
'due' => '2015-03-09',
|
|
||||||
'reminder' => 'rem_true',
|
|
||||||
'rem_minutes' => 30,
|
|
||||||
'rem_hours' => 4
|
|
||||||
],
|
|
||||||
'expected' => TRUE,
|
|
||||||
'form_vals' => [
|
|
||||||
'title' => 'A Test Task',
|
|
||||||
'description' => 'A test task to validate with',
|
|
||||||
'category' => 7,
|
|
||||||
'due' => 1425873600,
|
|
||||||
'due_minute' => FALSE,
|
|
||||||
'reminder' => TRUE,
|
|
||||||
'rem_hours' => 4,
|
|
||||||
'rem_minutes' => 30
|
|
||||||
],
|
|
||||||
],
|
|
||||||
'task validation group shared task' => [
|
|
||||||
'post' => [
|
|
||||||
'title' => 'A Test Task',
|
|
||||||
'desc' => 'A test task to validate with',
|
|
||||||
'category' => 7,
|
|
||||||
'priority' => 5,
|
|
||||||
'due' => '2015-03-09',
|
|
||||||
'share' => TRUE,
|
|
||||||
'group' => [
|
|
||||||
'62'
|
|
||||||
],
|
|
||||||
'group_perms' => 2,
|
|
||||||
'friend_perms' => -1
|
|
||||||
],
|
|
||||||
'expected' => TRUE,
|
|
||||||
'form_vals' => [
|
|
||||||
'title' => 'A Test Task',
|
|
||||||
'description' => 'A test task to validate with',
|
|
||||||
'category' => 7,
|
|
||||||
'due' => 1425873600,
|
|
||||||
'due_minute' => FALSE,
|
|
||||||
],
|
|
||||||
],
|
|
||||||
'task validation user shared task' => [
|
|
||||||
'post' => [
|
|
||||||
'title' => 'A Test Task',
|
|
||||||
'desc' => 'A test task to validate with',
|
|
||||||
'category' => 7,
|
|
||||||
'priority' => 5,
|
|
||||||
'due' => '2015-03-09',
|
|
||||||
'share' => TRUE,
|
|
||||||
'friend' => [3,7],
|
|
||||||
'friend_perms' => 2,
|
|
||||||
'group_perms' => -1
|
|
||||||
],
|
|
||||||
'expected' => TRUE,
|
|
||||||
'form_vals' => [
|
|
||||||
'title' => 'A Test Task',
|
|
||||||
'description' => 'A test task to validate with',
|
|
||||||
'category' => 7,
|
|
||||||
'due' => 1425873600,
|
|
||||||
'due_minute' => FALSE,
|
|
||||||
],
|
|
||||||
],
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @dataProvider dataValidateTask
|
|
||||||
*/
|
|
||||||
public function testValidateTask($post, $expected, $form_vals = NULL)
|
|
||||||
{
|
|
||||||
$_POST = $post;
|
|
||||||
|
|
||||||
$actual = $this->CI->task_model->validate_task();
|
|
||||||
|
|
||||||
// Verify the form validation data
|
|
||||||
$this->assertEquals($form_vals, $this->CI->task_model->form_vals);
|
|
||||||
|
|
||||||
// Verify the function data
|
|
||||||
$this->assertEquals($expected, $actual);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function testGetTaskList()
|
public function testGetTaskList()
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user