]> CyberLeo.Net >> Repos - Github/sugarcrm.git/blob - tests/include/SearchForm/FileLocatorTest.php
Release 6.5.0beta3
[Github/sugarcrm.git] / tests / include / SearchForm / FileLocatorTest.php
1 <?php
2 /*********************************************************************************
3  * SugarCRM Community Edition is a customer relationship management program developed by
4  * SugarCRM, Inc. Copyright (C) 2004-2012 SugarCRM Inc.
5  * 
6  * This program is free software; you can redistribute it and/or modify it under
7  * the terms of the GNU Affero General Public License version 3 as published by the
8  * Free Software Foundation with the addition of the following permission added
9  * to Section 15 as permitted in Section 7(a): FOR ANY PART OF THE COVERED WORK
10  * IN WHICH THE COPYRIGHT IS OWNED BY SUGARCRM, SUGARCRM DISCLAIMS THE WARRANTY
11  * OF NON INFRINGEMENT OF THIRD PARTY RIGHTS.
12  * 
13  * This program is distributed in the hope that it will be useful, but WITHOUT
14  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
15  * FOR A PARTICULAR PURPOSE.  See the GNU Affero General Public License for more
16  * details.
17  * 
18  * You should have received a copy of the GNU Affero General Public License along with
19  * this program; if not, see http://www.gnu.org/licenses or write to the Free
20  * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
21  * 02110-1301 USA.
22  * 
23  * You can contact SugarCRM, Inc. headquarters at 10050 North Wolfe Road,
24  * SW2-130, Cupertino, CA 95014, USA. or at email address contact@sugarcrm.com.
25  * 
26  * The interactive user interfaces in modified source and object code versions
27  * of this program must display Appropriate Legal Notices, as required under
28  * Section 5 of the GNU Affero General Public License version 3.
29  * 
30  * In accordance with Section 7(b) of the GNU Affero General Public License version 3,
31  * these Appropriate Legal Notices must retain the display of the "Powered by
32  * SugarCRM" logo. If the display of the logo is not reasonably feasible for
33  * technical reasons, the Appropriate Legal Notices must display the words
34  * "Powered by SugarCRM".
35  ********************************************************************************/
36
37
38 require_once 'include/SearchForm/SearchForm2.php';
39
40 class FileLocatorTest extends Sugar_PHPUnit_Framework_TestCase
41 {
42     protected $form;
43     protected $tempfiles = array();
44
45     public function setUp()
46     {
47         $acc = new Account();
48         $this->form = new SearchFormMock($acc, "Accounts");
49     }
50
51     public function tearDown()
52     {
53         if(!empty($this->tempfiles)) {
54             foreach($this->tempfiles as $file) {
55                 @unlink($file);
56             }
57         }
58     }
59
60
61     /**
62      * Check file locator
63      */
64     public function testFileLocatorOptions()
65     {
66         $options = $this->form->getOptions();
67         $this->assertNotEmpty($options['locator_class_params'][0]);
68         $this->assertContains("custom/modules/Accounts/tpls/SearchForm", $options['locator_class_params'][0]);
69         $this->assertContains("modules/Accounts/tpls/SearchForm", $options['locator_class_params'][0]);
70     }
71
72     /**
73      * Check file locator
74      */
75     public function testFileLocatorSetOptions()
76     {
77         $paths = array('a', 'b', 'c');
78
79         $options = array(
80             'locator_class' => 'FileLocator',
81             'locator_class_params' => array(
82                 $paths
83             )
84             );
85         $this->form->setOptions($options);
86         $options = $this->form->getOptions();
87         $this->assertEquals($paths, $options['locator_class_params'][0]);
88     }
89
90     /**
91      * Check file locator
92      */
93     public function testFileLocatorOptionsCtor()
94     {
95         $paths = array('a', 'b', 'c');
96
97         $options = array(
98             'locator_class' => 'FileLocator',
99             'locator_class_params' => array(
100                 $paths
101             )
102             );
103         $this->form = new SearchForm(new Account(), "Accounts", 'index', $options);
104         $options = $this->form->getOptions();
105         $this->assertEquals($paths, $options['locator_class_params'][0]);
106     }
107
108     public function testFileLocatorFindSystemFile()
109     {
110         $this->assertEquals("include/SearchForm/tpls/SearchFormGenericAdvanced.tpl",
111             $this->form->locateFile('SearchFormGenericAdvanced.tpl'),
112             "Wrong file location"
113             );
114     }
115
116     public function testFileLocatorFindCustomFile()
117     {
118         sugar_mkdir('custom/include/SearchForm/tpls/', 0755, true);
119         sugar_mkdir('custom/modules/Accounts/tpls/SearchForm', 0755, true);
120         $this->tempfiles[]= 'custom/include/SearchForm/tpls/FileLocatorTest.tpl';
121         file_put_contents('custom/include/SearchForm/tpls/FileLocatorTest.tpl', "unittest");
122         $this->assertEquals("custom/include/SearchForm/tpls/FileLocatorTest.tpl",
123             $this->form->locateFile('FileLocatorTest.tpl'),
124             "Wrong file location"
125             );
126
127         $this->tempfiles[] = "custom/modules/Accounts/tpls/SearchForm/FileLocatorTest.tpl";
128         file_put_contents('custom/modules/Accounts/tpls/SearchForm/FileLocatorTest.tpl', "unittest");
129         $this->assertEquals("custom/modules/Accounts/tpls/SearchForm/FileLocatorTest.tpl",
130             $this->form->locateFile('FileLocatorTest.tpl'),
131             "Wrong file location"
132             );
133     }
134 }
135
136 class SearchFormMock extends SearchForm
137 {
138     public function locateFile($file)
139     {
140         return parent::locateFile($file);
141     }
142 }