CRM-13014 support userLoginFinalize() for UF classes (fix civimobile)
[civicrm-core.git] / tests / phpunit / api / v3 / PledgeTest.php
CommitLineData
6a488035
TO
1<?php
2/*
3 +--------------------------------------------------------------------+
4 | CiviCRM version 4.3 |
5 +--------------------------------------------------------------------+
6 | Copyright CiviCRM LLC (c) 2004-2013 |
7 +--------------------------------------------------------------------+
8 | This file is a part of CiviCRM. |
9 | |
10 | CiviCRM is free software; you can copy, modify, and distribute it |
11 | under the terms of the GNU Affero General Public License |
12 | Version 3, 19 November 2007 and the CiviCRM Licensing Exception. |
13 | |
14 | CiviCRM is distributed in the hope that it will be useful, but |
15 | WITHOUT ANY WARRANTY; without even the implied warranty of |
16 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
17 | See the GNU Affero General Public License for more details. |
18 | |
19 | You should have received a copy of the GNU Affero General Public |
20 | License and the CiviCRM Licensing Exception along |
21 | with this program; if not, contact CiviCRM LLC |
22 | at info[AT]civicrm[DOT]org. If you have questions about the |
23 | GNU Affero General Public License or the licensing of CiviCRM, |
24 | see the CiviCRM license FAQ at http://civicrm.org/licensing |
25 +--------------------------------------------------------------------+
26*/
27
28require_once 'CiviTest/CiviUnitTestCase.php';
29
30/**
31 * Test class for Pledge API - civicrm_pledge_*
32 *
33 * @package CiviCRM_APIv3
34 */
35class api_v3_PledgeTest extends CiviUnitTestCase {
36
37 /**
38 * Assume empty database with just civicrm_data
39 */
40 protected $_individualId;
41 protected $_pledge;
42 protected $_apiversion;
43 protected $_params;
44 protected $_entity;
45 protected $scheduled_date;
46 public $DBResetRequired = True;
47 public $_eNoticeCompliant = FALSE;
48
49 function setUp() {
50 $this->_apiversion = 3;
51 parent::setUp();
52 $this->quickCleanup(array('civicrm_pledge', 'civicrm_pledge_payment'));
53 //need to set scheduled payment in advance we are running test @ midnight & it becomes unexpectedly overdue
54 //due to timezone issues
55 $this->scheduled_date = date('Ymd', mktime(0, 0, 0, date("m"), date("d") + 2, date("y")));
56 $this->_entity = 'Pledge';
57 $this->_individualId = $this->individualCreate(NULL);
58 $this->_params = array(
59 'contact_id' => $this->_individualId,
60 'pledge_create_date' => date('Ymd'),
61 'start_date' => date('Ymd'),
62 'scheduled_date' => $this->scheduled_date,
63 'amount' => 100.00,
64 'pledge_status_id' => '2',
65 'pledge_financial_type_id' => '1',
66 'pledge_original_installment_amount' => 20,
67 'frequency_interval' => 5,
68 'frequency_unit' => 'year',
69 'frequency_day' => 15,
70 'installments' => 5,
71 'sequential' => 1,
72 'version' => $this->_apiversion,
73 );
74 }
75
76 function tearDown() {
77 $this->contactDelete($this->_individualId);
78 }
79
80 ///////////////// civicrm_pledge_get methods
81
82 /**
83 * check with complete array + custom field
84 * Note that the test is written on purpose without any
85 * variables specific to participant so it can be replicated into other entities
86 * and / or moved to the automated test suite
87 */
88 function testCreateWithCustom() {
89 $ids = $this->entityCustomGroupWithSingleFieldCreate(__FUNCTION__, __FILE__);
90
91 $params = $this->_params;
92 $params['custom_' . $ids['custom_field_id']] = "custom string";
93
94 $result = civicrm_api($this->_entity, 'create', $params);
95 $this->assertAPISuccess($result, " testCreateWithCustom ");
96 $this->assertAPISuccess($result, ' in line ' . __LINE__);
97 $getparams = array('version' => 3, 'id' => $result['id'], 'return.custom_' . $ids['custom_field_id'] => 1);
98 $check = civicrm_api($this->_entity, 'get', $getparams);
99 civicrm_api('pledge', 'delete', array('id' => $check['values'][$check['id']], 'version' => 3));
100 $this->assertEquals("custom string", $check['values'][$check['id']]['custom_' . $ids['custom_field_id']], ' in line ' . __LINE__);
101
102 $this->customFieldDelete($ids['custom_field_id']);
103 $this->customGroupDelete($ids['custom_group_id']);
104 }
105
106 /*
107 *
108 */
109 function testgetfieldspledge() {
110 $result = civicrm_api('pledge', 'getfields', array('version' => 3, 'action' => 'get'));
111 $this->assertEquals(1, $result['values']['next_pay_date']['api.return']);
112 }
113
114 function testGetPledge() {
115
116
117 $this->_pledge = civicrm_api('pledge', 'create', $this->_params);
118 $params = array(
119 'pledge_id' => $this->_pledge['id'],
120 'version' => $this->_apiversion,
121 );
122 $result = civicrm_api('pledge', 'get', $params);
123 $pledge = $result['values'][$this->_pledge['id']];
124 $this->documentMe($params, $result, __FUNCTION__, __FILE__);
125 $this->assertEquals($this->_individualId, $pledge['contact_id'], 'in line' . __LINE__);
126 $this->assertEquals($this->_pledge['id'], $pledge['pledge_id'], 'in line' . __LINE__);
127 $this->assertEquals(date('Y-m-d') . ' 00:00:00', $pledge['pledge_create_date'], 'in line' . __LINE__);
128 $this->assertEquals(100.00, $pledge['pledge_amount'], 'in line' . __LINE__);
129 $this->assertEquals('Pending', $pledge['pledge_status'], 'in line' . __LINE__);
130 $this->assertEquals(5, $pledge['pledge_frequency_interval'], 'in line' . __LINE__);
131 $this->assertEquals('year', $pledge['pledge_frequency_unit'], 'in line' . __LINE__);
132 $this->assertEquals(date('Y-m-d', strtotime($this->scheduled_date)) . ' 00:00:00', $pledge['pledge_next_pay_date'], 'in line' . __LINE__);
133 $this->assertEquals($pledge['pledge_next_pay_amount'], 20.00, 'in line' . __LINE__);
134
135 $params2 = array(
136 'pledge_id' => $this->_pledge['id'],
137 'version' => $this->_apiversion,
138 );
139 $pledge = civicrm_api('pledge', 'delete', $params2);
140 }
141 /**
142 * test 'return.pledge_financial_type' => 1 works
143 */
144 function testGetPledgewithReturn() {
145
146 $this->_pledge = civicrm_api('pledge', 'create', $this->_params);
147 $params = array(
148 'pledge_id' => $this->_pledge['id'],
149 'version' => $this->_apiversion,
150 'return.pledge_financial_type' => 1,
151 );
152 $result = civicrm_api('pledge', 'get', $params);
153 $pledge = $result['values'][$this->_pledge['id']];
154 civicrm_api('pledge', 'delete', $pledge);
155 $this->assertEquals('Donation', $pledge['pledge_financial_type']);
156 }
157 /**
158 * test 'return.pledge_contribution_type' => 1 works
159 * This is for legacy compatibility
160 */
161 function testGetPledgewithReturnLegacy() {
162
163 $this->_pledge = civicrm_api('pledge', 'create', $this->_params);
164 $params = array(
165 'pledge_id' => $this->_pledge['id'],
166 'version' => $this->_apiversion,
167 'return.pledge_financial_type' => 1,
168 );
169 $result = civicrm_api('pledge', 'get', $params);
170 $pledge = $result['values'][$this->_pledge['id']];
171 civicrm_api('pledge', 'delete', $pledge);
172 $this->assertEquals('Donation', $pledge['pledge_financial_type']);
173 }
174
175 function testPledgeGetReturnFilters() {
176 $oldPledge = civicrm_api('pledge', 'create', $this->_params);
177
178 $overdueParams = array(
179 'scheduled_date' => 'first saturday of march last year',
180 'start_date' => 'first saturday of march last year',
181 );
182 $oldPledge = civicrm_api('pledge', 'create', array_merge($this->_params, $overdueParams));
183
184 $pledgeGetParams = array('version' => 3);
185 $allPledges = civicrm_api('pledge', 'getcount', $pledgeGetParams);
186
187 $this->assertEquals(2, $allPledges, 'Check we have 2 pledges to place with in line ' . __LINE__);
188 $pledgeGetParams['pledge_start_date_high'] = date('YmdHis', strtotime('2 days ago'));
189 $earlyPledge = civicrm_api('pledge', 'get', $pledgeGetParams);
190 $this->documentMe($pledgeGetParams, $earlyPledge, __FUNCTION__, __FILE__, "demonstrates high date filter", "GetFilterHighDate");
191 $this->assertEquals(1, $earlyPledge['count'], ' check only one returned with start date filter in line ' . __LINE__);
192 $this->assertEquals($oldPledge['id'], $earlyPledge['id'], ' check correct pledge returned ' . __LINE__);
193 }
194 /*
195 * create 2 pledges - see if we can get by status id
196 */
197 function testGetOverduePledge() {
198 $overdueParams = array(
199 'scheduled_date' => 'first saturday of march last year',
200 'start_date' => 'first saturday of march last year',
201 );
202 $this->_pledge = civicrm_api('pledge', 'create', array_merge($this->_params, $overdueParams));
203 $params = array(
204 'version' => $this->_apiversion,
205 'pledge_status_id' => '6',
206 );
207 $result = civicrm_api('pledge', 'get', $params);
208 $emptyResult = civicrm_api('pledge', 'get', array(
209 'version' => $this->_apiversion,
210 'pledge_status_id' => '1',
211 ));
212 $pledge = $result['values'][$this->_pledge['id']];
213 civicrm_api('pledge', 'delete', $pledge);
214 $this->assertEquals(1, $result['count']);
215 $this->assertEquals(0, $emptyResult['count']);
216 }
217
218
219 /*
220 * create 2 pledges - see if we can get by status id
221 */
222 function testSortParamPledge() {
223 $pledge1 = civicrm_api('pledge', 'create', $this->_params);
224 $overdueParams = array(
225 'scheduled_date' => 'first saturday of march last year',
226 'start_date' => 'first saturday of march last year',
227 'create_date' => 'first saturday of march last year',
228 );
229 $pledge2 = civicrm_api('pledge', 'create', array_merge($this->_params, $overdueParams));
230 $params = array(
231 'version' => $this->_apiversion,
232 'pledge_is_test' => 0,
233 'rowCount' => 1,
234 );
235 $result = civicrm_api('pledge', 'get', $params);
236
237 $resultSortedAsc = civicrm_api('pledge', 'get', array(
238 'version' => $this->_apiversion,
239 'rowCount' => 1,
240 'sort' => 'start_date ASC',
241 ));
242 $resultSortedDesc = civicrm_api('pledge', 'get', array(
243 'version' => $this->_apiversion,
244 'rowCount' => 1,
245 'sort' => 'start_date DESC',
246 ));
247
248 $this->assertEquals($pledge1['id'], $result['id'], 'pledge get gets first created pledge in line ' . __LINE__);
249 $this->assertEquals($pledge2['id'], $resultSortedAsc['id'], 'Ascending pledge sort works');
250 $this->assertEquals($pledge1['id'], $resultSortedDesc['id'], 'Decending pledge sort works');
251 civicrm_api('pledge', 'delete', array('version' => 3, 'id' => $pledge1['id']));
252 civicrm_api('pledge', 'delete', array('version' => 3, 'id' => $pledge2['id']));
253 }
254
255 function testCreatePledge() {
256
257 $result = civicrm_api('pledge', 'create', $this->_params);
258 $this->documentMe($this->_params, $result, __FUNCTION__, __FILE__);
259 $this->assertAPISuccess($result, "in line " . __LINE__);
260 $this->assertEquals($result['values'][0]['amount'], 100.00, 'In line ' . __LINE__);
261 $this->assertEquals($result['values'][0]['installments'], 5, 'In line ' . __LINE__);
262 $this->assertEquals($result['values'][0]['frequency_unit'], 'year', 'In line ' . __LINE__);
263 $this->assertEquals($result['values'][0]['frequency_interval'], 5, 'In line ' . __LINE__);
264 $this->assertEquals($result['values'][0]['frequency_day'], 15, 'In line ' . __LINE__);
265 $this->assertEquals($result['values'][0]['original_installment_amount'], 20, 'In line ' . __LINE__);
266 $this->assertEquals($result['values'][0]['status_id'], 2, 'In line ' . __LINE__);
267 $this->assertEquals($result['values'][0]['create_date'], date('Ymd') . '000000', 'In line ' . __LINE__);
268 $this->assertEquals($result['values'][0]['start_date'], date('Ymd') . '000000', 'In line ' . __LINE__);
269 $this->assertEquals($result['is_error'], 0, 'In line ' . __LINE__);
270 $payments = civicrm_api('PledgePayment', 'Get', array('version' => 3, 'pledge_id' => $result['id'], 'sequential' => 1));
271 $this->assertAPISuccess($payments, 'In line ' . __LINE__);
272 $this->assertEquals($payments['count'], 5, 'In line ' . __LINE__);
273 require_once 'CRM/Utils/Date.php';
274 $shouldBeDate = CRM_Utils_Date::format(CRM_Utils_Date::intervalAdd('year', 5 * 4, $this->scheduled_date), "-");
275 $this->assertEquals(substr($shouldBeDate, 0, 10), substr($payments['values'][4]['scheduled_date'], 0, 10), 'In line ' . __LINE__);
276
277 $pledgeID = array('id' => $result['id'], 'version' => 3);
278 $pledge = civicrm_api('pledge', 'delete', $pledgeID);
279 }
280
281 /*
282 * Test that pledge with weekly schedule calculates dates correctly
283 */
284 function testCreatePledgeWeeklySchedule() {
285 $params = array(
286 'scheduled_date' => '20110510',
287 'frequency_unit' => 'week',
288 'frequency_day' => 3,
289 'frequency_interval' => 2,
290 );
291 $params = array_merge($this->_params, $params);
292 $pledge = civicrm_api('Pledge', 'Create', $params);
293 //ensure that correct number of payments created & last payment has the right date
294 $payments = civicrm_api('PledgePayment', 'Get', array(
295 'version' => 3,
296 'pledge_id' => $pledge['id'],
297 'sequential' => 1));
298 $this->assertEquals($payments['is_error'], 0, 'In line ' . __LINE__);
299 $this->assertEquals($payments['count'], 5, 'In line ' . __LINE__);
300 require_once 'CRM/Utils/Date.php';
301 $this->assertEquals('2011-07-06 00:00:00', $payments['values'][4]['scheduled_date'], 'In line ' . __LINE__);
302
303 $pledgeID = array('pledge_id' => $pledge['id'], 'version' => 3);
304 $pledge = civicrm_api('pledge', 'delete', $pledgeID);
305 }
306 /*
307 * Test that pledge with weekly schedule calculates dates correctly
308 */
309 function testCreatePledgeMontlySchedule() {
310 $params = array(
311 'scheduled_date' => '20110510',
312 'frequency_unit' => 'Month',
313 'frequency_day' => 3,
314 'frequency_interval' => 2,
315 );
316 $params = array_merge($this->_params, $params);
317 $apiResult = civicrm_api('pledge', 'create', $params);
318 $this->assertAPISuccess($apiResult);
319 }
320
321
322 /*
323 * Test creation of pledge with only one payment.
324 *
325 * Pledge status id left empty as it is not a required field
326 * http://issues.civicrm.org/jira/browse/CRM-8551
327 *
328 */
329 function testCreatePledgeSinglePayment() {
330 $params = array(
331 'scheduled_date' => '20110510',
332 'frequency_unit' => 'week',
333 'frequency_day' => 3,
334 'frequency_interval' => 2,
335 'installments' => 1,
336 );
337
338 $params = array_merge($this->_params, $params);
339 unset($params['pledge_status_id']);
340 $pledge = civicrm_api('Pledge', 'Create', $params);
341 //ensure that correct number of payments created & last payment has the right date
342 $payments = civicrm_api('PledgePayment', 'Get', array(
343 'version' => 3,
344 'pledge_id' => $pledge['id'],
345 'sequential' => 1
346 ));
347 $this->assertEquals($payments['is_error'], 0, 'In line ' . __LINE__);
348 $this->assertEquals(1, $payments['count'], 'In line ' . __LINE__);
349 $this->assertEquals(2, $payments['values'][0]['status_id'], 'In line ' . __LINE__);
350 $pledgeID = array('id' => $pledge['id'], 'version' => 3);
351 $pledge = civicrm_api('pledge', 'delete', $pledgeID);
352 }
353
354 /*
355 * test that using original_installment_amount rather than pledge_original_installment_amount works
356 * Pledge field behaviour is a bit random & so pledge has come to try to handle both unique & non -unique fields
357 */
358 function testCreatePledgeWithNonUnique() {
359 $params = $this->_params;
360 $params['original_installment_amount'] = $params['pledge_original_installment_amount'];
361
362 unset($params['pledge_original_installment_amount']);
363 $result = civicrm_api('pledge', 'create', $params);
364 $pledgeDetails = civicrm_api('Pledge', 'Get', array('version' => 3, 'id' => $result['id'], 'sequential' => 1));
365 $pledge = $pledgeDetails['values'][0];
366 $this->assertEquals(0, $result['is_error'], "in line " . __LINE__);
367 $this->assertEquals(100.00, $pledge['pledge_amount'], 'In line ' . __LINE__);
368 $this->assertEquals('year', $pledge['pledge_frequency_unit'], 'In line ' . __LINE__);
369 $this->assertEquals(5, $pledge['pledge_frequency_interval'], 'In line ' . __LINE__);
370 $this->assertEquals(20, $pledge['pledge_next_pay_amount'], 'In line ' . __LINE__);
371
372 $pledgeID = array('id' => $result['id'], 'version' => 3);
373 $pledge = civicrm_api('pledge', 'delete', $pledgeID);
374 }
375
376 function testCreateCancelPledge() {
377
378
379 $result = civicrm_api('pledge', 'create', $this->_params);
380 $this->assertEquals(0, $result['is_error'], "in line " . __LINE__);
381 $this->assertEquals(2, $result['values'][0]['status_id'], "in line " . __LINE__);
382 $cancelparams = array('sequential' => 1, 'version' => $this->_apiversion, 'id' => $result['id'], 'pledge_status_id' => 3);
383 $result = civicrm_api('pledge', 'create', $cancelparams);
384 $this->assertEquals(3, $result['values'][0]['status_id'], "in line " . __LINE__);
385 $pledgeID = array('id' => $result['id'], 'version' => 3);
386 $pledge = civicrm_api('pledge', 'delete', $pledgeID);
387 }
388
389 /*
390 * test that status is set to pending
391 */
392 function testCreatePledgeNoStatus() {
393
394 $params = $this->_params;
395 unset($params['status_id']);
396 unset($params['pledge_status_id']);
397 $result = civicrm_api('pledge', 'create', $params);
398 $this->assertAPISuccess($result, "in line " . __LINE__);
399 $this->assertEquals(2, $result['values'][0]['status_id'], "in line " . __LINE__);
400 $pledgeID = array('pledge_id' => $result['id'], 'version' => 3);
401 $pledge = civicrm_api('pledge', 'delete', $pledgeID);
402 }
403
404 //To Update Pledge
405 function testCreateUpdatePledge() {
406
407 // we test 'sequential' param here too
408 $pledgeID = $this->pledgeCreate($this->_individualId);
409 $old_params = array(
410 'id' => $pledgeID,
411 'sequential' => 1,
412 'version' => $this->_apiversion,
413 );
414 $original = civicrm_api('pledge', 'get', $old_params);
415 //Make sure it came back
416 $this->assertEquals($original['values'][0]['pledge_id'], $pledgeID, 'In line ' . __LINE__);
417 //set up list of old params, verify
418 $old_contact_id = $original['values'][0]['contact_id'];
419 $old_frequency_unit = $original['values'][0]['pledge_frequency_unit'];
420 $old_frequency_interval = $original['values'][0]['pledge_frequency_interval'];
421 $old_status_id = $original['values'][0]['pledge_status'];
422
423
424 //check against values in CiviUnitTestCase::createPledge()
425 $this->assertEquals($old_contact_id, $this->_individualId, 'In line ' . __LINE__);
426 $this->assertEquals($old_frequency_unit, 'year', 'In line ' . __LINE__);
427 $this->assertEquals($old_frequency_interval, 5, 'In line ' . __LINE__);
428 $this->assertEquals($old_status_id, 'Pending', 'In line ' . __LINE__);
429 $params = array(
430 'id' => $pledgeID,
431 'contact_id' => $this->_individualId,
432 'pledge_status_id' => 3,
433 'amount' => 100,
434 'financial_type_id' => 1,
435 'start_date' => date('Ymd'),
436 'installments' => 10,
437 'version' => $this->_apiversion,
438 );
439
440 $pledge = civicrm_api('pledge', 'create', $params);
441 $this->assertEquals($pledge['is_error'], 0);
442 $new_params = array(
443 'id' => $pledge['id'],
444 'version' => $this->_apiversion,
445 );
446 $pledge = civicrm_api('pledge', 'get', $new_params);
447 $this->assertEquals($pledge['values'][$pledgeID]['contact_id'], $this->_individualId, 'In line ' . __LINE__);
448 $this->assertEquals($pledge['values'][$pledgeID]['pledge_status'], 'Cancelled', 'In line ' . __LINE__);
449 $pledge = civicrm_api('pledge', 'delete', $new_params);
450 $this->assertEquals($pledge['is_error'], 0, 'In line ' . __LINE__);
451 }
452/**
453 * Here we ensure we are maintaining our 'contract' & supporting previously working syntax
454 * ie contribution_type_id
455 *
456 */
457 function testCreateUpdatePledgeLegacy() {
458
459 // we test 'sequential' param here too
460 $pledgeID = $this->pledgeCreate($this->_individualId);
461 $old_params = array(
462 'id' => $pledgeID,
463 'sequential' => 1,
464 'version' => $this->_apiversion,
465 );
466 $original = civicrm_api('pledge', 'get', $old_params);
467 //Make sure it came back
468 $this->assertEquals($original['values'][0]['pledge_id'], $pledgeID, 'In line ' . __LINE__);
469 //set up list of old params, verify
470 $old_contact_id = $original['values'][0]['contact_id'];
471 $old_frequency_unit = $original['values'][0]['pledge_frequency_unit'];
472 $old_frequency_interval = $original['values'][0]['pledge_frequency_interval'];
473 $old_status_id = $original['values'][0]['pledge_status'];
474
475
476 //check against values in CiviUnitTestCase::createPledge()
477 $this->assertEquals($old_contact_id, $this->_individualId, 'In line ' . __LINE__);
478 $this->assertEquals($old_frequency_unit, 'year', 'In line ' . __LINE__);
479 $this->assertEquals($old_frequency_interval, 5, 'In line ' . __LINE__);
480 $this->assertEquals($old_status_id, 'Pending', 'In line ' . __LINE__);
481 $params = array(
482 'id' => $pledgeID,
483 'contact_id' => $this->_individualId,
484 'pledge_status_id' => 3,
485 'amount' => 100,
486 'contribution_type_id' => 1,
487 'start_date' => date('Ymd'),
488 'installments' => 10,
489 'version' => $this->_apiversion,
490 );
491
492 $pledge = civicrm_api('pledge', 'create', $params);
493 $this->assertEquals($pledge['is_error'], 0);
494 $new_params = array(
495 'id' => $pledge['id'],
496 'version' => $this->_apiversion,
497 );
498 $pledge = civicrm_api('pledge', 'get', $new_params);
499 $this->assertEquals($pledge['values'][$pledgeID]['contact_id'], $this->_individualId, 'In line ' . __LINE__);
500 $this->assertEquals($pledge['values'][$pledgeID]['pledge_status'], 'Cancelled', 'In line ' . __LINE__);
501 $pledge = civicrm_api('pledge', 'delete', $new_params);
502 $this->assertEquals($pledge['is_error'], 0, 'In line ' . __LINE__);
503 }
504
505 ///////////////// civicrm_pledge_delete methods
506 function testDeleteEmptyParamsPledge() {
507
508 $params = array('version' => $this->_apiversion);
509 $pledge = civicrm_api('pledge', 'delete', $params);
510 $this->assertEquals($pledge['is_error'], 1);
511 $this->assertEquals($pledge['error_message'], 'Mandatory key(s) missing from params array: id');
512 }
513
514 function testDeleteParamsNotArrayPledge() {
515 $params = 'pledge_id= 1';
516 $pledge = civicrm_api('pledge', 'delete', $params);
517 $this->assertEquals($pledge['is_error'], 1);
518 $this->assertEquals($pledge['error_message'], 'Input variable `params` is not an array');
519 }
520
521 function testDeleteWrongParamPledge() {
522 $params = array(
523 'pledge_source' => 'SSF',
524 'version' => $this->_apiversion,
525 );
526 $pledge = civicrm_api('pledge', 'delete', $params);
527 $this->assertEquals($pledge['is_error'], 1);
528 $this->assertEquals($pledge['error_message'], 'Mandatory key(s) missing from params array: id');
529 }
530
531 /*
532 * legacy support for pledge_id
533 */
534 function testDeletePledge() {
535
536 $pledgeID = $this->pledgeCreate($this->_individualId);
537 $params = array(
538 'pledge_id' => $pledgeID,
539 'version' => $this->_apiversion,
540 );
541 $result = civicrm_api('pledge', 'delete', $params);
542 $this->documentMe($params, $result, __FUNCTION__, __FILE__);
543 $this->assertEquals($result['is_error'], 0);
544 }
545
546 /*
547 * std is to accept id
548 */
549 function testDeletePledgeUseID() {
550
551 $pledgeID = $this->pledgeCreate($this->_individualId);
552 $params = array(
553 'id' => $pledgeID,
554 'version' => $this->_apiversion,
555 );
556 $result = civicrm_api('pledge', 'delete', $params);
557 $this->documentMe($params, $result, __FUNCTION__, __FILE__);
558 $this->assertEquals($result['is_error'], 0);
559 }
560 /*
561 * test to make sure empty get returns nothing
562 * Note that the function gives incorrect results if no pledges exist as it does a
563 * contact search instead - test only checks that the get finds the one existing
564 */
565 function testGetEmpty() {
566 $result = civicrm_api('pledge', 'create', $this->_params);
567 $result = civicrm_api('pledge', 'get', array('version' => 3));
568 $this->assertAPISuccess($result, "This test is failing because it's acting like a contact get when no params set. Not sure the fix");
569 $this->assertEquals(1, $result['count'], 'in line ' . __LINE__);
570 $pledgeID = array('id' => $result['id'], 'version' => 3);
571 $pledge = civicrm_api('pledge', 'delete', $pledgeID);
572 }
573}
574