Test Failed
Push — CI ( 0f01dd...c95a04 )
by Adam
55:13
created

LeadTest::testSaveAndConverted_lead()   B

Complexity

Conditions 1
Paths 1

Size

Total Lines 37
Code Lines 13

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
dl 0
loc 37
rs 8.8571
c 1
b 0
f 1
cc 1
eloc 13
nc 1
nop 0
1
<?php
2
3
class LeadTest extends PHPUnit_Framework_TestCase {
4
5
6
	public function testLead() 
7
	{
8
9
		//execute the contructor and check for the Object type and  attributes
10
		$lead = new Lead();
11
		 
12
		$this->assertInstanceOf('Lead',$lead);
13
		$this->assertInstanceOf('Person',$lead);
14
		$this->assertInstanceOf('SugarBean',$lead);
15
		
16
		$this->assertAttributeEquals('Leads', 'module_dir', $lead);
17
		$this->assertAttributeEquals('Lead', 'object_name', $lead);
18
		$this->assertAttributeEquals('Leads', 'object_names', $lead);		
19
		$this->assertAttributeEquals('leads', 'table_name', $lead);
20
		
21
		$this->assertAttributeEquals(true, 'new_schema', $lead);
22
		$this->assertAttributeEquals(true, 'importable', $lead);
23
24
	}
25
26
	public function testget_account()
27
	{
28
		error_reporting(E_ERROR | E_PARSE);
29
		
30
		$lead = new Lead();
31
		
32
		//test without pre settting attributes
33
		$result = $lead->get_account();
34
		$this->assertEquals(null,$result);
35
		
36
		
37
		//test with required attributes preset
38
		$lead->account_id =1;
39
		$result = $lead->get_account();
40
		$this->assertEquals(null,$result);
41
		
42
		
43
	}
44
	
45
	public function testget_opportunity()
46
	{
47
48
		$lead = new Lead();
49
		
50
		//test without pre settting attributes
51
		$result = $lead->get_opportunity();
52
		$this->assertEquals(null,$result);
53
		
54
		
55
		//test with required attributes preset
56
		$lead->opportunity_id =1;
57
		$result = $lead->get_opportunity();
58
		$this->assertEquals(null,$result);
59
		
60
	}
61
	
62
	public function testget_contact()
63
	{
64
65
		$lead = new Lead();
66
		
67
		//test without pre settting attributes
68
		$result = $lead->get_contact();
69
		$this->assertEquals(null,$result);
70
		
71
		
72
		//test with required attributes preset
73
		$lead->contact_id =1;
74
		$result = $lead->get_contact();
75
		$this->assertEquals(null,$result);
76
		
77
		
78
	}
79
80
	public function testcreate_list_query()
81
	{
82
		$lead = new Lead();
83
		
84
		//test with empty string params
85
		$expected = "SELECT leads.*, users.user_name assigned_user_name FROM leads 			LEFT JOIN users\n                                ON leads.assigned_user_id=users.id LEFT JOIN email_addr_bean_rel eabl  ON eabl.bean_id = leads.id AND eabl.bean_module = 'Leads' and eabl.primary_address = 1 and eabl.deleted=0 LEFT JOIN email_addresses ea ON (ea.id = eabl.email_address_id) where  leads.deleted=0 ";
86
		$actual = $lead->create_list_query('','');
87
		$this->assertSame($expected,$actual);
88
		
89
		 
90
		//test with valid string params
91
		$expected = "SELECT leads.*, users.user_name assigned_user_name FROM leads 			LEFT JOIN users\n                                ON leads.assigned_user_id=users.id LEFT JOIN email_addr_bean_rel eabl  ON eabl.bean_id = leads.id AND eabl.bean_module = 'Leads' and eabl.primary_address = 1 and eabl.deleted=0 LEFT JOIN email_addresses ea ON (ea.id = eabl.email_address_id) where (users.user_name=\"\") AND  leads.deleted=0  ORDER BY leads.id";
92
		$actual = $lead->create_list_query('leads.id','users.user_name=""');
93
		$this->assertSame($expected,$actual);
94
				
95
	}
96
97
	public function testcreate_new_list_query()
98
	{
99
100
		$lead = new Lead();
101
		
102
		//test with empty string params
103
		$expected = " SELECT  leads.* , '                                                                                                                                                                                                                                                              ' c_accept_status_fields , '                                    '  call_id , '                                                                                                                                                                                                                                                              ' e_invite_status_fields , '                                    '  fp_events_leads_1fp_events_ida , '                                                                                                                                                                                                                                                              ' e_accept_status_fields , LTRIM(RTRIM(CONCAT(IFNULL(leads.first_name,''),' ',IFNULL(leads.last_name,'')))) as name , jt3.user_name modified_by_name , jt3.created_by modified_by_name_owner  , 'Users' modified_by_name_mod , jt4.user_name created_by_name , jt4.created_by created_by_name_owner  , 'Users' created_by_name_mod , jt5.user_name assigned_user_name , jt5.created_by assigned_user_name_owner  , 'Users' assigned_user_name_mod, LTRIM(RTRIM(CONCAT(IFNULL(leads.first_name,''),' ',IFNULL(leads.last_name,'')))) as full_name , jt6.name campaign_name , jt6.assigned_user_id campaign_name_owner  , 'Campaigns' campaign_name_mod, '                                                                                                                                                                                                                                                              ' m_accept_status_fields , '                                    '  meeting_id  FROM leads   LEFT JOIN  users jt3 ON leads.modified_user_id=jt3.id AND jt3.deleted=0\n\n AND jt3.deleted=0  LEFT JOIN  users jt4 ON leads.created_by=jt4.id AND jt4.deleted=0\n\n AND jt4.deleted=0  LEFT JOIN  users jt5 ON leads.assigned_user_id=jt5.id AND jt5.deleted=0\n\n AND jt5.deleted=0  LEFT JOIN  campaigns jt6 ON leads.campaign_id=jt6.id AND jt6.deleted=0\n\n AND jt6.deleted=0 where leads.deleted=0";
104
		$actual = $lead->create_new_list_query('','');
105
		$this->assertSame($expected,$actual);
106
107
			
108
		//test with valid string params
109
		$expected = " SELECT  leads.* , '                                                                                                                                                                                                                                                              ' c_accept_status_fields , '                                    '  call_id , '                                                                                                                                                                                                                                                              ' e_invite_status_fields , '                                    '  fp_events_leads_1fp_events_ida , '                                                                                                                                                                                                                                                              ' e_accept_status_fields , LTRIM(RTRIM(CONCAT(IFNULL(leads.first_name,''),' ',IFNULL(leads.last_name,'')))) as name , jt3.user_name modified_by_name , jt3.created_by modified_by_name_owner  , 'Users' modified_by_name_mod , jt4.user_name created_by_name , jt4.created_by created_by_name_owner  , 'Users' created_by_name_mod , jt5.user_name assigned_user_name , jt5.created_by assigned_user_name_owner  , 'Users' assigned_user_name_mod, LTRIM(RTRIM(CONCAT(IFNULL(leads.first_name,''),' ',IFNULL(leads.last_name,'')))) as full_name , jt6.name campaign_name , jt6.assigned_user_id campaign_name_owner  , 'Campaigns' campaign_name_mod, '                                                                                                                                                                                                                                                              ' m_accept_status_fields , '                                    '  meeting_id  FROM leads   LEFT JOIN  users jt3 ON leads.modified_user_id=jt3.id AND jt3.deleted=0\n\n AND jt3.deleted=0  LEFT JOIN  users jt4 ON leads.created_by=jt4.id AND jt4.deleted=0\n\n AND jt4.deleted=0  LEFT JOIN  users jt5 ON leads.assigned_user_id=jt5.id AND jt5.deleted=0\n\n AND jt5.deleted=0  LEFT JOIN  campaigns jt6 ON leads.campaign_id=jt6.id AND jt6.deleted=0\n\n AND jt6.deleted=0 where (users.user_name=\"\") AND leads.deleted=0";
110
		$actual = $lead->create_new_list_query('leads.id','users.user_name=""');
111
		$this->assertSame($expected,$actual);
112
		
113
	}
114
115
    public function testSaveAndConverted_lead()
116
    {
117
    	$lead = new Lead();
118
119
    	$lead->first_name = "firstn";
120
    	$lead->last_name ="lastnn";
121
    	$lead->lead_source = "test";
122
    	    	
123
    	$result = $lead->save();
124
    	
125
    	//test for record ID to verify that record is saved
126
    	$this->assertTrue(isset($lead->id));
127
    	$this->assertEquals(36, strlen($lead->id));
128
    	$this->assertEquals("New", $lead->status);
129
    	
130
    	
131
    	//test converted_lead method after saving
132
    	/*$lead->converted_lead("'" . $lead->id . "'" , "'1'", "'1'", "'1'");
133
    	
134
    	//retrieve back to test if attributes are updated in db
135
    	$lead = $lead->retrieve($lead->id);
136
    	$this->assertEquals("Converted", $lead->status);
137
    	$this->assertEquals("1", $lead->converted);
138
    	$this->assertEquals("1", $lead->contact_id);
139
    	$this->assertEquals("1", $lead->account_id);
140
    	$this->assertEquals("1", $lead->opportunity_id);
141
		*/
142
    	
143
    	$this->markTestSkipped("converted_lead: Error in query, id's not properly escaped ");
144
    	 
145
    	
146
    	//mark the record as deleted and verify that this record cannot be retrieved anymore.
147
    	$lead->mark_deleted($lead->id);
148
    	$result = $lead->retrieve($lead->id);
149
    	$this->assertEquals(null,$result);
150
    	
151
    }
152
153
    
154
    
155
	public function testfill_in_additional_list_fields()
156
	{
157
		$lead = new Lead();
158
		
159
		$lead->first_name = "firstn";
160
		$lead->last_name ="lastn";
161
		
162
		$lead->fill_in_additional_list_fields();
163
		
164
		$this->assertEquals("firstn lastn", $lead->name );
165
		
166
	}
167
168
	
169
	public function testfill_in_additional_detail_fields()
170
	{
171
172
		$lead = new Lead();
173
		
174
		$lead->first_name = "firstn";
175
		$lead->last_name ="lastn";
176
		
177
		$lead->fill_in_additional_detail_fields();
178
		
179
		$this->assertEquals("firstn lastn", $lead->name );
180
		
181
		
182
		
183
	}
184
185
	public function testget_list_view_data(){
186
187
		$lead = new Lead();
188
		
189
		$expected = array (
190
					  'NAME' => ' ',
191
					  'DELETED' => 0,
192
					  'FULL_NAME' => ' ',
193
					  'DO_NOT_CALL' => '0',
194
					  'CONVERTED' => '0',
195
					  'ENCODED_NAME' => ' ',
196
					  'EMAIL1' => '',
197
					  'EMAIL1_LINK' => '<a href=\'javascript:void(0);\' onclick=\'SUGAR.quickCompose.init({"fullComposeUrl":"contact_id=\\u0026parent_type=Leads\\u0026parent_id=\\u0026parent_name=+\\u0026to_addrs_ids=\\u0026to_addrs_names=\\u0026to_addrs_emails=\\u0026to_email_addrs=+%26nbsp%3B%26lt%3B%26gt%3B\\u0026return_module=Leads\\u0026return_action=ListView\\u0026return_id=","composePackage":{"contact_id":"","parent_type":"Leads","parent_id":"","parent_name":" ","to_addrs_ids":"","to_addrs_names":"","to_addrs_emails":"","to_email_addrs":"  \\u003C\\u003E","return_module":"Leads","return_action":"ListView","return_id":""}});\' class=\'\'>',
198
					  'ACC_NAME_FROM_ACCOUNTS' => NULL,
199
					);
200
		
201
		$actual = $lead->get_list_view_data();
202
				
203
		//$this->assertSame($expected, $actual);
204
		$this->assertEquals($expected['NAME'], $actual['NAME']);
205
		$this->assertEquals($expected['DELETED'], $actual['DELETED']);
206
		$this->assertEquals($expected['FULL_NAME'], $actual['FULL_NAME']);
207
		$this->assertEquals($expected['DO_NOT_CALL'], $actual['DO_NOT_CALL']);
208
		$this->assertEquals($expected['EMAIL1_LINK'], $actual['EMAIL1_LINK']);
209
210
	}
211
	
212
213
    public function testget_linked_fields()
214
    {
215
    	$lead = new Lead();
216
217
    	$expected = array (
218
					  'created_by_link',
219
					  'modified_user_link',
220
					  'assigned_user_link',
221
					  'email_addresses_primary',
222
					  'email_addresses',
223
					  'reports_to_link',
224
					  'reportees',
225
					  'contacts',
226
					  'accounts',
227
					  'contact',
228
					  'opportunity',
229
					  'campaign_leads',
230
					  'tasks',
231
					  'notes',
232
					  'meetings',
233
					  'calls',
234
					  'emails',
235
					  'campaigns',
236
					  'prospect_lists',
237
					  'fp_events_leads_1',
238
					  'SecurityGroups',
239
					);
240
    	$actual = $lead->get_linked_fields();
241
    	$this->assertTrue(is_array($actual));
242
        sort($expected);
243
        $actualKeys = array_keys($actual);
244
        sort($actualKeys);
245
    	$this->assertSame($expected ,$actualKeys);
246
    	
247
    }
248
249
	public function testbuild_generic_where_clause () 
250
	{
251
		
252
		$lead = new Lead();
253
		
254
		//test with empty string params
255
		$expected = "leads.last_name like '%' or leads.account_name like '%' or leads.first_name like '%' or ea.email_address like '%'";
256
		$actual = $lead->build_generic_where_clause("");
257
		$this->assertSame($expected,$actual);
258
259
		
260
		//test with valid string params
261
		$expected = "leads.last_name like '%' or leads.account_name like '%' or leads.first_name like '%' or ea.email_address like '%'";
262
		$actual = $lead->build_generic_where_clause("123");
263
		$this->assertSame($expected,$actual);
264
		
265
	}
266
267
	public function testset_notification_body()
268
	{
269
		
270
		$lead = new Lead();
271
		
272
		//test with attributes preset and verify template variables are set accordingly
273
		
274
		$lead->first_name = "firstn";
275
		$lead->last_name ="lastn";
276
		$lead->salutation = "Mr";
277
		$lead->lead_source = "Email";
278
		$lead->status = "New";
279
		$lead->description = "tes description";
280
		
281
		$result = $lead->set_notification_body(new Sugar_Smarty(), $lead);
282
		
283
		$this->assertEquals("Mr firstn lastn" ,$result->_tpl_vars['LEAD_NAME']);
284
		$this->assertEquals($lead->lead_source ,$result->_tpl_vars['LEAD_SOURCE']);
285
		$this->assertEquals($lead->status ,$result->_tpl_vars['LEAD_STATUS']);
286
		$this->assertEquals($lead->description ,$result->_tpl_vars['LEAD_DESCRIPTION']);
287
288
	}
289
290
	public function testbean_implements()
291
	{
292
		$lead = new Lead();
293
		
294
		$this->assertEquals(false, $lead->bean_implements('')); //test with blank value
295
		$this->assertEquals(false, $lead->bean_implements('test')); //test with invalid value
296
		$this->assertEquals(true, $lead->bean_implements('ACL')); //test with valid value
297
		
298
	}
299
300
	public function testlistviewACLHelper()
301
	{
302
		$lead = new Lead();
303
304
		$expected = array("MAIN"=>"a", "ACCOUNT"=>"a", "OPPORTUNITY"=>"a", "CONTACT"=>"a" );
305
		$actual = $lead->listviewACLHelper();
306
		$this->assertSame($expected,$actual);
307
	
308
	}
309
310
311
	public function testconvertCustomFieldsForm() 
312
	{
313
		$lead = new Lead();
314
		
315
		$form = "";
316
		$prefix = "";
317
		$tempBean = new Contact();
318
				
319
		$result = $lead->convertCustomFieldsForm($form, $tempBean, $prefix);
320
		
321
		$this->assertEquals(true,$result);
322
		$this->assertgreaterThanOrEqual("", $form); //no filed with source = custom_fields 
323
		
324
	}
325
326
327
	public function testget_unlinked_email_query() 	
328
	{
329
		$lead = new Lead();
330
331
		$expected = "SELECT emails.id FROM emails  JOIN (select DISTINCT email_id from emails_email_addr_rel eear\n\n	join email_addr_bean_rel eabr on eabr.bean_id ='' and eabr.bean_module = 'Leads' and\n	eabr.email_address_id = eear.email_address_id and eabr.deleted=0\n	where eear.deleted=0 and eear.email_id not in\n	(select eb.email_id from emails_beans eb where eb.bean_module ='Leads' and eb.bean_id = '')\n	) derivedemails on derivedemails.email_id = emails.id";
332
		$actual = $lead->get_unlinked_email_query();
333
		$this->assertSame($expected,$actual);
334
335
	}
336
    
337
338
    public function testget_old_related_calls()
339
    {
340
    	$lead = new Lead();
341
    	
342
    	$expected = array (
343
					  "select" => "SELECT calls.id ",
344
					  "from" => "FROM calls ",
345
					  "where" => " WHERE calls.parent_id = '' \n            AND calls.parent_type = 'Leads' AND calls.id NOT IN ( SELECT call_id FROM calls_leads ) ",
346
					  "join" => "",
347
					  "join_tables" =>  array (""),
348
					);
349
    	
350
    	$actual = $lead->get_old_related_calls();
351
    	$this->assertSame($expected,$actual);
352
    	
353
    }
354
355
356
    public function testgetActivitiesOptions() 	
357
	{
358
		$lead = new Lead();
359
		
360
		$expected = array( "copy"=>"Copy", "move"=>"Move", "donothing"=>"Do Nothing");
361
		$actual = $lead->getActivitiesOptions();
362
		$this->assertSame($expected,$actual);
363
		
364
    }
365
366
367
    public function testget_old_related_meetings()
368
    {
369
    	$lead = new Lead();
370
371
    	$expected = array (
372
					  "select" => "SELECT meetings.id ",
373
					  "from" => "FROM meetings ",
374
					  "where" => " WHERE meetings.parent_id = '' \n            AND meetings.parent_type = 'Leads' AND meetings.id NOT IN ( SELECT meeting_id FROM meetings_leads ) ",
375
					  "join" => "",
376
					  "join_tables" => array (""),
377
					);
378
    	 
379
    	$actual = $lead->get_old_related_meetings();
380
    	 $this->assertSame($expected,$actual);
381
    	
382
    }
383
384
}
385
386