4 * Class CRM_Core_DAOTest
7 class CRM_Logging_LoggingTest
extends CiviUnitTestCase
{
9 public function setUp() {
13 public function tearDown() {
14 CRM_Core_I18n_Schema
::makeSinglelingual('en_US');
15 $logging = new CRM_Logging_Schema();
16 $logging->dropAllLogTables();
17 \Civi
::$statics['CRM_Logging_Schema']['columnSpecs'] = array();
22 * Test creating logging schema when database is in multilingual mode.
24 public function testMultilingualLogging() {
25 CRM_Core_I18n_Schema
::makeMultilingual('en_US');
26 $logging = new CRM_Logging_Schema();
27 $logging->enableLogging();
28 $value = CRM_Core_DAO
::singleValueQuery("SELECT id FROM log_civicrm_contact LIMIT 1", array(), FALSE, FALSE);
29 $this->assertNotNull($value, 'Logging not enabled successfully');
30 $logging->disableLogging();
34 * Test creating logging schema when database is in multilingual mode.
35 * Also test altering a multilingual table.
37 public function testMultilingualAlterSchemaLogging() {
38 CRM_Core_I18n_Schema
::makeMultilingual('en_US');
39 $logging = new CRM_Logging_Schema();
40 $logging->enableLogging();
41 $value = CRM_Core_DAO
::singleValueQuery("SELECT id FROM log_civicrm_contact LIMIT 1", array(), FALSE, FALSE);
42 $this->assertNotNull($value, 'Logging not enabled successfully');
43 CRM_Core_DAO
::executeQuery("ALTER TABLE `civicrm_option_value` ADD COLUMN `logging_test` INT DEFAULT '0'", array(), FALSE, NULL, FALSE, FALSE);
44 CRM_Core_I18n_Schema
::rebuildMultilingualSchema(array('en_US'));
45 \Civi
::$statics['CRM_Logging_Schema']['columnSpecs'] = array();
46 $logging->fixSchemaDifferencesFor('civicrm_option_value', array(), TRUE);
47 $query = CRM_Core_DAO
::executeQuery("SHOW CREATE TABLE `log_civicrm_option_value`", array(), TRUE, NULL, FALSE, FALSE);
49 $create = explode("\n", $query->Create_Table
);
50 $this->assertTrue(in_array(" `logging_test` int(11) DEFAULT '0'", $create));
51 $create = explode("\n", $query->Create_Table
);
52 CRM_Core_DAO
::executeQuery("ALTER TABLE `civicrm_option_value` DROP COLUMN `logging_test`", array(), FALSE, NULL, FALSE, FALSE);
53 $query = CRM_Core_DAO
::executeQuery("SHOW CREATE TABLE `log_civicrm_option_value`", array(), TRUE, NULL, FALSE, FALSE);
55 $domain = new CRM_Core_DAO_Domain();
57 $locales = explode(CRM_Core_DAO
::VALUE_SEPARATOR
, $domain->locales
);
58 \Civi
::$statics['CRM_Logging_Schema']['columnSpecs'] = array();
59 CRM_Core_I18n_Schema
::rebuildMultilingualSchema($locales);
60 $logging->fixSchemaDifferencesFor('civicrm_option_value', array(), TRUE);
61 $this->assertTrue(in_array(" `logging_test` int(11) DEFAULT '0'", $create));
62 $logging->disableLogging();