]> CyberLeo.Net >> Repos - Github/sugarcrm.git/blob - tests/modules/Import/ImportDuplicateCheckTest.php
Release 6.2.0
[Github/sugarcrm.git] / tests / modules / Import / ImportDuplicateCheckTest.php
1 <?php
2 /*********************************************************************************
3  * SugarCRM Community Edition is a customer relationship management program developed by
4  * SugarCRM, Inc. Copyright (C) 2004-2011 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 'modules/Import/ImportDuplicateCheck.php';
39
40 class ImportDuplicateCheckTest extends Sugar_PHPUnit_Framework_TestCase
41 {
42     public function setUp() 
43     {
44         $beanList = array();
45         $beanFiles = array();
46         require('include/modules.php');
47         $GLOBALS['beanList'] = $beanList;
48         $GLOBALS['beanFiles'] = $beanFiles;
49         $GLOBALS['current_user'] = SugarTestUserUtilities::createAnonymousUser();
50         $app_strings = array();
51         require('include/language/en_us.lang.php');
52         $GLOBALS['app_strings'] = $app_strings;
53     }
54     
55     public function tearDown() 
56     {
57         unset($GLOBALS['beanList']);
58         unset($GLOBALS['beanFiles']);
59         unset($GLOBALS['app_strings']);
60         SugarTestUserUtilities::removeAllCreatedAnonymousUsers();
61         unset($GLOBALS['current_user']);
62     }
63     
64     public function testGetDuplicateCheckIndexesWithEmail()
65     {
66         $focus = loadBean('Contacts');
67         
68         $idc     = new ImportDuplicateCheck($focus);
69         $indexes = $idc->getDuplicateCheckIndexes();
70         
71         foreach ( $focus->getIndices() as $key => $index ) {
72             if ($key != 'id') $this->assertTrue(isset($indexes[$index['name']]),"{$index['name']} should be in the list");
73         }
74         
75         $this->assertTrue(isset($indexes['special_idx_email1']));
76         $this->assertTrue(isset($indexes['special_idx_email2']));
77     }
78     
79     public function testGetDuplicateCheckIndexesNoEmail()
80     {
81         $focus = loadBean('Calls');
82         
83         $idc     = new ImportDuplicateCheck($focus);
84         $indexes = $idc->getDuplicateCheckIndexes();
85         
86         foreach ( $focus->getIndices() as $key => $index ) {
87             if ($key != 'id') $this->assertTrue(isset($indexes[$index['name']]));
88         }
89         
90         $this->assertFalse(isset($indexes['special_idx_email1']));
91         $this->assertFalse(isset($indexes['special_idx_email2']));
92     }
93     
94     public function testIsADuplicateRecord()
95     {
96         $last_name = 'FooBar'.date("YmdHis");
97         
98         $focus = loadBean('Contacts');
99         $focus->last_name = $last_name;
100         $id = $focus->save(false);
101         
102         $focus = loadBean('Contacts');
103         $focus->last_name = $last_name;
104         
105         $idc = new ImportDuplicateCheck($focus);
106         
107         $this->assertTrue($idc->isADuplicateRecord(array('idx_contacts_del_last')));
108         
109         $focus->mark_deleted($id);
110     }
111     
112     public function testIsADuplicateRecordEmail()
113     {
114         $email = date("YmdHis").'@foobar.com';
115         
116         $focus = loadBean('Contacts');
117         $focus->email1 = $email;
118         $id = $focus->save(false);
119         
120         $focus = loadBean('Contacts');
121         $focus->email1 = $email;
122         
123         $idc = new ImportDuplicateCheck($focus);
124         
125         $this->assertTrue($idc->isADuplicateRecord(array('special_idx_email1')));
126         
127         $focus->mark_deleted($id);
128     }
129     
130     public function testIsADuplicateRecordNotFound()
131     {
132         $last_name = 'BadFooBar'.date("YmdHis");
133         
134         $focus = loadBean('Contacts');
135         $focus->last_name = $last_name;
136         
137         $idc = new ImportDuplicateCheck($focus);
138         
139         $this->assertFalse($idc->isADuplicateRecord(array('idx_contacts_del_last')));
140     }
141     
142     public function testIsADuplicateRecordEmailNotFound()
143     {
144         $email = date("YmdHis").'@badfoobar.com';
145         
146         $focus = loadBean('Contacts');
147         $focus->email1 = $email;
148         
149         $idc = new ImportDuplicateCheck($focus);
150         
151         $this->assertFalse($idc->isADuplicateRecord(array('special_idx_email1')));
152     }
153 }