]> CyberLeo.Net >> Repos - Github/sugarcrm.git/blob - tests/data/GetLinkedBeansTest.php
Release 6.5.1
[Github/sugarcrm.git] / tests / data / GetLinkedBeansTest.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("data/BeanFactory.php");
39 class GetLinkedBeansTest extends Sugar_PHPUnit_Framework_TestCase
40 {
41     protected $createdBeans = array();
42     protected $createdFiles = array();
43
44     public function setUp()
45         {
46             $GLOBALS['current_user'] = SugarTestUserUtilities::createAnonymousUser();
47         $GLOBALS['current_user']->setPreference('timezone', "America/Los_Angeles");
48             $GLOBALS['current_user']->setPreference('datef', "m/d/Y");
49                 $GLOBALS['current_user']->setPreference('timef', "h.iA");
50
51         $beanList = array();
52         $beanFiles = array();
53         require('include/modules.php');
54         $GLOBALS['beanList'] = $beanList;
55         $GLOBALS['beanFiles'] = $beanFiles;
56         }
57
58         public function tearDown()
59         {
60             foreach($this->createdBeans as $bean)
61         {
62             $bean->retrieve($bean->id);
63             $bean->mark_deleted($bean->id);
64         }
65         foreach($this->createdFiles as $file)
66         {
67             if (is_file($file))
68                 unlink($file);
69         }
70
71         unset($GLOBALS['beanFiles'], $GLOBALS['beanList']);
72         }
73
74     public function testGetLinkedBeans()
75     {
76         //Test the accounts_leads relationship
77         $account = BeanFactory::newBean("Accounts");
78         $account->name = "GetLinkedBeans Test Account";
79         $account->save();
80         $this->createdBeans[] = $account;
81
82         $case  = BeanFactory::newBean("Cases");
83         $case->name = "GetLinkedBeans Test Cases";
84         $case->save();
85         $this->createdBeans[] = $case;
86
87         $this->assertTrue($account->load_relationship("cases"));
88         $this->assertInstanceOf("Link2", $account->cases);
89         $this->assertTrue($account->cases->loadedSuccesfully());
90         $account->cases->add($case);
91         $account->save();
92
93         $where = array(
94                  'lhs_field' => 'id',
95                  'operator' => ' LIKE ',
96                  'rhs_value' => "{$case->id}",
97         );
98
99         $cases = $account->get_linked_beans('cases', 'Case', array(), 0, 10, 0, $where);
100         $this->assertEquals(1, count($cases), 'Assert that we have found the test case linked to the test account');
101
102         $contact  = BeanFactory::newBean("Contacts");
103         $contact->first_name = "First Name GetLinkedBeans Test Contacts";
104         $contact->last_name = "First Name GetLinkedBeans Test Contacts";
105         $contact->save();
106         $this->createdBeans[] = $contact;
107
108         $this->assertTrue($account->load_relationship("contacts"));
109         $this->assertInstanceOf("Link2", $account->contacts);
110         $this->assertTrue($account->contacts->loadedSuccesfully());
111         $account->contacts->add($contact);
112
113         $where = array(
114                  'lhs_field' => 'id',
115                  'operator' => ' LIKE ',
116                  'rhs_value' => "{$contact->id}",
117         );
118
119         $contacts = $account->get_linked_beans('contacts', 'Contact', array(), 0, -1, 0, $where);
120         $this->assertEquals(1, count($contacts), 'Assert that we have found the test contact linked to the test account');
121     }
122     
123 }
124 ?>