def setUp(self): self.handlers = mock.MagicMock() self.settings = mock.MagicMock() self.database = {"database": DATABASE_NAME} self.emp_handler = EmployeeHandler(self.handlers, self.settings, **self.database) self.result = EMPLOYEE_DATA self.emp_id = EMPLOYEE_DATA[0][0] self.emp_handler.dict_builder = mock.MagicMock() self.emp_handler.db = mock.MagicMock(return_value="successfully connected") self.emp_handler.cursor = mock.MagicMock() self.emp_handler.cursor.fetchone.return_value = self.result[0]
class TestEmployeeHandler(unittest.TestCase): """ test case for EmployeeHandler """ def setUp(self): self.handlers = mock.MagicMock() self.settings = mock.MagicMock() self.database = {"database": DATABASE_NAME} self.emp_handler = EmployeeHandler(self.handlers, self.settings, **self.database) self.result = EMPLOYEE_DATA self.emp_id = EMPLOYEE_DATA[0][0] self.emp_handler.dict_builder = mock.MagicMock() self.emp_handler.db = mock.MagicMock(return_value="successfully connected") self.emp_handler.cursor = mock.MagicMock() self.emp_handler.cursor.fetchone.return_value = self.result[0] def test_validate_data_ok(self): data = json.loads(POST_DATA) self.emp_handler.validate_data(POST_DATA) self.assertEqual(self.emp_handler.data, data) def test_get_with_data(self): """ Test case when there data exist for the requested emp_id :return: """ self.emp_handler.get(self.emp_id) self.emp_handler.cursor.execute.assert_called_once_with('''SELECT * from employee where emp_id=?''', self.emp_id) self.emp_handler.dict_builder.assert_called_once_with(self.result) self.assertEqual(self.emp_handler._status_code, 200) def test_get_with_no_data(self): """ Test case when there is no data for the requested emp_id :return: """ self.emp_handler.cursor.fetchone.return_value = [] self.emp_handler.get(self.emp_id) self.emp_handler.cursor.execute.assert_called_once_with('''SELECT * from employee where emp_id=?''', self.emp_id) self.assertEqual(self.emp_handler._status_code, 404) def test_get_with_attribute_error(self): """ test case for AttributeError :return: """ self.emp_handler.cursor.execute.side_effect = AttributeError() self.emp_handler.get(self.emp_id) self.emp_handler.cursor.execute.assert_called_once_with('''SELECT * from employee where emp_id=?''', self.emp_id) self.assertEqual(self.emp_handler._status_code, 404) def test_post(self): """ Test case for post method :return: """ self.emp_handler.request = mock.MagicMock() self.emp_handler.request.body = POST_DATA self.emp_handler.validate_data = mock.MagicMock(return_value=True) self.emp_handler.data = json.loads(POST_DATA) self.emp_handler.post() self.emp_handler.cursor.execute.assert_called_once_with("INSERT INTO employee(first_name, last_name, address, " "city, state, zip) VALUES(?,?,?,?,?,?)", (self.emp_handler.data['first_name'], self.emp_handler.data.get('last_name'), self.emp_handler.data.get('address'), self.emp_handler.data.get('city'), self.emp_handler.data.get('state'), self.emp_handler.data['zip'])) self.emp_handler.validate_data.assert_called_once_with(POST_DATA) self.assertEqual(self.emp_handler._status_code, 201) def test_put(self): """ Test case for put method :return: """ self.emp_handler.request = mock.MagicMock() self.emp_handler.request.body = POST_DATA self.emp_handler.validate_data = mock.MagicMock(return_value=True) self.emp_handler.data = json.loads(POST_DATA) self.emp_handler.put(self.emp_id) self.emp_handler.cursor.execute.assert_called_once_with("UPDATE employee set first_name=?, last_name=?, " "address=?, city=?, state=?, zip=? " " WHERE emp_id=?", (self.emp_handler.data['first_name'], self.emp_handler.data.get('last_name'), self.emp_handler.data.get('address'), self.emp_handler.data.get('city'), self.emp_handler.data.get('state'), self.emp_handler.data['zip'], int(self.emp_id))) self.emp_handler.validate_data.assert_called_once_with(POST_DATA) self.assertEqual(self.emp_handler._status_code, 201) def test_delete(self): """ Test case for delete method :return: """ self.emp_handler.delete(self.emp_id) self.emp_handler.cursor.execute.assert_called_once_with('''DELETE from employee where emp_id=?''', self.emp_id) self.assertEqual(self.emp_handler._status_code, 200)