]> CyberLeo.Net >> Repos - Github/sugarcrm.git/blob - tests/modules/UpgradeWizard/SugarMerge/Bug37841Test.php
Added unit tests.
[Github/sugarcrm.git] / tests / modules / UpgradeWizard / SugarMerge / Bug37841Test.php
1 <?php
2
3 require_once 'include/dir_inc.php';
4
5 class Bug37841Test extends Sugar_PHPUnit_Framework_TestCase  
6 {
7
8     var $merge;
9     var $has_dir;
10     var $modules;
11     
12     function setUp() {
13        $this->modules = array('Accounts');
14        $this->has_dir = array();
15        
16        foreach($this->modules as $module) {
17            if(!file_exists("custom/modules/{$module}/metadata")){
18                   mkdir_recursive("custom/modules/{$module}/metadata", true);
19            }
20            
21            if(file_exists("custom/modules/{$module}")) {
22                   $this->has_dir[$module] = true;
23            }
24        } //foreach
25        $this->clearFilesInDirectory('custom/modules/Accounts/metadata');
26        $this->clearFilesInDirectory('custom/history/modules/Accounts/metadata');
27     }
28     
29     
30     function tearDown() {
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}");
35            }  else {
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");
43                       }
44                       
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");
50                       }  
51                    }
52            }
53        } //foreach
54     }
55     
56     
57     
58     /**
59      * Ensure that no custom metadata is created and no history item created.
60      *
61      */
62     function testHistoryCreationForNonUpgradedMetadataFiles() 
63     {           
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');
68        
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'));
73     }
74     
75     /**
76      * Ensure that a history item is created when SugarMerge executes and that the file contents are identical.
77      *
78      */
79     function testHistoryCreationForUpgradedMetadataFiles() 
80     {   
81         
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');
91     
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.");
98     }
99     
100     
101     private function clearFilesInDirectory($path)
102     {
103         $dir_handle = @opendir($path);
104         if ($dir_handle === false) 
105             return;
106         while (($filename = readdir($dir_handle)) !== false) 
107         {
108             if ($filename == '.' || $filename == '..')
109                 continue;
110             else 
111                 unlink("{$path}/{$filename}");
112         }
113     }
114     
115     private function getFirstFileContentsInDirectory($path)
116     {
117         $results = "";
118         $dir_handle = opendir($path);
119         if ($dir_handle === false)
120             return "";
121         while (($filename = readdir($dir_handle)) !== false)
122         {
123             if ($filename == '.' || $filename == '..')
124                 continue;
125             else
126                return file_get_contents("{$path}/{$filename}");
127         }
128         return $results;
129     }
130     private function checkForHistoryRecords($module_dir)
131     {
132         $parth = "custom/history/modules/$module_dir/metadata";
133         $dir_handle = @opendir($parth);
134         if ($dir_handle === false) 
135             return FALSE;
136         $found = FALSE;
137         while (($filename = readdir($dir_handle)) !== false) 
138         {
139             if ($filename == '.' || $filename == '..')
140                 continue;
141             else 
142                 return TRUE;
143         }
144         return $found;
145     }
146 }
147 ?>