- Διορθώσεις στα model της εφαρμογής
- Ολοκλήρωση των unit tests των models που χρησιμοποιούνται στη περίπτωση χρήσης 'Κράτηση Ραντεβού'
This commit is contained in:
parent
b6c5cf1ef5
commit
7e2baf30f9
8 changed files with 830 additions and 106 deletions
|
@ -20,7 +20,10 @@ class Unit_tests extends CI_Driver_Library {
|
||||||
// the unit testing classes.
|
// the unit testing classes.
|
||||||
$this->valid_drivers = array(
|
$this->valid_drivers = array(
|
||||||
'Unit_tests_appointments_model',
|
'Unit_tests_appointments_model',
|
||||||
'Unit_tests_customers_model'
|
'Unit_tests_customers_model',
|
||||||
|
'Unit_tests_providers_model',
|
||||||
|
'Unit_tests_services_model',
|
||||||
|
'Unit_tests_settings_model'
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -49,6 +52,9 @@ class Unit_tests extends CI_Driver_Library {
|
||||||
public function run_model_tests($output_report = true) {
|
public function run_model_tests($output_report = true) {
|
||||||
$this->appointments_model->run_all();
|
$this->appointments_model->run_all();
|
||||||
$this->customers_model->run_all();
|
$this->customers_model->run_all();
|
||||||
|
$this->settings_model->run_all();
|
||||||
|
$this->providers_model->run_all();
|
||||||
|
$this->services_model->run_all();
|
||||||
|
|
||||||
if ($output_report) {
|
if ($output_report) {
|
||||||
$this->CI->output->append_output($this->CI->unit->report());
|
$this->CI->output->append_output($this->CI->unit->report());
|
||||||
|
|
|
@ -125,14 +125,14 @@ class Unit_tests_appointments_model extends CI_Driver {
|
||||||
'id_services' => $this->service_id
|
'id_services' => $this->service_id
|
||||||
);
|
);
|
||||||
|
|
||||||
$hasThrownException = FALSE; // This method must throw a validation exception.
|
$has_thrown_exception = FALSE; // This method must throw a validation exception.
|
||||||
try {
|
try {
|
||||||
$this->CI->Appointments_Model->add($appointment_data);
|
$this->CI->Appointments_Model->add($appointment_data);
|
||||||
} catch(ValidationException $valExc) {
|
} catch(ValidationException $valExc) {
|
||||||
$hasThrownException = TRUE;
|
$has_thrown_exception = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->CI->unit->run($hasThrownException, TRUE, 'Test add() appointment with wrong date format.', 'A validation exception must be thrown.');
|
$this->CI->unit->run($has_thrown_exception, TRUE, 'Test add() appointment with wrong date format.', 'A validation exception must be thrown.');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -140,7 +140,7 @@ class Unit_tests_appointments_model extends CI_Driver {
|
||||||
*
|
*
|
||||||
* Insert a new appointment and test if it exists.
|
* Insert a new appointment and test if it exists.
|
||||||
*/
|
*/
|
||||||
private function test_appointment_exists() {
|
private function test_exists() {
|
||||||
// Insert new appointment (this row will be checked later).
|
// Insert new appointment (this row will be checked later).
|
||||||
$appointment_data = array(
|
$appointment_data = array(
|
||||||
'start_datetime' => '2013-05-01 12:30:00',
|
'start_datetime' => '2013-05-01 12:30:00',
|
||||||
|
@ -160,7 +160,7 @@ class Unit_tests_appointments_model extends CI_Driver {
|
||||||
$this->CI->db->delete('ea_appointments', array('id' => $appointment_data['id']));
|
$this->CI->db->delete('ea_appointments', array('id' => $appointment_data['id']));
|
||||||
}
|
}
|
||||||
|
|
||||||
private function test_appointment_does_not_exist() {
|
private function test_exists_record_does_not_exist() {
|
||||||
// Create random appointmnet data that doesn't exist in the database.
|
// Create random appointmnet data that doesn't exist in the database.
|
||||||
$appointment_data = array(
|
$appointment_data = array(
|
||||||
'start_datetime' => '2013-05-01 08:33:45',
|
'start_datetime' => '2013-05-01 08:33:45',
|
||||||
|
@ -174,7 +174,7 @@ class Unit_tests_appointments_model extends CI_Driver {
|
||||||
$this->CI->unit->run($this->CI->Appointments_Model->exists($appointment_data), FALSE, 'Test exists() method with an appointment that does not exist');
|
$this->CI->unit->run($this->CI->Appointments_Model->exists($appointment_data), FALSE, 'Test exists() method with an appointment that does not exist');
|
||||||
}
|
}
|
||||||
|
|
||||||
private function test_appointment_exists_wrong_data() {
|
private function test_exists_with_wrong_data() {
|
||||||
// Create random appointmnet data that doesn't exist in the database.
|
// Create random appointmnet data that doesn't exist in the database.
|
||||||
$appointment_data = array(
|
$appointment_data = array(
|
||||||
'start_datetime' => '2WRONG013-05-01 0WRONG8:33:45',
|
'start_datetime' => '2WRONG013-05-01 0WRONG8:33:45',
|
||||||
|
@ -232,15 +232,15 @@ class Unit_tests_appointments_model extends CI_Driver {
|
||||||
);
|
);
|
||||||
|
|
||||||
// Load the appointments model and execute the find record id method.
|
// Load the appointments model and execute the find record id method.
|
||||||
$hasThrownException = FALSE;
|
$has_thrown_exception = FALSE;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$this->CI->Appointments_Model->find_record_id($appointment_data);
|
$this->CI->Appointments_Model->find_record_id($appointment_data);
|
||||||
} catch(DatabaseException $dbExc) {
|
} catch(DatabaseException $db_exc) {
|
||||||
$hasThrownException = TRUE;
|
$has_thrown_exception = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->CI->unit->run($hasThrownException, TRUE, 'Test find_record_id() with appointment '
|
$this->CI->unit->run($has_thrown_exception, TRUE, 'Test find_record_id() with appointment '
|
||||||
. 'data that does not exist in the database.', 'A database exception is expected '
|
. 'data that does not exist in the database.', 'A database exception is expected '
|
||||||
. 'to be raised.');
|
. 'to be raised.');
|
||||||
}
|
}
|
||||||
|
@ -264,15 +264,15 @@ class Unit_tests_appointments_model extends CI_Driver {
|
||||||
|
|
||||||
// Try to find the appointmet's record id. A database
|
// Try to find the appointmet's record id. A database
|
||||||
// exception should be raised.
|
// exception should be raised.
|
||||||
$hasThrownException = FALSE;
|
$has_thrown_exception = FALSE;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$this->CI->Appointments_Model->find_record_id($appointment_data);
|
$this->CI->Appointments_Model->find_record_id($appointment_data);
|
||||||
} catch(DatabaseException $dbExc) {
|
} catch(DatabaseException $db_exc) {
|
||||||
$hasThrownException = TRUE;
|
$has_thrown_exception = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->CI->unit->run($hasThrownException, TRUE, 'Test find_record_id() with appointment '
|
$this->CI->unit->run($has_thrown_exception, TRUE, 'Test find_record_id() with appointment '
|
||||||
. 'data array with wrong values.', 'A database exception is expected to be raised.');
|
. 'data array with wrong values.', 'A database exception is expected to be raised.');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -321,10 +321,15 @@ class Unit_tests_appointments_model extends CI_Driver {
|
||||||
private function test_delete_record_wrong_parameter_given() {
|
private function test_delete_record_wrong_parameter_given() {
|
||||||
$wrong_record_id = 'not_an_integer';
|
$wrong_record_id = 'not_an_integer';
|
||||||
|
|
||||||
$delete_result = $this->CI->Appointments_Model->delete($wrong_record_id);
|
$has_thrown_exception = FALSE;
|
||||||
echo $delete_result;
|
|
||||||
$this->CI->unit->run($delete_result, FALSE, 'Test delete() method with a record id'
|
try {
|
||||||
. ' that is not an integer');
|
$this->CI->Appointments_Model->delete($wrong_record_id);
|
||||||
|
} catch (InvalidArgumentException $ia_exc) {
|
||||||
|
$has_thrown_exception = TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->CI->unit->run($has_thrown_exception, TRUE, 'Test delete() method with argument that is not an integer.');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -381,15 +386,15 @@ class Unit_tests_appointments_model extends CI_Driver {
|
||||||
* igniter handles itself wrong queries.
|
* igniter handles itself wrong queries.
|
||||||
*/
|
*/
|
||||||
private function unabled_test_get_batch_wrong_where_clause() {
|
private function unabled_test_get_batch_wrong_where_clause() {
|
||||||
$hasThrownException = FALSE;
|
$has_thrown_exception = FALSE;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$this->CI->Appointments_Model->get_batch('WRONG QUERY HERE');
|
$this->CI->Appointments_Model->get_batch('WRONG QUERY HERE');
|
||||||
} catch(DatabaseException $dbExc) {
|
} catch(DatabaseException $db_exc) {
|
||||||
$hasThrownException = TRUE;
|
$has_thrown_exception = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->CI->unit->run($hasThrownException, TRUE, 'Test get_batch() with wrong where clause.',
|
$this->CI->unit->run($has_thrown_exception, TRUE, 'Test get_batch() with wrong where clause.',
|
||||||
'A database excpetion is expected to be thrown.');
|
'A database excpetion is expected to be thrown.');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -436,17 +441,17 @@ class Unit_tests_appointments_model extends CI_Driver {
|
||||||
*
|
*
|
||||||
* A database exception is expected.
|
* A database exception is expected.
|
||||||
*/
|
*/
|
||||||
private function test_get_row_wrong_argument_given() {
|
private function test_get_row_with_invalid_argument() {
|
||||||
$wrong_arguement_id = 'THIS IS NOT AN INTEGER';
|
$invalid_id = 'THIS IS NOT AN INTEGER';
|
||||||
|
|
||||||
$hasThrownException = FALSE;
|
$has_thrown_exception = FALSE;
|
||||||
try {
|
try {
|
||||||
$this->CI->Appointments_Model->get_row($wrong_arguement_id);
|
$this->CI->Appointments_Model->get_row($invalid_id);
|
||||||
} catch (DatabaseException $dbExc) {
|
} catch (InvalidArgumentException $db_exc) {
|
||||||
$hasThrownException = TRUE;
|
$has_thrown_exception = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->CI->unit->run($hasThrownException, TRUE, 'Test get_row() with wrong arguement.');
|
$this->CI->unit->run($has_thrown_exception, TRUE, 'Test get_row() with wrong argument.');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -466,7 +471,6 @@ class Unit_tests_appointments_model extends CI_Driver {
|
||||||
$appointment_data['id'] = $this->CI->db->insert_id();
|
$appointment_data['id'] = $this->CI->db->insert_id();
|
||||||
|
|
||||||
// Get a specific value from the database.
|
// Get a specific value from the database.
|
||||||
|
|
||||||
$db_value = $this->CI->Appointments_Model->get_value('start_datetime', $appointment_data['id']);
|
$db_value = $this->CI->Appointments_Model->get_value('start_datetime', $appointment_data['id']);
|
||||||
|
|
||||||
// Check if the value was correctly fetched from the database.
|
// Check if the value was correctly fetched from the database.
|
||||||
|
@ -485,15 +489,15 @@ class Unit_tests_appointments_model extends CI_Driver {
|
||||||
private function test_get_value_record_does_not_exist() {
|
private function test_get_value_record_does_not_exist() {
|
||||||
$random_record_id = 843521368768;
|
$random_record_id = 843521368768;
|
||||||
|
|
||||||
$hasThrownException = FALSE;
|
$has_thrown_exception = FALSE;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$this->CI->Appointments_Model->get_value('start_datetime', $random_record_id);
|
$this->CI->Appointments_Model->get_value('start_datetime', $random_record_id);
|
||||||
} catch (DatabaseException $dbExc) {
|
} catch (InvalidArgumentException $db_exc) {
|
||||||
$hasThrownException = TRUE;
|
$has_thrown_exception = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->CI->unit->run($hasThrownException, TRUE, 'Test get_value() with record id that does not exist.');
|
$this->CI->unit->run($has_thrown_exception, TRUE, 'Test get_value() with record id that does not exist.');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -517,15 +521,15 @@ class Unit_tests_appointments_model extends CI_Driver {
|
||||||
|
|
||||||
// Try to get record value with wrong field name.
|
// Try to get record value with wrong field name.
|
||||||
$wrong_field_name = 'THIS IS WRONG';
|
$wrong_field_name = 'THIS IS WRONG';
|
||||||
$hasThrownException = FALSE;
|
$has_thrown_exception = FALSE;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$this->CI->Appointments_Model->get_value($wrong_field_name, $appointment_data['id']);
|
$this->CI->Appointments_Model->get_value($wrong_field_name, $appointment_data['id']);
|
||||||
} catch (DatabaseException $dbExc) {
|
} catch (InvalidArgumentException $db_exc) {
|
||||||
$hasThrownException = TRUE;
|
$has_thrown_exception = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->CI->unit->run($hasThrownException, TRUE, 'Test get_value() with record id that does not exist.');
|
$this->CI->unit->run($has_thrown_exception, TRUE, 'Test get_value() with record id that does not exist.');
|
||||||
|
|
||||||
// Delete inserted record.
|
// Delete inserted record.
|
||||||
$this->CI->db->delete('ea_appointments', array('id' => $appointment_data['id']));
|
$this->CI->db->delete('ea_appointments', array('id' => $appointment_data['id']));
|
||||||
|
|
|
@ -2,11 +2,19 @@
|
||||||
|
|
||||||
class Unit_tests_customers_model extends CI_Driver {
|
class Unit_tests_customers_model extends CI_Driver {
|
||||||
private $CI;
|
private $CI;
|
||||||
|
private $customer_role_id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class Constructor
|
||||||
|
*/
|
||||||
public function __construct() {
|
public function __construct() {
|
||||||
|
// CodeIgniter initialization.
|
||||||
$this->CI =& get_instance();
|
$this->CI =& get_instance();
|
||||||
$this->CI->load->library('Unit_test');
|
$this->CI->load->library('Unit_test');
|
||||||
$this->CI->load->model('Customers_Model');
|
$this->CI->load->model('Customers_Model');
|
||||||
|
|
||||||
|
// Use this when creating test records.
|
||||||
|
$this->customer_role_id = $this->CI->db->get_where('ea_roles', array('slug' => DB_SLUG_CUSTOMER))->row()->id;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -27,12 +35,508 @@ class Unit_tests_customers_model extends CI_Driver {
|
||||||
/////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////
|
||||||
// UNIT TESTS
|
// UNIT TESTS
|
||||||
/////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////
|
||||||
private function test_true() {
|
|
||||||
$this->CI->unit->run(TRUE, TRUE, 'True!');
|
// TEST ADD() CUSTOMER METHOD
|
||||||
|
private function test_add_insert() {
|
||||||
|
// Insert new customer record.
|
||||||
|
$customer_data = array(
|
||||||
|
'last_name' => 'Doe',
|
||||||
|
'first_name' => 'John',
|
||||||
|
'email' => 'alextselegidis@gmail.com',
|
||||||
|
'phone_number' => '0123456789',
|
||||||
|
'address' => 'Abbey Road 18',
|
||||||
|
'city' => 'London',
|
||||||
|
'zip_code' => '12345',
|
||||||
|
'id_roles' => $this->customer_role_id
|
||||||
|
);
|
||||||
|
$customer_data['id'] = $this->CI->Customers_Model->add($customer_data);
|
||||||
|
$this->CI->unit->run($customer_data['id'], 'is_int', 'Test add() customer (insert operation) has returned the new row id.');
|
||||||
|
|
||||||
|
// Check if the record was successfully added to the database.
|
||||||
|
$db_data = $this->CI->db->get_where('ea_users', array('id' => $customer_data['id']))->row_array();
|
||||||
|
$are_the_same = TRUE;
|
||||||
|
if ($customer_data['last_name'] != $db_data['last_name']
|
||||||
|
|| $customer_data['first_name'] != $db_data['first_name']
|
||||||
|
|| $customer_data['email'] != $db_data['email']
|
||||||
|
|| $customer_data['phone_number'] != $db_data['phone_number']
|
||||||
|
|| $customer_data['address'] != $db_data['address']
|
||||||
|
|| $customer_data['city'] != $db_data['city']
|
||||||
|
|| $customer_data['zip_code'] != $db_data['zip_code']
|
||||||
|
|| $customer_data['id_roles'] != $db_data['id_roles']) {
|
||||||
|
$are_the_same = FALSE;
|
||||||
|
}
|
||||||
|
$this->CI->unit->run($are_the_same, TRUE, 'Test add() customer (insert operation) has successfully been added to the datbase.');
|
||||||
|
|
||||||
|
// Delete inserted record.
|
||||||
|
$this->CI->db->delete('ea_users', array('id' => $customer_data['id']));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private function test_add_update() {
|
||||||
|
// Insert new customer record (will be updated later).
|
||||||
|
$customer_data = array(
|
||||||
|
'last_name' => 'Doe',
|
||||||
|
'first_name' => 'John',
|
||||||
|
'email' => 'alextselegidis@gmail.com',
|
||||||
|
'phone_number' => '0123456789',
|
||||||
|
'address' => 'Abbey Road 18',
|
||||||
|
'city' => 'London',
|
||||||
|
'zip_code' => '12345',
|
||||||
|
'id_roles' => $this->customer_role_id
|
||||||
|
);
|
||||||
|
$this->CI->db->insert('ea_users', $customer_data);
|
||||||
|
$customer_data['id'] = intval($this->CI->db->insert_id());
|
||||||
|
|
||||||
|
// Update customer record.
|
||||||
|
$new_phone_number = 'THE PHONE NUMBER IS UPDATED';
|
||||||
|
$customer_data['phone_number'] = $new_phone_number;
|
||||||
|
$update_result = $this->CI->Customers_Model->add($customer_data);
|
||||||
|
$this->CI->unit->run($update_result, 'is_int', 'Test add() customer (update operation) has returned the row id.');
|
||||||
|
|
||||||
|
// Check if record was successfully updated.
|
||||||
|
$db_phone_number = $this->CI->db->get_where('ea_users', array('id' => $customer_data['id']))->row()->phone_number;
|
||||||
|
$this->CI->unit->run($customer_data['phone_number'], $db_phone_number, 'Test add() customer (update operation) has successfully updated the phone number field.');
|
||||||
|
|
||||||
|
// Delete inserted record.
|
||||||
|
$this->CI->db->delete('ea_users', array('id' => $customer_data['id']));
|
||||||
|
}
|
||||||
|
|
||||||
|
private function test_add_invalid_email() {
|
||||||
|
// Prepare customer's data (email address is invalid).
|
||||||
|
$customer_data = array(
|
||||||
|
'last_name' => 'Doe',
|
||||||
|
'first_name' => 'John',
|
||||||
|
'email' => 'THIS IS INVALID',
|
||||||
|
'phone_number' => '0123456789',
|
||||||
|
'address' => 'Abbey Road 18',
|
||||||
|
'city' => 'London',
|
||||||
|
'zip_code' => '12345',
|
||||||
|
'id_roles' => $this->customer_role_id
|
||||||
|
);
|
||||||
|
|
||||||
|
$has_thrown_exception = FALSE;
|
||||||
|
try {
|
||||||
|
$this->CI->Customers_Model->add($customer_data);
|
||||||
|
} catch(ValidationException $valExc) {
|
||||||
|
$has_thrown_exception = TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->CI->unit->run($has_thrown_exception, TRUE, 'Test add() customer with invalid email address');
|
||||||
|
}
|
||||||
|
|
||||||
|
private function test_add_missing_no_last_name() {
|
||||||
|
// Prepare customer's data (last name field is missing).
|
||||||
|
$customer_data = array(
|
||||||
|
'first_name' => 'John',
|
||||||
|
'email' => 'alextselegidis@gmail.com',
|
||||||
|
'phone_number' => '0123456789',
|
||||||
|
'address' => 'Abbey Road 18',
|
||||||
|
'city' => 'London',
|
||||||
|
'zip_code' => '12345',
|
||||||
|
'id_roles' => $this->customer_role_id
|
||||||
|
);
|
||||||
|
|
||||||
|
$has_thrown_exception = FALSE;
|
||||||
|
try {
|
||||||
|
$this->CI->Customers_Model->add($customer_data);
|
||||||
|
} catch(ValidationException $valExc) {
|
||||||
|
$has_thrown_exception = TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->CI->unit->run($has_thrown_exception, TRUE, 'Test add() customer with no last name value provided.');
|
||||||
|
}
|
||||||
|
|
||||||
|
// TEST CUSTOMER EXISTS() METHOD
|
||||||
|
private function test_exists() {
|
||||||
|
// Insert new customer record (will be updated later).
|
||||||
|
$customer_data = array(
|
||||||
|
'last_name' => 'Doe',
|
||||||
|
'first_name' => 'John',
|
||||||
|
'email' => 'alextselegidis@gmail.com',
|
||||||
|
'phone_number' => '0123456789',
|
||||||
|
'address' => 'Abbey Road 18',
|
||||||
|
'city' => 'London',
|
||||||
|
'zip_code' => '12345',
|
||||||
|
'id_roles' => $this->customer_role_id
|
||||||
|
);
|
||||||
|
$this->CI->db->insert('ea_users', $customer_data);
|
||||||
|
$customer_data['id'] = intval($this->CI->db->insert_id());
|
||||||
|
|
||||||
|
// Test that exists returns true.
|
||||||
|
$exists_result = $this->CI->Customers_Model->exists($customer_data);
|
||||||
|
$this->CI->unit->run($exists_result, TRUE, 'Tests exists() with customer that exists.');
|
||||||
|
|
||||||
|
// Delete inserted record.
|
||||||
|
$this->CI->db->delete('ea_users', array('id' => $customer_data['id']));
|
||||||
|
}
|
||||||
|
|
||||||
|
private function test_exists_record_does_not_exist() {
|
||||||
|
// Prepare customer's data with email that does not exist.
|
||||||
|
$customer_data = array(
|
||||||
|
'last_name' => 'Doe',
|
||||||
|
'first_name' => 'John',
|
||||||
|
'email' => 'THIS DOES NOT EXIST',
|
||||||
|
'phone_number' => '0123456789',
|
||||||
|
'address' => 'Abbey Road 18',
|
||||||
|
'city' => 'London',
|
||||||
|
'zip_code' => '12345',
|
||||||
|
'id_roles' => $this->customer_role_id
|
||||||
|
);
|
||||||
|
|
||||||
|
// Test that exists return false on email that doesn't exist.
|
||||||
|
$exists_result = $this->CI->Customers_Model->exists($customer_data);
|
||||||
|
$this->CI->unit->run($exists_result, FALSE, 'Test exists() method with customer data that does not exist in the database.');
|
||||||
|
}
|
||||||
|
|
||||||
|
private function test_exists_no_email_provided() {
|
||||||
|
// Prepare customer's data with no email value.
|
||||||
|
$customer_data = array(
|
||||||
|
'last_name' => 'Doe',
|
||||||
|
'first_name' => 'John',
|
||||||
|
'phone_number' => '0123456789',
|
||||||
|
'address' => 'Abbey Road 18',
|
||||||
|
'city' => 'London',
|
||||||
|
'zip_code' => '12345',
|
||||||
|
'id_roles' => $this->customer_role_id
|
||||||
|
);
|
||||||
|
|
||||||
|
// Test that exists return false on email that doesn't exist.
|
||||||
|
$has_thrown_exception = FALSE;
|
||||||
|
try {
|
||||||
|
$this->CI->Customers_Model->exists($customer_data);
|
||||||
|
} catch (InvalidArgumentException $ia_exc) {
|
||||||
|
$has_thrown_exception = TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->CI->unit->run($has_thrown_exception, TRUE, 'Test exists() method with email argument missing.');
|
||||||
|
}
|
||||||
|
|
||||||
|
// TEST DELETE() CUSTOMER METHOD
|
||||||
|
private function test_delete() {
|
||||||
|
// Insert new customer record.
|
||||||
|
$customer_data = array(
|
||||||
|
'last_name' => 'Doe',
|
||||||
|
'first_name' => 'John',
|
||||||
|
'email' => 'alextselegidis@gmail.com',
|
||||||
|
'phone_number' => '0123456789',
|
||||||
|
'address' => 'Abbey Road 18',
|
||||||
|
'city' => 'London',
|
||||||
|
'zip_code' => '12345',
|
||||||
|
'id_roles' => $this->customer_role_id
|
||||||
|
);
|
||||||
|
$this->CI->db->insert('ea_users', $customer_data);
|
||||||
|
$customer_data['id'] = intval($this->CI->db->insert_id());
|
||||||
|
|
||||||
|
// Delete new customer record.
|
||||||
|
$delete_result = $this->CI->Customers_Model->delete($customer_data['id']);
|
||||||
|
$this->CI->unit->run($delete_result, TRUE, 'Test delete() method returned TRUE.');
|
||||||
|
|
||||||
|
// Check that the record is actually deleted (if not delete).
|
||||||
|
$num_rows = $this->CI->db->get_where('ea_users', array('id' => $customer_data['id']))->num_rows();
|
||||||
|
$this->CI->unit->run($num_rows, 0, 'Test delete() method has actually deleted the record from the db.');
|
||||||
|
|
||||||
|
if ($num_rows > 0) {
|
||||||
|
$this->CI->db->delete('ea_users', array('id' => $customer_data['id']));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private function test_delete_record_that_does_not_exist() {
|
||||||
|
$random_record_id = 879653245;
|
||||||
|
|
||||||
|
$delete_result = $this->CI->Customers_Model->delete($random_record_id);
|
||||||
|
$this->CI->unit->run($delete_result, FALSE, 'Test delete() method with customer id that does not exist.');
|
||||||
|
}
|
||||||
|
|
||||||
|
private function test_delete_record_with_invalid_argument() {
|
||||||
|
$invalid_argument = 'THIS IS INVALID';
|
||||||
|
$has_thrown_exception = FALSE;
|
||||||
|
try {
|
||||||
|
$this->CI->Customers_Model->delete($invalid_argument);
|
||||||
|
} catch (InvalidArgumentException $ia_exc) {
|
||||||
|
$has_thrown_exception = TRUE;
|
||||||
|
}
|
||||||
|
$this->CI->unit->run($has_thrown_exception, TRUE, 'Test delete() method with invalid argument (not integer).');
|
||||||
|
}
|
||||||
|
|
||||||
|
// TEST VALIDATE CUSTOMER DATA METHOD
|
||||||
|
private function test_validate_data() {
|
||||||
|
// Prepare customer's data.
|
||||||
|
$customer_data = array(
|
||||||
|
'last_name' => 'Doe',
|
||||||
|
'first_name' => 'John',
|
||||||
|
'email' => 'alextselegidis@gmail.com',
|
||||||
|
'phone_number' => '0123456789',
|
||||||
|
'address' => 'Abbey Road 18',
|
||||||
|
'city' => 'London',
|
||||||
|
'zip_code' => '12345',
|
||||||
|
'id_roles' => $this->customer_role_id
|
||||||
|
);
|
||||||
|
|
||||||
|
// Validate customers data.
|
||||||
|
$validation_result = $this->CI->Customers_Model->validate_data($customer_data);
|
||||||
|
$this->CI->unit->run($validation_result, TRUE, 'Test validate_data() method.');
|
||||||
|
}
|
||||||
|
|
||||||
|
private function test_validate_data_no_last_name_provided() {
|
||||||
|
// Prepare customer's data (no last_name value provided).
|
||||||
|
$customer_data = array(
|
||||||
|
'first_name' => 'John',
|
||||||
|
'email' => 'alextselegidis@gmail.com',
|
||||||
|
'phone_number' => '0123456789',
|
||||||
|
'address' => 'Abbey Road 18',
|
||||||
|
'city' => 'London',
|
||||||
|
'zip_code' => '12345',
|
||||||
|
'id_roles' => $this->customer_role_id
|
||||||
|
);
|
||||||
|
|
||||||
|
// Validate customers data.
|
||||||
|
$validation_result = $this->CI->Customers_Model->validate_data($customer_data);
|
||||||
|
$this->CI->unit->run($validation_result, FALSE, 'Test validate_data() method without a last_name value.');
|
||||||
|
}
|
||||||
|
|
||||||
|
private function test_validate_data_invalid_email_address() {
|
||||||
|
// Prepare customer's data (invalid email address).
|
||||||
|
$customer_data = array(
|
||||||
|
'last_name' => 'Doe',
|
||||||
|
'first_name' => 'John',
|
||||||
|
'email' => 'THIS IS INVALID',
|
||||||
|
'phone_number' => '0123456789',
|
||||||
|
'address' => 'Abbey Road 18',
|
||||||
|
'city' => 'London',
|
||||||
|
'zip_code' => '12345',
|
||||||
|
'id_roles' => $this->customer_role_id
|
||||||
|
);
|
||||||
|
|
||||||
|
// Validate customers data.
|
||||||
|
$validation_result = $this->CI->Customers_Model->validate_data($customer_data);
|
||||||
|
$this->CI->unit->run($validation_result, FALSE, 'Test validate_data() method with invalid email address.');
|
||||||
|
}
|
||||||
|
|
||||||
|
// TEST FIND RECORD ID METHOD
|
||||||
|
private function test_find_record_id() {
|
||||||
|
// Insert new customer to database.
|
||||||
|
$customer_data = array(
|
||||||
|
'last_name' => 'Doe',
|
||||||
|
'first_name' => 'John',
|
||||||
|
'email' => 'alextselegidis@gmail.com',
|
||||||
|
'phone_number' => '0123456789',
|
||||||
|
'address' => 'Abbey Road 18',
|
||||||
|
'city' => 'London',
|
||||||
|
'zip_code' => '12345',
|
||||||
|
'id_roles' => $this->customer_role_id
|
||||||
|
);
|
||||||
|
$this->CI->db->insert('ea_users', $customer_data);
|
||||||
|
$inserted_id = intval($this->CI->db->insert_id());
|
||||||
|
|
||||||
|
// Try to find the db id of the new customer record.
|
||||||
|
$method_id = $this->CI->Customers_Model->find_record_id($customer_data);
|
||||||
|
$this->CI->unit->run($inserted_id, $method_id, 'Test find_record_id() method.');
|
||||||
|
|
||||||
|
// Delete inserted customer record.
|
||||||
|
$this->CI->db->delete('ea_users', array('id' => $inserted_id));
|
||||||
|
}
|
||||||
|
|
||||||
|
private function test_find_record_id_without_email_address() {
|
||||||
|
// Prepare customer's data without an email address.
|
||||||
|
$customer_data = array(
|
||||||
|
'last_name' => 'Doe',
|
||||||
|
'first_name' => 'John',
|
||||||
|
'phone_number' => '0123456789',
|
||||||
|
'address' => 'Abbey Road 18',
|
||||||
|
'city' => 'London',
|
||||||
|
'zip_code' => '12345',
|
||||||
|
'id_roles' => $this->customer_role_id
|
||||||
|
);
|
||||||
|
$has_thrown_exception = FALSE;
|
||||||
|
try {
|
||||||
|
$this->CI->Customers_Model->find_record_id($customer_data);
|
||||||
|
} catch (InvalidArgumentException $ia_exc) {
|
||||||
|
$has_thrown_exception = TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->CI->unit->run($has_thrown_exception, TRUE, 'Test find_record_id() without providing an email address.');
|
||||||
|
}
|
||||||
|
|
||||||
|
private function test_find_record_id_record_does_not_exist() {
|
||||||
|
// Prepare customer's data with an email address that does not exist in db.
|
||||||
|
$customer_data = array(
|
||||||
|
'last_name' => 'Doe',
|
||||||
|
'first_name' => 'John',
|
||||||
|
'email' => 'THIS EMAIL DOES NOT EXIST IN DB',
|
||||||
|
'phone_number' => '0123456789',
|
||||||
|
'address' => 'Abbey Road 18',
|
||||||
|
'city' => 'London',
|
||||||
|
'zip_code' => '12345',
|
||||||
|
'id_roles' => $this->customer_role_id
|
||||||
|
);
|
||||||
|
$has_thrown_exception = FALSE;
|
||||||
|
try {
|
||||||
|
$this->CI->Customers_Model->find_record_id($customer_data);
|
||||||
|
} catch (DatabaseException $db_exc) {
|
||||||
|
$has_thrown_exception = TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->CI->unit->run($has_thrown_exception, TRUE, 'Test find_record_id() with email address that does not exist in db.');
|
||||||
|
}
|
||||||
|
|
||||||
|
// TEST GET BATCH METHOD ---------------------------------------------------
|
||||||
|
private function test_get_batch() {
|
||||||
|
// Get all the customer rows without using the model.
|
||||||
|
$db_data = $this->CI->db->get_where('ea_users', array('id_roles' => $this->customer_role_id))->result_array();
|
||||||
|
// Get all the customer rows by using the model.
|
||||||
|
$model_data = $this->CI->Customers_Model->get_batch();
|
||||||
|
// Check that the two arrays are the same.
|
||||||
|
$this->CI->unit->run($db_data, $model_data, 'Test get_batch() method.');
|
||||||
|
}
|
||||||
|
|
||||||
|
private function test_get_batch_with_where_clause() {
|
||||||
|
// Insert new customer record.
|
||||||
|
$customer_data = array(
|
||||||
|
'last_name' => 'Doe',
|
||||||
|
'first_name' => 'John',
|
||||||
|
'email' => 'alextselegidis@gmail.com',
|
||||||
|
'phone_number' => '0123456789',
|
||||||
|
'address' => 'Abbey Road 18',
|
||||||
|
'city' => 'London',
|
||||||
|
'zip_code' => '12345',
|
||||||
|
'id_roles' => $this->customer_role_id
|
||||||
|
);
|
||||||
|
$this->CI->db->insert('ea_users', $customer_data);
|
||||||
|
$customer_data['id'] = intval($this->CI->db->insert_id());
|
||||||
|
|
||||||
|
// Get data without using the model.
|
||||||
|
$no_model_data = $this->CI->db->get_where('ea_users', array('id' => $customer_data['id']))->result_array();
|
||||||
|
|
||||||
|
// Get data by using the model.
|
||||||
|
$model_data = $this->CI->Customers_Model->get_batch(array('id' => $customer_data['id']));
|
||||||
|
|
||||||
|
// Check that the data arrays are the same.
|
||||||
|
$this->CI->unit->run($no_model_data, $model_data, 'Test get_batch() with where clause.');
|
||||||
|
|
||||||
|
// Delete inserted record from database.
|
||||||
|
$this->CI->db->delete('ea_users', array('id' => $customer_data['id']));
|
||||||
|
}
|
||||||
|
|
||||||
|
private function unabled_test_get_batch_with_invalid_where_clause() {
|
||||||
|
// CodeIgniter auto raises an exception if the where section is invalid.
|
||||||
|
}
|
||||||
|
|
||||||
|
// TEST GET ROW METHOD
|
||||||
|
private function test_get_row() {
|
||||||
|
// Insert a new customer record.
|
||||||
|
$customer_data = array(
|
||||||
|
'last_name' => 'Doe',
|
||||||
|
'first_name' => 'John',
|
||||||
|
'email' => 'alextselegidis@gmail.com',
|
||||||
|
'phone_number' => '0123456789',
|
||||||
|
'address' => 'Abbey Road 18',
|
||||||
|
'city' => 'London',
|
||||||
|
'zip_code' => '12345',
|
||||||
|
'id_roles' => $this->customer_role_id
|
||||||
|
);
|
||||||
|
$this->CI->db->insert('ea_users', $customer_data);
|
||||||
|
$customer_data['id'] = intval($this->CI->db->insert_id());
|
||||||
|
|
||||||
|
// Get the new customer record from db.
|
||||||
|
$no_model_data = $this->CI->db->get_where('ea_users', array('id' => $customer_data['id']))->row_array();
|
||||||
|
$model_data = $this->CI->Customers_Model->get_row($customer_data['id']);
|
||||||
|
|
||||||
|
// Check that the row is the correct one.
|
||||||
|
$this->CI->unit->run($no_model_data, $model_data, 'Test get_row() method');
|
||||||
|
|
||||||
|
// Delete inserted customer record.
|
||||||
|
$this->CI->db->delete('ea_users', array('id' => $customer_data['id']));
|
||||||
|
}
|
||||||
|
|
||||||
|
private function test_get_row_that_does_not_exist() {
|
||||||
|
$random_record_id = 486868412;
|
||||||
|
$row_data = $this->CI->Customers_Model->get_row($random_record_id);
|
||||||
|
$this->CI->unit->run($row_data, NULL, 'Test get_row() with record id that does '
|
||||||
|
. 'not exist in the database.');
|
||||||
|
}
|
||||||
|
|
||||||
|
private function test_get_row_with_invalid_argument() {
|
||||||
|
$invalid_id = 'THIS IS NOT AN INTEGER';
|
||||||
|
|
||||||
|
$has_thrown_exception = FALSE;
|
||||||
|
try {
|
||||||
|
$this->CI->Customers_Model->get_row($invalid_id);
|
||||||
|
} catch (InvalidArgumentException $ia_exc) {
|
||||||
|
$has_thrown_exception = TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->CI->unit->run($has_thrown_exception, TRUE, 'Test get_row() with wrong argument.');
|
||||||
|
}
|
||||||
|
|
||||||
|
// TEST GET VALUE METHOD
|
||||||
|
private function test_get_value() {
|
||||||
|
// Insert new customer record.
|
||||||
|
$customer_data = array(
|
||||||
|
'last_name' => 'Doe',
|
||||||
|
'first_name' => 'John',
|
||||||
|
'email' => 'alextselegidis@gmail.com',
|
||||||
|
'phone_number' => '0123456789',
|
||||||
|
'address' => 'Abbey Road 18',
|
||||||
|
'city' => 'London',
|
||||||
|
'zip_code' => '12345',
|
||||||
|
'id_roles' => $this->customer_role_id
|
||||||
|
);
|
||||||
|
$this->CI->db->insert('ea_users', $customer_data);
|
||||||
|
$customer_data['id'] = intval($this->CI->db->insert_id());
|
||||||
|
|
||||||
|
// Get a specific value from the database.
|
||||||
|
$model_value = $this->CI->Customers_Model->get_value('email', $customer_data['id']);
|
||||||
|
|
||||||
|
// Check if the value was correctly fetched from the database.
|
||||||
|
$this->CI->unit->run($model_value, $customer_data['email'], 'Test get_value() method.');
|
||||||
|
|
||||||
|
// Delete inserted appointment record.
|
||||||
|
$this->CI->db->delete('ea_users', array('id' => $customer_data['id']));
|
||||||
|
}
|
||||||
|
|
||||||
|
private function test_get_value_record_does_not_exist() {
|
||||||
|
$random_record_id = 843521368768;
|
||||||
|
|
||||||
|
$has_thrown_exception = FALSE;
|
||||||
|
|
||||||
|
try {
|
||||||
|
$this->CI->Customers_Model->get_value('email', $random_record_id);
|
||||||
|
} catch (InvalidArgumentException $db_exc) {
|
||||||
|
$has_thrown_exception = TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->CI->unit->run($has_thrown_exception, TRUE, 'Test get_value() with record id that does not exist.');
|
||||||
|
}
|
||||||
|
|
||||||
|
private function test_get_value_field_does_not_exist() {
|
||||||
|
// Insert new customer record.
|
||||||
|
$customer_data = array(
|
||||||
|
'last_name' => 'Doe',
|
||||||
|
'first_name' => 'John',
|
||||||
|
'email' => 'alextselegidis@gmail.com',
|
||||||
|
'phone_number' => '0123456789',
|
||||||
|
'address' => 'Abbey Road 18',
|
||||||
|
'city' => 'London',
|
||||||
|
'zip_code' => '12345',
|
||||||
|
'id_roles' => $this->customer_role_id
|
||||||
|
);
|
||||||
|
$this->CI->db->insert('ea_users', $customer_data);
|
||||||
|
$customer_data['id'] = intval($this->CI->db->insert_id());
|
||||||
|
|
||||||
|
// Try to get record value with wrong field name.
|
||||||
|
$wrong_field_name = 'THIS IS WRONG';
|
||||||
|
$has_thrown_exception = FALSE;
|
||||||
|
|
||||||
|
try {
|
||||||
|
$this->CI->Customers_Model->get_value($wrong_field_name, $customer_data['id']);
|
||||||
|
} catch (InvalidArgumentException $db_exc) {
|
||||||
|
$has_thrown_exception = TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->CI->unit->run($has_thrown_exception, TRUE, 'Test get_value() with record id that does not exist.');
|
||||||
|
|
||||||
|
// Delete inserted customer record.
|
||||||
|
$this->CI->db->delete('ea_users', array('id' => $customer_data['id']));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* End of file Unit_tests_customers_model.php */
|
/* End of file Unit_tests_customers_model.php */
|
||||||
|
|
|
@ -41,23 +41,36 @@ class Appointments_Model extends CI_Model {
|
||||||
/**
|
/**
|
||||||
* Check if a particular appointment record already exists.
|
* Check if a particular appointment record already exists.
|
||||||
*
|
*
|
||||||
* This method checks wether the given appointment already exists in
|
* This method checks wether the given appointment already exists
|
||||||
* the database. This method does not search with the id, but with a
|
* in the database. It doesn't search with the id, but by using the
|
||||||
* combination of the appointments field values.
|
* following fields: "start_datetime", "end_datetime", "id_users_provider",
|
||||||
|
* "id_users_customer", "id_services".
|
||||||
*
|
*
|
||||||
* @uses find_record_id()
|
* @expectedException InvalidArgumentException When the $appointment_data
|
||||||
|
* array does not contain the necessary field.
|
||||||
*
|
*
|
||||||
* @param array $appointment_data Associative array with the appointment's
|
* @param array $appointment_data Associative array with the appointment's
|
||||||
* data. Each key has the same name with the database fields.
|
* data. Each key has the same name with the database fields.
|
||||||
* @return bool Returns wether the record exists or not.
|
* @return bool Returns wether the record exists or not.
|
||||||
*/
|
*/
|
||||||
public function exists($appointment_data) {
|
public function exists($appointment_data) {
|
||||||
try {
|
if (!isset($appointment_data['start_datetime'])
|
||||||
$this->find_record_id($appointment_data);
|
|| !isset($appointment_data['end_datetime'])
|
||||||
return TRUE;
|
|| !isset($appointment_data['id_users_provider'])
|
||||||
} catch(DatabaseException $dbExc) {
|
|| !isset($appointment_data['id_users_customer'])
|
||||||
return FALSE;
|
|| !isset($appointment_data['id_services'])) {
|
||||||
|
throw new InvalidArgumentException('Not all appointment field values are provided : ' . print_r($appointment_data, TRUE));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$num_rows = $this->db->get_where('ea_appointments', array(
|
||||||
|
'start_datetime' => $appointment_data['start_datetime'],
|
||||||
|
'end_datetime' => $appointment_data['end_datetime'],
|
||||||
|
'id_users_provider' => $appointment_data['id_users_provider'],
|
||||||
|
'id_users_customer' => $appointment_data['id_users_customer'],
|
||||||
|
'id_services' => $appointment_data['id_services'],
|
||||||
|
))->num_rows();
|
||||||
|
|
||||||
|
return ($num_rows > 0) ? TRUE : FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -192,12 +205,15 @@ class Appointments_Model extends CI_Model {
|
||||||
/**
|
/**
|
||||||
* Delete an existing appointment record from the database.
|
* Delete an existing appointment record from the database.
|
||||||
*
|
*
|
||||||
|
* @expectedException InvalidArgumentException Raises when the $appointment_id
|
||||||
|
* is not an integer.
|
||||||
|
*
|
||||||
* @param int $appointment_id The record id to be deleted.
|
* @param int $appointment_id The record id to be deleted.
|
||||||
* @return bool Returns the delete operation result.
|
* @return bool Returns the delete operation result.
|
||||||
*/
|
*/
|
||||||
public function delete($appointment_id) {
|
public function delete($appointment_id) {
|
||||||
if (!is_int($appointment_id)) {
|
if (!is_int($appointment_id)) {
|
||||||
return FALSE; // Invalid parameter given.
|
throw new InvalidArgumentException('Invalid argument type $appointment_id : ' . $appointment_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
$num_rows = $this->db->get_where('ea_appointments', array('id' => $appointment_id))->num_rows();
|
$num_rows = $this->db->get_where('ea_appointments', array('id' => $appointment_id))->num_rows();
|
||||||
|
@ -220,7 +236,7 @@ class Appointments_Model extends CI_Model {
|
||||||
*/
|
*/
|
||||||
public function get_row($appointment_id) {
|
public function get_row($appointment_id) {
|
||||||
if (!is_int($appointment_id)) {
|
if (!is_int($appointment_id)) {
|
||||||
throw new DatabaseException('Invalid argument given. Expected integer for the $appointment_id.');
|
throw new InvalidArgumentException('Invalid argument given. Expected integer for the $appointment_id : ' . $appointment_id);
|
||||||
}
|
}
|
||||||
return $this->db->get_where('ea_appointments', array('id' => $appointment_id))->row_array();
|
return $this->db->get_where('ea_appointments', array('id' => $appointment_id))->row_array();
|
||||||
}
|
}
|
||||||
|
@ -235,21 +251,21 @@ class Appointments_Model extends CI_Model {
|
||||||
*/
|
*/
|
||||||
public function get_value($field_name, $appointment_id) {
|
public function get_value($field_name, $appointment_id) {
|
||||||
if (!is_int($appointment_id)) {
|
if (!is_int($appointment_id)) {
|
||||||
throw new DatabaseException('Invalid argument given, expected integer for the $appointment_id.');
|
throw new InvalidArgumentException('Invalid argument given, expected integer for the $appointment_id : ' . $appointment_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!is_string($field_name)) {
|
if (!is_string($field_name)) {
|
||||||
throw new DatabaseException('Invalid argument given, expected string for the $field_name.');
|
throw new InvalidArgumentException('Invalid argument given, expected string for the $field_name : ' . $field_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($this->db->get_where('ea_appointments', array('id' => $appointment_id))->num_rows() == 0) {
|
if ($this->db->get_where('ea_appointments', array('id' => $appointment_id))->num_rows() == 0) {
|
||||||
throw new DatabaseException('The record with the provided id does not exist in the datbase.');
|
throw new InvalidArgumentException('The record with the provided id does not exist in the database : ' . $appointment_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
$row_data = $this->db->get_where('ea_appointments', array('id' => $appointment_id))->row_array();
|
$row_data = $this->db->get_where('ea_appointments', array('id' => $appointment_id))->row_array();
|
||||||
|
|
||||||
if (!isset($row_data[$field_name])) {
|
if (!isset($row_data[$field_name])) {
|
||||||
throw new DatabaseException('The given field name does not exist in the database.');
|
throw new InvalidArgumentException('The given field name does not exist in the database : ' . $field_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
return $row_data[$field_name];
|
return $row_data[$field_name];
|
||||||
|
|
|
@ -15,47 +15,57 @@ class Customers_Model extends CI_Model {
|
||||||
* doesn't exists it is going to be inserted, otherwise the
|
* doesn't exists it is going to be inserted, otherwise the
|
||||||
* record is going to be updated.
|
* record is going to be updated.
|
||||||
*
|
*
|
||||||
|
* @expectedException ValidationException When customer's data are invalid.
|
||||||
|
* @expectedException DatabaseException When update or insert method fails.
|
||||||
|
*
|
||||||
* @param array $customer_data Associative array with the customer's
|
* @param array $customer_data Associative array with the customer's
|
||||||
* data. Each key has the same name with the database fields.
|
* data. Each key has the same name with the database fields.
|
||||||
* @return int Returns the customer id.
|
* @return int Returns the customer id.
|
||||||
*/
|
*/
|
||||||
public function add($customer_data) {
|
public function add($customer_data) {
|
||||||
try {
|
// Validate the appointment data before doing anything.
|
||||||
$customer_id = $this->exists($customer_data['email']);
|
if (!$this->validate_data($customer_data)) {
|
||||||
|
throw new ValidationException('Customer data are not valid.');
|
||||||
|
}
|
||||||
|
|
||||||
if (!$customer_id) {
|
if (!$this->exists($customer_data)) {
|
||||||
$customer_id = $this->insert($customer_data);
|
$customer_data['id'] = $this->insert($customer_data);
|
||||||
} else {
|
} else {
|
||||||
$customer_data['id'] = $customer_id;
|
$customer_data['id'] = $this->update($customer_data);
|
||||||
$this->update($customer_data);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return $customer_id;
|
return $customer_data['id'];
|
||||||
|
|
||||||
} catch(Exception $exc) {
|
|
||||||
// Send some info for the exception back to the browser.
|
|
||||||
echo $exc->getTraceAsString();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check if a particular customer record already exists.
|
* Check if a particular customer record already exists.
|
||||||
*
|
*
|
||||||
* This method checks wether the given customer already exists in
|
* This method checks wether the given customer already exists in
|
||||||
* the database. This method does not search with the id, but witha
|
* the database. It doesn't search with the id, but with the following
|
||||||
* the email value of the customer.
|
* fields: "email"
|
||||||
*
|
*
|
||||||
* @param string $customer_email The email field value is used to
|
* @expectedException InvalidArgumentException When the $customer_data
|
||||||
* distinguish customer records.
|
* array does not contain all the necessary fields.
|
||||||
* @return int|bool Returns the record id or FALSE if it doesn't exist.
|
*
|
||||||
|
* @param array $customer_data Associative array with the customer's
|
||||||
|
* data. Each key has the same name with the database fields.
|
||||||
|
* @return bool Returns wether the record exists or not.
|
||||||
*/
|
*/
|
||||||
public function exists($customer_email) {
|
public function exists($customer_data) {
|
||||||
$this->db->where(array(
|
if (!isset($customer_data['email'])) {
|
||||||
'email' => $customer_email,
|
throw new InvalidArgumentException('Customer\'s email is not provided.');
|
||||||
'id_roles' => $this->get_customers_role_id()
|
}
|
||||||
));
|
|
||||||
$result = $this->db->get('ea_users');
|
// This method shouldn't depend on another method of this class.
|
||||||
return ($result->num_rows() > 0) ? $result->row()->id : FALSE;
|
$num_rows = $this->db
|
||||||
|
->select('*')
|
||||||
|
->from('ea_users')
|
||||||
|
->join('ea_roles', 'ea_roles.id = ea_users.id_roles', 'inner')
|
||||||
|
->where('ea_users.email', $customer_data['email'])
|
||||||
|
->where('ea_roles.slug', DB_SLUG_CUSTOMER)
|
||||||
|
->get()->num_rows();
|
||||||
|
|
||||||
|
return ($num_rows > 0) ? TRUE : FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -68,22 +78,19 @@ class Customers_Model extends CI_Model {
|
||||||
private function insert($customer_data) {
|
private function insert($customer_data) {
|
||||||
// Before inserting the customer we need to get the customer's role id
|
// Before inserting the customer we need to get the customer's role id
|
||||||
// from the database and assign it to the new record as a foreign key.
|
// from the database and assign it to the new record as a foreign key.
|
||||||
$this->db
|
$customer_role_id = $this->db
|
||||||
->select('id')
|
->select('id')
|
||||||
->from('ea_roles')
|
->from('ea_roles')
|
||||||
->where('slug', DB_SLUG_CUSTOMER);
|
->where('slug', DB_SLUG_CUSTOMER)
|
||||||
|
->get()->row()->id;
|
||||||
|
|
||||||
$customer_role_id = $this->db->get()->row()->id;
|
|
||||||
|
|
||||||
if ($customer_role_id !== NULL) {
|
|
||||||
$customer_data['id_roles'] = $customer_role_id;
|
$customer_data['id_roles'] = $customer_role_id;
|
||||||
}
|
|
||||||
|
|
||||||
if (!$this->db->insert('ea_users', $customer_data)) {
|
if (!$this->db->insert('ea_users', $customer_data)) {
|
||||||
throw new Exception('Could not insert customer to the database.');
|
throw new DatabaseException('Could not insert customer to the database.');
|
||||||
}
|
}
|
||||||
|
|
||||||
return $this->db->insert_id();
|
return intval($this->db->insert_id());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -97,20 +104,104 @@ class Customers_Model extends CI_Model {
|
||||||
* @return int Returns the updated record id.
|
* @return int Returns the updated record id.
|
||||||
*/
|
*/
|
||||||
private function update($customer_data) {
|
private function update($customer_data) {
|
||||||
|
if (!isset($customer_data['id'])) {
|
||||||
|
$customer_data['id'] = $this->find_record_id($customer_data);
|
||||||
|
}
|
||||||
|
|
||||||
$this->db->where('id', $customer_data['id']);
|
$this->db->where('id', $customer_data['id']);
|
||||||
if (!$this->db->update('ea_users', $customer_data)) {
|
if (!$this->db->update('ea_users', $customer_data)) {
|
||||||
throw new Exception('Could not update customer to the database.');
|
throw new DatabaseException('Could not update customer to the database.');
|
||||||
|
}
|
||||||
|
|
||||||
|
return intval($customer_data['id']);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Find the database id of a customer record.
|
||||||
|
*
|
||||||
|
* The customer data should include the following fields in order to
|
||||||
|
* get the unique id from the database: "email"
|
||||||
|
*
|
||||||
|
* <strong>IMPORTANT!</strong> The record must already exists in the
|
||||||
|
* database, otherwise an exception is raised.
|
||||||
|
*
|
||||||
|
* @expectedException DatabaseException When the record is not found.
|
||||||
|
*
|
||||||
|
* @param array $customer_data Array with the customer data. The
|
||||||
|
* keys of the array should have the same names as the db fields.
|
||||||
|
* @return int Returns the id.
|
||||||
|
*/
|
||||||
|
public function find_record_id($customer_data) {
|
||||||
|
if (!isset($customer_data['email'])) {
|
||||||
|
throw new InvalidArgumentException('Customer\'s email was not provided : '
|
||||||
|
. print_r($customer_data, TRUE));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get customer's role id
|
||||||
|
$result = $this->db
|
||||||
|
->select('ea_users.id')
|
||||||
|
->from('ea_users')
|
||||||
|
->join('ea_roles', 'ea_roles.id = ea_users.id_roles', 'inner')
|
||||||
|
->where('ea_users.email', $customer_data['email'])
|
||||||
|
->where('ea_roles.slug', DB_SLUG_CUSTOMER)
|
||||||
|
->get();
|
||||||
|
|
||||||
|
if ($result->num_rows() == 0) {
|
||||||
|
throw new DatabaseException('Could not find appointment record id.');
|
||||||
|
}
|
||||||
|
|
||||||
|
return $result->row()->id;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Validate customer data before the insert or
|
||||||
|
* update operation is executed.
|
||||||
|
*
|
||||||
|
* @param array $customer_data Contains the customer data.
|
||||||
|
* @return bool Returns the validation result.
|
||||||
|
*/
|
||||||
|
public function validate_data($customer_data) {
|
||||||
|
$this->load->helper('data_validation');
|
||||||
|
|
||||||
|
try {
|
||||||
|
// Validate required fields
|
||||||
|
if (!isset($customer_data['last_name'])
|
||||||
|
|| !isset($customer_data['email'])
|
||||||
|
|| !isset($customer_data['phone_number'])) {
|
||||||
|
throw new Exception('Not all required fields are provided : '
|
||||||
|
. print_r($customer_data, TRUE));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Validate email address
|
||||||
|
if (!filter_var($customer_data['email'], FILTER_VALIDATE_EMAIL)) {
|
||||||
|
throw new Exception('Invalid email address provided : ' . $customer_data['email']);
|
||||||
|
}
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
} catch (Exception $exc) {
|
||||||
|
return FALSE;
|
||||||
}
|
}
|
||||||
return $this->db->get_where('ea_users', array('email' => $customer_data['email']))->row()->id;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Delete an existing customer record from the database.
|
* Delete an existing customer record from the database.
|
||||||
*
|
*
|
||||||
|
* @expectedException InvalidArgumentException Raises when
|
||||||
|
* the $customer_id is not an integer.
|
||||||
|
*
|
||||||
* @param int $customer_id The record id to be deleted.
|
* @param int $customer_id The record id to be deleted.
|
||||||
* @return bool Returns the delete operation result.
|
* @return bool Returns the delete operation result.
|
||||||
*/
|
*/
|
||||||
public function delete($customer_id) {
|
public function delete($customer_id) {
|
||||||
|
if (!is_int($customer_id)) {
|
||||||
|
throw new InvalidArgumentException('Invalid argument type $customer_id : ' . $customer_id);
|
||||||
|
}
|
||||||
|
|
||||||
|
$num_rows = $this->db->get_where('ea_users', array('id' => $customer_id))->num_rows();
|
||||||
|
if ($num_rows == 0) {
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
$this->db->where('id', $customer_id);
|
$this->db->where('id', $customer_id);
|
||||||
return $this->db->delete('ea_users');
|
return $this->db->delete('ea_users');
|
||||||
}
|
}
|
||||||
|
@ -124,6 +215,9 @@ class Customers_Model extends CI_Model {
|
||||||
* field names.
|
* field names.
|
||||||
*/
|
*/
|
||||||
public function get_row($customer_id) {
|
public function get_row($customer_id) {
|
||||||
|
if (!is_int($customer_id)) {
|
||||||
|
throw new InvalidArgumentException('Invalid argument provided as $customer_id : ' . $customer_id);
|
||||||
|
}
|
||||||
return $this->db->get_where('ea_users', array('id' => $customer_id))->row_array();
|
return $this->db->get_where('ea_users', array('id' => $customer_id))->row_array();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -136,6 +230,23 @@ class Customers_Model extends CI_Model {
|
||||||
* @return string Returns the records value from the database.
|
* @return string Returns the records value from the database.
|
||||||
*/
|
*/
|
||||||
public function get_value($field_name, $customer_id) {
|
public function get_value($field_name, $customer_id) {
|
||||||
|
if (!is_int($customer_id)) {
|
||||||
|
throw new InvalidArgumentException('Invalid argument provided as $customer_id : ' . $customer_id);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!is_string($field_name)) {
|
||||||
|
throw new InvalidArgumentException('$field_name argument is not a string : ' . $field_name);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($this->db->get_where('ea_users', array('id' => $customer_id))->num_rows() == 0) {
|
||||||
|
throw new InvalidArgumentException('The record with the $customer_id argument does not exist in the database : ' . $customer_id);
|
||||||
|
}
|
||||||
|
|
||||||
|
$row_data = $this->db->get_where('ea_users', array('id' => $customer_id))->row_array();
|
||||||
|
if (!isset($row_data[$field_name])) {
|
||||||
|
throw new InvalidArgumentException('The given $field_name argument does not exist in the database : ' . $field_name);
|
||||||
|
}
|
||||||
|
|
||||||
return $this->db->get_where('ea_users', array('id' => $customer_id))->row_array()[$field_name];
|
return $this->db->get_where('ea_users', array('id' => $customer_id))->row_array()[$field_name];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -148,10 +259,10 @@ class Customers_Model extends CI_Model {
|
||||||
* the query to be executed. DO NOT INCLUDE 'WHERE' KEYWORD.
|
* the query to be executed. DO NOT INCLUDE 'WHERE' KEYWORD.
|
||||||
* @return array Returns the rows from the database.
|
* @return array Returns the rows from the database.
|
||||||
*/
|
*/
|
||||||
public function get_batch($where_clause = NULL) {
|
public function get_batch($where_clause = '') {
|
||||||
$customers_role_id = $this->get_customers_role_id();
|
$customers_role_id = $this->get_customers_role_id();
|
||||||
|
|
||||||
if ($where_clause != NULL) {
|
if ($where_clause != '') {
|
||||||
$this->db->where($where_clause);
|
$this->db->where($where_clause);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -17,6 +17,9 @@ class Providers_Model extends CI_Model {
|
||||||
* field names.
|
* field names.
|
||||||
*/
|
*/
|
||||||
public function get_row($provider_id) {
|
public function get_row($provider_id) {
|
||||||
|
if (!is_int($provider_id)) {
|
||||||
|
throw new InvalidArgumentException('$provider_id argument is not an integer : ' . $provider_id);
|
||||||
|
}
|
||||||
return $this->db->get_where('ea_users', array('id' => $provider_id))->row_array();
|
return $this->db->get_where('ea_users', array('id' => $provider_id))->row_array();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -29,6 +32,23 @@ class Providers_Model extends CI_Model {
|
||||||
* @return string Returns the records value from the database.
|
* @return string Returns the records value from the database.
|
||||||
*/
|
*/
|
||||||
public function get_value($field_name, $provider_id) {
|
public function get_value($field_name, $provider_id) {
|
||||||
|
if (!is_int($provider_id)) {
|
||||||
|
throw new InvalidArgumentException('Invalid argument provided as $customer_id : ' . $provider_id);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!is_string($field_name)) {
|
||||||
|
throw new InvalidArgumentException('$field_name argument is not a string : ' . $field_name);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($this->db->get_where('ea_users', array('id' => $provider_id))->num_rows() == 0) {
|
||||||
|
throw new InvalidArgumentException('The record with the $provider_id argument does not exist in the database : ' . $provider_id);
|
||||||
|
}
|
||||||
|
|
||||||
|
$row_data = $this->db->get_where('ea_users', array('id' => $provider_id))->row_array();
|
||||||
|
if (!isset($row_data[$field_name])) {
|
||||||
|
throw new InvalidArgumentException('The given $field_name argument does not exist in the database : ' . $field_name);
|
||||||
|
}
|
||||||
|
|
||||||
return $this->db->get_where('ea_users', array('id' => $provider_id))->row_array()[$field_name];
|
return $this->db->get_where('ea_users', array('id' => $provider_id))->row_array()[$field_name];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -16,6 +16,9 @@ class Services_Model extends CI_Model {
|
||||||
* field names.
|
* field names.
|
||||||
*/
|
*/
|
||||||
public function get_row($service_id) {
|
public function get_row($service_id) {
|
||||||
|
if (!is_int($service_id)) {
|
||||||
|
throw new InvalidArgumentException('$service_id argument is not an integer : ' . $service_id);
|
||||||
|
}
|
||||||
return $this->db->get_where('ea_services', array('id' => $service_id))->row_array();
|
return $this->db->get_where('ea_services', array('id' => $service_id))->row_array();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -28,6 +31,23 @@ class Services_Model extends CI_Model {
|
||||||
* @return string Returns the records value from the database.
|
* @return string Returns the records value from the database.
|
||||||
*/
|
*/
|
||||||
public function get_value($field_name, $service_id) {
|
public function get_value($field_name, $service_id) {
|
||||||
|
if (!is_int($service_id)) {
|
||||||
|
throw new InvalidArgumentException('Invalid argument provided as $service_id : ' . $service_id);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!is_string($field_name)) {
|
||||||
|
throw new InvalidArgumentException('$field_name argument is not a string : ' . $field_name);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($this->db->get_where('ea_services', array('id' => $service_id))->num_rows() == 0) {
|
||||||
|
throw new InvalidArgumentException('The record with the $service_id argument does not exist in the database : ' . $service_id);
|
||||||
|
}
|
||||||
|
|
||||||
|
$row_data = $this->db->get_where('ea_services', array('id' => $service_id))->row_array();
|
||||||
|
if (!isset($row_data[$field_name])) {
|
||||||
|
throw new InvalidArgumentException('The given $field_name argument does not exist in the database : ' . $field_name);
|
||||||
|
}
|
||||||
|
|
||||||
return $this->db->get_where('ea_services', array('id' => $service_id))->row_array()[$field_name];
|
return $this->db->get_where('ea_services', array('id' => $service_id))->row_array()[$field_name];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -13,11 +13,22 @@ class Settings_Model extends CI_Model {
|
||||||
* This method returns a system setting from the
|
* This method returns a system setting from the
|
||||||
* database.
|
* database.
|
||||||
*
|
*
|
||||||
|
* @expectedException InvalidArgumentException Raises whenever the
|
||||||
|
* $name argument is not a string, or does not exist in the database.
|
||||||
|
*
|
||||||
* @param string $name The database setting name.
|
* @param string $name The database setting name.
|
||||||
* @return string Returns the database value for
|
* @return string Returns the database value for
|
||||||
* the selected setting.
|
* the selected setting.
|
||||||
*/
|
*/
|
||||||
function get_setting($name) {
|
function get_setting($name) {
|
||||||
|
if (!is_string($name)) { // Check argument type.
|
||||||
|
throw new InvalidArgumentException('$name argument is not a string : ' . $name);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($this->db->get_where('ea_settings', array('name' => $name))->num_rows() == 0) { // Check if setting exists in db.
|
||||||
|
throw new InvalidArgumentException('$name setting does not exist in database : ' . $name);
|
||||||
|
}
|
||||||
|
|
||||||
$query = $this->db->get_where('ea_settings', array('name' => $name));
|
$query = $this->db->get_where('ea_settings', array('name' => $name));
|
||||||
$setting = ($query->num_rows() > 0) ? $query->row() : '';
|
$setting = ($query->num_rows() > 0) ? $query->row() : '';
|
||||||
return $setting->value;
|
return $setting->value;
|
||||||
|
@ -28,31 +39,63 @@ class Settings_Model extends CI_Model {
|
||||||
* on the database. If the setting doesn't exist, it
|
* on the database. If the setting doesn't exist, it
|
||||||
* is going to be created, otherwise updated.
|
* is going to be created, otherwise updated.
|
||||||
*
|
*
|
||||||
|
* @expectedException DatabaseException Raises whenever an error
|
||||||
|
* occures during the insert or the update operation.
|
||||||
|
* @expectedException InvalidArgumentException Raises whenever
|
||||||
|
* the $name argument is not a string.
|
||||||
|
*
|
||||||
* @param string $name The setting name.
|
* @param string $name The setting name.
|
||||||
* @param type $value The setting value.
|
* @param type $value The setting value.
|
||||||
* @return bool Returns the operation success - failure
|
* @return int Returns the setting database id.
|
||||||
* result.
|
|
||||||
*/
|
*/
|
||||||
function set_setting($name, $value) {
|
function set_setting($name, $value) {
|
||||||
|
if (!is_string($name)) {
|
||||||
|
throw new InvalidArgumentException('$name argument is not a string : ' . $name);
|
||||||
|
}
|
||||||
|
|
||||||
$query = $this->db->get_where('ea_settings', array('name' => $name));
|
$query = $this->db->get_where('ea_settings', array('name' => $name));
|
||||||
if ($query->num_rows() > 0) {
|
if ($query->num_rows() > 0) {
|
||||||
// Update setting
|
// Update setting
|
||||||
$update_data = array('value' => $value);
|
if (!$this->db->update('ea_settings', array('value' => $value), array('name' => $name))) {
|
||||||
$this->db->where('name', $name);
|
throw new DatabaseException('Could not update database setting.');
|
||||||
$result = $this->db->update('ea_settings', $update_data);
|
}
|
||||||
|
$setting_id = intval($this->db->get_where('ea_settings', array('name' => $name))->row()->id);
|
||||||
} else {
|
} else {
|
||||||
// Insert setting
|
// Insert setting
|
||||||
$insert_data = array(
|
$insert_data = array(
|
||||||
'name' => $name,
|
'name' => $name,
|
||||||
'value' => $value
|
'value' => $value
|
||||||
);
|
);
|
||||||
$result = $this->db->insert('ea_settings', $insert_data);
|
if (!$this->db->insert('ea_settings', $insert_data)) {
|
||||||
|
throw new DatabaseException('Could not insert database setting');
|
||||||
|
}
|
||||||
|
$setting_id = intval($this->db->insert_id());
|
||||||
}
|
}
|
||||||
|
|
||||||
return $result;
|
return $setting_id;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove a setting from the database.
|
||||||
|
*
|
||||||
|
* @expectedException InvalidArgumentException Raises whenever
|
||||||
|
* the $name parameter is not a string.
|
||||||
|
*
|
||||||
|
* @param string $name The setting name to be removed.
|
||||||
|
* @return bool Returns the delete operation result.
|
||||||
|
*/
|
||||||
|
function remove_setting($name) {
|
||||||
|
if (!is_string($name)) {
|
||||||
|
throw new InvalidArgumentException('$name is not a string : ' . $name);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($this->db->get_where('ea_settings', array('name' => $name))->num_rows() == 0) {
|
||||||
|
return FALSE; // There is no such setting.
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->db->delete('ea_settings', array('name' => $name));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* End of file settings_model.php */
|
/* End of file settings_model.php */
|
||||||
/* Location: ./application/models/settings_model.php */
|
/* Location: ./application/models/settings_model.php */
|
Loading…
Reference in a new issue