3 require_once 'include/dir_inc.php';
5 class Bug37841Test extends Sugar_PHPUnit_Framework_TestCase
13 $this->modules = array('Accounts');
14 $this->has_dir = array();
16 foreach($this->modules as $module) {
17 if(!file_exists("custom/modules/{$module}/metadata")){
18 mkdir_recursive("custom/modules/{$module}/metadata", true);
21 if(file_exists("custom/modules/{$module}")) {
22 $this->has_dir[$module] = true;
25 $this->clearFilesInDirectory('custom/modules/Accounts/metadata');
26 $this->clearFilesInDirectory('custom/history/modules/Accounts/metadata');
31 $this->clearFilesInDirectory('custom/history/modules/Accounts/metadata');
32 foreach($this->modules as $module) {
33 if(!$this->has_dir[$module]) {
34 rmdir_recursive("custom/modules/{$module}");
36 $files = array('editviewdefs','detailviewdefs');
37 foreach($files as $file) {
38 if(file_exists("custom/modules/{$module}/metadata/{$file}.php.bak")) {
39 copy("custom/modules/{$module}/metadata/{$file}.php.bak", "custom/modules/{$module}/metadata/{$file}.php");
40 unlink("custom/modules/{$module}/metadata/{$file}.php.bak");
41 } else if(file_exists("custom/modules/{$module}/metadata/{$file}.php")) {
42 unlink("custom/modules/{$module}/metadata/{$file}.php");
45 if(file_exists("custom/modules/{$module}/metadata/{$module}.php.suback.bak")) {
46 copy("custom/modules/{$module}/metadata/{$file}.php.suback.bak", "custom/modules/{$module}/metadata/{$file}.php.suback.php");
47 unlink("custom/modules/{$module}/metadata/{$file}.php.suback.bak");
48 } else if(file_exists("custom/modules/{$module}/metadata/{$file}.php.suback.php")) {
49 unlink("custom/modules/{$module}/metadata/{$file}.php.suback.php");
59 * Ensure that no custom metadata is created and no history item created.
62 function testHistoryCreationForNonUpgradedMetadataFiles()
64 $this->clearFilesInDirectory('custom/modules/Accounts/metadata');
65 $this->clearFilesInDirectory('custom/history/modules/Accounts/metadata');
66 require_once('modules/UpgradeWizard/SugarMerge/SugarMerge.php');
67 $sugar_merge = new SugarMerge('tests/modules/UpgradeWizard/SugarMerge/od_metadata_files/610/oob');
69 //Using oob defs make sure nothing is merged
70 $mergedFiles = $sugar_merge->mergeModule('Accounts');
71 $this->assertFalse(file_exists('custom/modules/Accounts/metadata/detailviewdefs.php'));
72 $this->assertFalse($this->checkForHistoryRecords('Accounts'));
76 * Ensure that a history item is created when SugarMerge executes and that the file contents are identical.
79 function testHistoryCreationForUpgradedMetadataFiles()
82 $accountsHistoryMetadataLocation = 'custom/history/modules/Accounts/metadata';
83 $this->clearFilesInDirectory('custom/modules/Accounts/metadata');
84 $this->clearFilesInDirectory($accountsHistoryMetadataLocation);
85 $customFile = "tests/modules/UpgradeWizard/SugarMerge/od_metadata_files/610/custom/modules/Accounts/metadata/detailviewdefs.php";
86 $customFileTo = "custom/modules/Accounts/metadata/detailviewdefs.php";
87 copy($customFile, $customFileTo);
88 require_once('modules/UpgradeWizard/SugarMerge/SugarMerge.php');
89 $sugar_merge = new SugarMerge('tests/modules/UpgradeWizard/SugarMerge/od_metadata_files/610/custom');
90 $mergedFiles = $sugar_merge->mergeModule('Accounts');
92 $this->assertTrue(file_exists('custom/modules/Accounts/metadata/detailviewdefs.php'), "Custom metadata file not created.");
93 $this->assertTrue($this->checkForHistoryRecords('Accounts'));
94 //Ensure history file and custom file are the same.
95 $oldCustomFile = file_get_contents($customFile);
96 $newHistoryFile = $this->getFirstFileContentsInDirectory($accountsHistoryMetadataLocation);
97 $this->assertEquals($oldCustomFile, $newHistoryFile, "Error previous custom file before merge and new history record are not identical.");
101 private function clearFilesInDirectory($path)
103 $dir_handle = @opendir($path);
104 if ($dir_handle === false)
106 while (($filename = readdir($dir_handle)) !== false)
108 if ($filename == '.' || $filename == '..')
111 unlink("{$path}/{$filename}");
115 private function getFirstFileContentsInDirectory($path)
118 $dir_handle = opendir($path);
119 if ($dir_handle === false)
121 while (($filename = readdir($dir_handle)) !== false)
123 if ($filename == '.' || $filename == '..')
126 return file_get_contents("{$path}/{$filename}");
130 private function checkForHistoryRecords($module_dir)
132 $parth = "custom/history/modules/$module_dir/metadata";
133 $dir_handle = @opendir($parth);
134 if ($dir_handle === false)
137 while (($filename = readdir($dir_handle)) !== false)
139 if ($filename == '.' || $filename == '..')