Add in fix for possible multiple option values found
[civicrm-core.git] / tests / phpunit / CRM / Core / PseudoConstantTest.php
CommitLineData
887a4028
A
1<?php
2/*
3 +--------------------------------------------------------------------+
81621fee 4 | CiviCRM version 4.7 |
887a4028 5 +--------------------------------------------------------------------+
fa938177 6 | Copyright CiviCRM LLC (c) 2004-2016 |
887a4028
A
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 +--------------------------------------------------------------------+
d25dd0ee 26 */
887a4028 27
887a4028 28/**
2158332a 29 * Tests for pseudoconstant retrieval
acb109b7 30 * @group headless
887a4028
A
31 */
32class CRM_Core_PseudoConstantTest extends CiviUnitTestCase {
887a4028 33
00be9182 34 public function setUp() {
887a4028 35 parent::setUp();
68fd48d9
CW
36
37 $this->loadAllFixtures();
38
39 CRM_Core_BAO_ConfigSetting::enableComponent('CiviCase');
874bbfa9 40 CRM_Core_BAO_ConfigSetting::enableComponent('CiviCampaign');
887a4028
A
41 }
42
cd43c5e3
AS
43 /**
44 * Assure CRM_Core_PseudoConstant::get() is working properly for a range of
45 * DAO fields having a <pseudoconstant> tag in the XML schema.
46 */
00be9182 47 public function testOptionValues() {
bd44e0df 48
29494eef 49 // Create a custom field group for testing.
bd44e0df 50 $custom_group_name = md5(microtime());
cd43c5e3 51 $api_params = array(
bd44e0df
AS
52 'title' => $custom_group_name,
53 'extends' => 'Individual',
54 'is_active' => TRUE,
cd43c5e3 55 );
874bbfa9 56 $result = civicrm_api3('customGroup', 'create', $api_params);
cd43c5e3 57
deceed83
CW
58 // Add a custom field to the above field group.
59 $api_params = array(
deceed83
CW
60 'debug' => 1,
61 'custom_group_id' => $result['id'],
62 'label' => $custom_group_name,
63 'html_type' => 'Select',
64 'data_type' => 'String',
65 'is_active' => TRUE,
92915c55
TO
66 'option_values' => array(
67 array(
68 'label' => 'Foo',
69 'value' => 'foo',
70 'is_active' => 1,
71 'weight' => 0,
28a04ea9 72 ),
92915c55 73 ),
deceed83 74 );
874bbfa9 75 $result = civicrm_api3('custom_field', 'create', $api_params);
deceed83
CW
76 $customFieldId = $result['id'];
77
78 // Create a Contact Group for testing.
29494eef
AS
79 $group_name = md5(microtime());
80 $api_params = array(
29494eef
AS
81 'title' => $group_name,
82 'is_active' => TRUE,
83 );
874bbfa9 84 $result = civicrm_api3('group', 'create', $api_params);
6d68a4cb
CW
85
86 // Create a PaymentProcessor for testing.
87 $pp_name = md5(microtime());
88 $api_params = array(
6d68a4cb 89 'domain_id' => 1,
97502bac 90 'payment_processor_type_id' => 'Dummy',
6d68a4cb
CW
91 'name' => $pp_name,
92 'user_name' => $pp_name,
93 'class_name' => 'Payment_Dummy',
94 'url_site' => 'https://test.com/',
95 'url_recur' => 'https://test.com/',
96 'is_active' => 1,
97 );
874bbfa9
CW
98 $result = civicrm_api3('payment_processor', 'create', $api_params);
99
100 // Create a Campaign for testing.
101 $campaign_name = md5(microtime());
102 $api_params = array(
103 'title' => $campaign_name,
104 'is_active' => TRUE,
105 'status_id' => 2,
106 );
107 $result = civicrm_api3('campaign', 'create', $api_params);
108
109 // Create a membership type for testing.
110 $membership_type = md5(microtime());
111 $api_params = array(
112 'name' => $membership_type,
113 'is_active' => TRUE,
114 'financial_type_id' => 1,
115 'domain_id' => 1,
116 'member_of_contact_id' => 1,
117 'duration_unit' => 'day',
118 'duration_interval' => 1,
119 );
120 $result = civicrm_api3('membership_type', 'create', $api_params);
48b420d7 121
874bbfa9
CW
122 // Create a contribution page for testing.
123 $contribution_page = md5(microtime());
124 $api_params = array(
125 'title' => $contribution_page,
126 'is_active' => TRUE,
127 'financial_type_id' => 1,
128 );
129 $result = civicrm_api3('contribution_page', 'create', $api_params);
29494eef 130
cd43c5e3 131 /**
091fe2a8 132 * daoName/field combinations to test
cd43c5e3
AS
133 * Format: array[DAO Name] = $properties, where properties is an array whose
134 * named members can be:
091fe2a8
CW
135 * - fieldName: the SQL column name within the DAO table.
136 * - sample: Any one value which is expected in the list of option values.
137 * - exclude: Any one value which should not be in the list.
874bbfa9 138 * - max: integer (default = 20) maximum number of option values expected.
091fe2a8 139 */
398f49ab 140 $fields = array(
874bbfa9
CW
141 'CRM_ACL_DAO_ACL' => array(
142 array(
143 'fieldName' => 'operation',
144 'sample' => 'View',
145 ),
146 ),
147 'CRM_Contact_DAO_Group' => array(
148 array(
149 'fieldName' => 'visibility',
150 'sample' => 'Public Pages',
151 ),
152 ),
29494eef
AS
153 'CRM_Contact_DAO_GroupContact' => array(
154 array(
155 'fieldName' => 'group_id',
156 'sample' => $group_name,
157 ),
874bbfa9
CW
158 array(
159 'fieldName' => 'status',
160 'sample' => 'Added',
161 ),
29494eef
AS
162 ),
163 'CRM_Contact_DAO_GroupContactCache' => array(
164 array(
165 'fieldName' => 'group_id',
166 'sample' => $group_name,
167 ),
168 ),
169 'CRM_Contact_DAO_GroupOrganization' => array(
170 array(
171 'fieldName' => 'group_id',
172 'sample' => $group_name,
173 ),
174 ),
175 'CRM_Contact_DAO_SubscriptionHistory' => array(
176 array(
177 'fieldName' => 'group_id',
178 'sample' => $group_name,
179 ),
874bbfa9
CW
180 array(
181 'fieldName' => 'method',
182 'sample' => 'Web',
183 ),
184 array(
185 'fieldName' => 'status',
186 'sample' => 'Added',
187 ),
188 ),
189 'CRM_Core_DAO_Cache' => array(
190 array(
191 'fieldName' => 'component_id',
192 'sample' => 'CiviMail',
193 ),
194 ),
195 'CRM_Contact_DAO_ACLContactCache' => array(
196 array(
197 'fieldName' => 'operation',
198 'sample' => 'All',
199 ),
200 ),
201 'CRM_Core_DAO_Setting' => array(
202 array(
203 'fieldName' => 'component_id',
204 'sample' => 'CiviMail',
205 ),
29494eef
AS
206 ),
207 'CRM_Core_DAO_ActionSchedule' => array(
208 array(
209 'fieldName' => 'group_id',
210 'sample' => $group_name,
211 ),
874bbfa9
CW
212 array(
213 'fieldName' => 'start_action_unit',
214 'sample' => 'hour',
215 ),
216 array(
217 'fieldName' => 'repetition_frequency_unit',
218 'sample' => 'hour',
219 ),
220 array(
221 'fieldName' => 'end_frequency_unit',
222 'sample' => 'hour',
223 ),
224 array(
225 'fieldName' => 'mode',
226 'sample' => 'Email',
227 ),
228 ),
229 'CRM_Dedupe_DAO_RuleGroup' => array(
230 array(
231 'fieldName' => 'contact_type',
232 'sample' => 'Individual',
233 ),
234 array(
235 'fieldName' => 'used',
236 'sample' => 'Unsupervised',
237 ),
29494eef 238 ),
4080e473
AS
239 'CRM_Activity_DAO_Activity' => array(
240 array(
241 'fieldName' => 'activity_type_id',
a38a89fc 242 'sample' => 'Email',
68fd48d9 243 'max' => 100,
4080e473
AS
244 ),
245 array(
246 'fieldName' => 'status_id',
247 'sample' => 'Scheduled',
248 ),
6d68a4cb
CW
249 array(
250 'fieldName' => 'priority_id',
251 'sample' => 'Urgent',
252 ),
3f3a3ba0
CW
253 array(
254 'fieldName' => 'engagement_level',
255 'sample' => '1',
256 ),
257 array(
258 'fieldName' => 'medium_id',
259 'sample' => 'Phone',
260 ),
874bbfa9
CW
261 array(
262 'fieldName' => 'campaign_id',
263 'sample' => $campaign_name,
264 ),
3f3a3ba0
CW
265 ),
266 'CRM_Campaign_DAO_Campaign' => array(
874bbfa9
CW
267 array(
268 'fieldName' => 'campaign_type_id',
269 'sample' => 'Constituent Engagement',
270 'max' => 50,
271 ),
3f3a3ba0
CW
272 array(
273 'fieldName' => 'status_id',
274 'sample' => 'Completed',
275 'max' => 50,
276 ),
4080e473
AS
277 ),
278 'CRM_Campaign_DAO_Survey' => array(
874bbfa9
CW
279 array(
280 'fieldName' => 'campaign_id',
281 'sample' => $campaign_name,
282 ),
4080e473
AS
283 array(
284 'fieldName' => 'activity_type_id',
a38a89fc 285 'sample' => 'Phone Call',
68fd48d9 286 'max' => 100,
4080e473
AS
287 ),
288 ),
874bbfa9
CW
289 'CRM_Campaign_DAO_CampaignGroup' => array(
290 array(
291 'fieldName' => 'campaign_id',
292 'sample' => $campaign_name,
293 ),
294 array(
295 'fieldName' => 'group_type',
296 'sample' => 'Include',
297 ),
298 ),
299 'CRM_Contact_DAO_RelationshipType' => array(
300 array(
301 'fieldName' => 'contact_type_a',
302 'sample' => 'Individual',
303 ),
304 array(
305 'fieldName' => 'contact_type_b',
306 'sample' => 'Organization',
307 ),
308 ),
4080e473 309 'CRM_Event_DAO_ParticipantStatusType' => array(
874bbfa9
CW
310 array(
311 'fieldName' => 'class',
312 'sample' => 'Waiting',
313 ),
4080e473
AS
314 array(
315 'fieldName' => 'visibility_id',
316 'sample' => 'Public',
317 ),
318 ),
874bbfa9 319 'CRM_Price_DAO_LineItem' => array(
4080e473 320 array(
874bbfa9
CW
321 'fieldName' => 'financial_type_id',
322 'sample' => 'Donation',
4080e473
AS
323 ),
324 ),
9da8dc8c 325 'CRM_Price_DAO_PriceField' => array(
874bbfa9
CW
326 array(
327 'fieldName' => 'html_type',
328 'sample' => 'Select',
329 ),
4080e473
AS
330 array(
331 'fieldName' => 'visibility_id',
332 'sample' => 'Public',
333 ),
334 ),
874bbfa9
CW
335 'CRM_Price_DAO_PriceFieldValue' => array(
336 array(
337 'fieldName' => 'financial_type_id',
338 'sample' => 'Donation',
339 ),
340 ),
341 'CRM_Price_DAO_PriceSet' => array(
342 array(
343 'fieldName' => 'domain_id',
344 'sample' => 'Default Domain Name',
345 ),
346 array(
347 'fieldName' => 'extends',
348 'sample' => 'CiviEvent',
349 ),
350 array(
351 'fieldName' => 'financial_type_id',
352 'sample' => 'Donation',
353 ),
354 ),
7611ae71
AS
355 'CRM_Financial_DAO_EntityFinancialAccount' => array(
356 array(
357 'fieldName' => 'financial_account_id',
358 'sample' => 'Member Dues',
7611ae71
AS
359 ),
360 array(
361 'fieldName' => 'account_relationship',
362 'sample' => 'Income Account is',
363 ),
364 ),
365 'CRM_Financial_DAO_FinancialItem' => array(
366 array(
367 'fieldName' => 'status_id',
368 'sample' => 'Partially paid',
369 ),
370 array(
371 'fieldName' => 'financial_account_id',
372 'sample' => 'Accounts Receivable',
7611ae71 373 ),
6d68a4cb
CW
374 array(
375 'fieldName' => 'currency',
a38a89fc 376 'sample' => array('USD' => 'US Dollar'),
6d68a4cb
CW
377 'max' => 200,
378 ),
7611ae71
AS
379 ),
380 'CRM_Financial_DAO_FinancialTrxn' => array(
381 array(
382 'fieldName' => 'from_financial_account_id',
383 'sample' => 'Accounts Receivable',
7611ae71
AS
384 ),
385 array(
386 'fieldName' => 'to_financial_account_id',
387 'sample' => 'Accounts Receivable',
7611ae71 388 ),
6d68a4cb
CW
389 array(
390 'fieldName' => 'currency',
a38a89fc 391 'sample' => array('USD' => 'US Dollar'),
6d68a4cb
CW
392 'max' => 200,
393 ),
874bbfa9
CW
394 array(
395 'fieldName' => 'payment_instrument_id',
396 'sample' => 'Check',
397 ),
7611ae71
AS
398 ),
399 'CRM_Financial_DAO_FinancialAccount' => array(
400 array(
401 'fieldName' => 'financial_account_type_id',
402 'sample' => 'Cost of Sales',
403 ),
404 ),
874bbfa9
CW
405 'CRM_Financial_DAO_PaymentProcessor' => array(
406 array(
407 'fieldName' => 'domain_id',
408 'sample' => 'Default Domain Name',
409 ),
410 ),
411 'CRM_Financial_BAO_PaymentProcessorType' => array(
412 array(
413 'fieldName' => 'billing_mode',
414 'sample' => 'form',
415 ),
416 ),
bd44e0df
AS
417 'CRM_Core_DAO_UFField' => array(
418 array(
419 'fieldName' => 'uf_group_id',
420 'sample' => 'Name and Address',
874bbfa9
CW
421 ),
422 array(
423 'fieldName' => 'visibility',
cd5e5125 424 'sample' => 'Expose Publicly',
bd44e0df
AS
425 ),
426 ),
427 'CRM_Core_DAO_UFJoin' => array(
428 array(
429 'fieldName' => 'uf_group_id',
430 'sample' => 'Name and Address',
874bbfa9
CW
431 ),
432 ),
433 'CRM_Core_DAO_UFMatch' => array(
434 array(
435 'fieldName' => 'domain_id',
436 'sample' => 'Default Domain Name',
437 ),
438 ),
439 'CRM_Core_DAO_Job' => array(
440 array(
441 'fieldName' => 'domain_id',
442 'sample' => 'Default Domain Name',
443 ),
444 array(
445 'fieldName' => 'run_frequency',
446 'sample' => 'Daily',
447 ),
448 ),
449 'CRM_Core_DAO_JobLog' => array(
450 array(
451 'fieldName' => 'domain_id',
452 'sample' => 'Default Domain Name',
bd44e0df
AS
453 ),
454 ),
455 'CRM_Contribute_DAO_ContributionSoft' => array(
456 array(
457 'fieldName' => 'currency',
a38a89fc 458 'sample' => array('USD' => 'US Dollar'),
bd44e0df
AS
459 'max' => 200,
460 ),
d9136461 461 array(
462 'fieldName' => 'soft_credit_type_id',
463 'sample' => 'In Honor of',
464 ),
bd44e0df 465 ),
bd44e0df
AS
466 'CRM_Contribute_DAO_Product' => array(
467 array(
468 'fieldName' => 'currency',
a38a89fc 469 'sample' => array('USD' => 'US Dollar'),
bd44e0df
AS
470 'max' => 200,
471 ),
874bbfa9
CW
472 array(
473 'fieldName' => 'financial_type_id',
474 'sample' => 'Donation',
475 ),
476 array(
477 'fieldName' => 'period_type',
478 'sample' => 'Rolling',
479 ),
480 array(
481 'fieldName' => 'duration_unit',
482 'sample' => 'Day',
483 ),
484 array(
485 'fieldName' => 'frequency_unit',
486 'sample' => 'Day',
487 ),
488 ),
489 'CRM_Contribute_DAO_ContributionProduct' => array(
490 array(
491 'fieldName' => 'financial_type_id',
492 'sample' => 'Donation',
493 ),
bd44e0df 494 ),
bd44e0df
AS
495 'CRM_Contribute_DAO_ContributionRecur' => array(
496 array(
497 'fieldName' => 'currency',
a38a89fc 498 'sample' => array('USD' => 'US Dollar'),
bd44e0df
AS
499 'max' => 200,
500 ),
874bbfa9
CW
501 array(
502 'fieldName' => 'frequency_unit',
503 'sample' => 'month',
504 ),
505 array(
506 'fieldName' => 'contribution_status_id',
507 'sample' => 'Completed',
508 ),
509 array(
510 'fieldName' => 'financial_type_id',
511 'sample' => 'Donation',
512 ),
513 array(
514 'fieldName' => 'payment_instrument_id',
515 'sample' => 'Check',
516 ),
517 array(
518 'fieldName' => 'campaign_id',
519 'sample' => $campaign_name,
520 ),
bd44e0df 521 ),
92915c55 522 'CRM_Pledge_DAO_PledgePayment' => array(
bd44e0df
AS
523 array(
524 'fieldName' => 'currency',
a38a89fc 525 'sample' => array('USD' => 'US Dollar'),
bd44e0df
AS
526 'max' => 200,
527 ),
528 ),
529 'CRM_Pledge_DAO_Pledge' => array(
530 array(
531 'fieldName' => 'currency',
a38a89fc 532 'sample' => array('USD' => 'US Dollar'),
bd44e0df
AS
533 'max' => 200,
534 ),
874bbfa9
CW
535 array(
536 'fieldName' => 'financial_type_id',
537 'sample' => 'Donation',
538 ),
539 array(
540 'fieldName' => 'frequency_unit',
541 'sample' => 'month',
542 ),
543 array(
544 'fieldName' => 'campaign_id',
545 'sample' => $campaign_name,
546 ),
bd44e0df
AS
547 ),
548 'CRM_PCP_DAO_PCP' => array(
549 array(
550 'fieldName' => 'currency',
a38a89fc 551 'sample' => array('USD' => 'US Dollar'),
bd44e0df
AS
552 'max' => 200,
553 ),
6d68a4cb
CW
554 array(
555 'fieldName' => 'status_id',
556 'sample' => 'Approved',
557 ),
bd44e0df 558 ),
cd43c5e3
AS
559 'CRM_Core_DAO_CustomField' => array(
560 array(
561 'fieldName' => 'custom_group_id',
562 'sample' => $custom_group_name,
563 ),
874bbfa9
CW
564 array(
565 'fieldName' => 'data_type',
566 'sample' => 'Alphanumeric',
567 ),
568 array(
569 'fieldName' => 'html_type',
570 'sample' => 'Select Date',
571 ),
572 ),
573 'CRM_Core_DAO_CustomGroup' => array(
574 array(
575 'fieldName' => 'style',
576 'sample' => 'Inline',
577 ),
578 ),
579 'CRM_Core_DAO_Dashboard' => array(
580 array(
581 'fieldName' => 'domain_id',
582 'sample' => 'Default Domain Name',
583 ),
584 ),
585 'CRM_Core_DAO_Tag' => array(
586 array(
587 'fieldName' => 'used_for',
588 'sample' => 'Contacts',
589 ),
cd43c5e3
AS
590 ),
591 'CRM_Core_DAO_EntityTag' => array(
592 array(
593 'fieldName' => 'tag_id',
594 'sample' => 'Government Entity',
595 ),
596 ),
874bbfa9
CW
597 'CRM_Core_DAO_Extension' => array(
598 array(
599 'fieldName' => 'type',
600 'sample' => 'Module',
601 ),
602 ),
8f785c9e 603 'CRM_Core_DAO_OptionValue' => array(
874bbfa9
CW
604 array(
605 'fieldName' => 'option_group_id',
606 'sample' => 'gender',
607 'max' => 200,
608 ),
8f785c9e
AS
609 array(
610 'fieldName' => 'component_id',
611 'sample' => 'CiviContribute',
612 ),
874bbfa9
CW
613 array(
614 'fieldName' => 'domain_id',
615 'sample' => 'Default Domain Name',
616 ),
8f785c9e 617 ),
cbf48754 618 'CRM_Core_DAO_MailSettings' => array(
874bbfa9
CW
619 array(
620 'fieldName' => 'domain_id',
621 'sample' => 'Default Domain Name',
622 ),
cbf48754
AS
623 array(
624 'fieldName' => 'protocol',
625 'sample' => 'Localdir',
626 ),
627 ),
874bbfa9
CW
628 'CRM_Core_DAO_Managed' => array(
629 array(
630 'fieldName' => 'cleanup',
631 'sample' => 'Always',
632 ),
633 ),
cbf48754
AS
634 'CRM_Core_DAO_Mapping' => array(
635 array(
636 'fieldName' => 'mapping_type_id',
637 'sample' => 'Search Builder',
874bbfa9
CW
638 ),
639 ),
640 'CRM_Core_DAO_Navigation' => array(
641 array(
642 'fieldName' => 'domain_id',
643 'sample' => 'Default Domain Name',
cbf48754
AS
644 ),
645 ),
e7e657f0
AS
646 'CRM_Core_DAO_Phone' => array(
647 array(
648 'fieldName' => 'phone_type_id',
649 'sample' => 'Phone',
650 ),
651 array(
652 'fieldName' => 'location_type_id',
653 'sample' => 'Home',
654 ),
655 ),
874bbfa9
CW
656 'CRM_Core_DAO_PrintLabel' => array(
657 array(
658 'fieldName' => 'label_format_name',
659 'sample' => 'Avery 5395',
660 ),
661 array(
662 'fieldName' => 'label_type_id',
663 'sample' => 'Event Badge',
664 ),
665 ),
e7e657f0
AS
666 'CRM_Core_DAO_Email' => array(
667 array(
668 'fieldName' => 'location_type_id',
669 'sample' => 'Home',
670 ),
671 ),
672 'CRM_Core_DAO_Address' => array(
673 array(
674 'fieldName' => 'location_type_id',
675 'sample' => 'Home',
676 ),
677 ),
cbf48754
AS
678 'CRM_Core_DAO_Website' => array(
679 array(
680 'fieldName' => 'website_type_id',
681 'sample' => 'Facebook',
682 ),
683 ),
874bbfa9
CW
684 'CRM_Core_DAO_WordReplacement' => array(
685 array(
686 'fieldName' => 'match_type',
687 'sample' => 'Exact Match',
688 ),
689 array(
690 'fieldName' => 'domain_id',
691 'sample' => 'Default Domain Name',
692 ),
693 ),
cbf48754
AS
694 'CRM_Core_DAO_MappingField' => array(
695 array(
696 'fieldName' => 'website_type_id',
697 'sample' => 'Facebook',
698 ),
e7e657f0
AS
699 array(
700 'fieldName' => 'im_provider_id',
701 'sample' => 'Yahoo',
702 ),
874bbfa9
CW
703 array(
704 'fieldName' => 'operator',
705 'sample' => '=',
706 ),
cbf48754 707 ),
398f49ab
AS
708 'CRM_Contact_DAO_Contact' => array(
709 array(
710 'fieldName' => 'prefix_id',
711 'sample' => 'Mr.',
712 ),
713 array(
714 'fieldName' => 'suffix_id',
715 'sample' => 'Sr.',
716 ),
717 array(
718 'fieldName' => 'gender_id',
719 'sample' => 'Male',
720 ),
398f49ab 721 array(
e7e657f0
AS
722 'fieldName' => 'preferred_communication_method',
723 'sample' => 'Postal Mail',
398f49ab 724 ),
091fe2a8
CW
725 array(
726 'fieldName' => 'contact_type',
727 'sample' => 'Individual',
728 'exclude' => 'Team',
729 ),
730 array(
731 'fieldName' => 'contact_sub_type',
732 'sample' => 'Team',
733 'exclude' => 'Individual',
734 ),
c0c9cd82
CW
735 array(
736 'fieldName' => 'preferred_language',
737 'sample' => array('en_US' => 'English (United States)'),
738 'max' => 250,
739 ),
874bbfa9
CW
740 array(
741 'fieldName' => 'preferred_mail_format',
742 'sample' => 'Text',
743 ),
744 array(
745 'fieldName' => 'communication_style_id',
746 'sample' => 'Formal',
747 ),
deceed83
CW
748 array(
749 'fieldName' => "custom_$customFieldId",
750 'sample' => array('foo' => 'Foo'),
751 'max' => 1,
752 ),
398f49ab 753 ),
e7e657f0 754 'CRM_Batch_DAO_Batch' => array(
398f49ab 755 array(
e7e657f0
AS
756 'fieldName' => 'type_id',
757 'sample' => 'Membership',
398f49ab 758 ),
398f49ab 759 array(
e7e657f0
AS
760 'fieldName' => 'status_id',
761 'sample' => 'Reopened',
398f49ab 762 ),
cbf48754 763 array(
e7e657f0
AS
764 'fieldName' => 'mode_id',
765 'sample' => 'Automatic Batch',
cbf48754 766 ),
874bbfa9
CW
767 array(
768 'fieldName' => 'payment_instrument_id',
769 'sample' => 'Check',
770 ),
cbf48754 771 ),
e7e657f0 772 'CRM_Core_DAO_IM' => array(
cbf48754 773 array(
e7e657f0
AS
774 'fieldName' => 'provider_id',
775 'sample' => 'Yahoo',
cbf48754 776 ),
874bbfa9
CW
777 array(
778 'fieldName' => 'location_type_id',
779 'sample' => 'Home',
780 ),
cbf48754 781 ),
2158332a
CW
782 'CRM_Event_DAO_Participant' => array(
783 array(
784 'fieldName' => 'status_id',
785 'sample' => 'Registered',
786 ),
787 array(
788 'fieldName' => 'role_id',
789 'sample' => 'Speaker',
790 ),
6d68a4cb
CW
791 array(
792 'fieldName' => 'fee_currency',
a38a89fc 793 'sample' => array('USD' => 'US Dollar'),
6d68a4cb
CW
794 'max' => 200,
795 ),
874bbfa9
CW
796 array(
797 'fieldName' => 'campaign_id',
798 'sample' => $campaign_name,
799 ),
2158332a
CW
800 ),
801 'CRM_Event_DAO_Event' => array(
802 array(
803 'fieldName' => 'event_type_id',
804 'sample' => 'Fundraiser',
805 ),
874bbfa9
CW
806 array(
807 'fieldName' => 'participant_listing_id',
808 'sample' => 'Name and Email',
809 ),
2158332a 810 array(
6d68a4cb
CW
811 'fieldName' => 'payment_processor',
812 'sample' => $pp_name,
813 ),
814 array(
815 'fieldName' => 'financial_type_id',
816 'sample' => 'Donation',
817 ),
874bbfa9
CW
818 array(
819 'fieldName' => 'default_role_id',
820 'sample' => 'Attendee',
821 ),
6d68a4cb
CW
822 array(
823 'fieldName' => 'currency',
a38a89fc 824 'sample' => array('USD' => 'US Dollar'),
6d68a4cb 825 'max' => 200,
2158332a 826 ),
874bbfa9
CW
827 array(
828 'fieldName' => 'campaign_id',
829 'sample' => $campaign_name,
830 ),
831 ),
832 'CRM_Core_DAO_Menu' => array(
833 array(
834 'fieldName' => 'domain_id',
835 'sample' => 'Default Domain Name',
836 ),
837 array(
838 'fieldName' => 'component_id',
839 'sample' => 'CiviMember',
840 ),
2158332a 841 ),
f899561e 842 'CRM_Member_DAO_Membership' => array(
874bbfa9
CW
843 array(
844 'fieldName' => 'membership_type_id',
845 'sample' => $membership_type,
846 ),
f899561e
CW
847 array(
848 'fieldName' => 'status_id',
849 'sample' => 'New',
850 ),
874bbfa9
CW
851 array(
852 'fieldName' => 'campaign_id',
853 'sample' => $campaign_name,
854 ),
855 ),
856 'CRM_Member_DAO_MembershipStatus' => array(
857 array(
858 'fieldName' => 'start_event',
859 'sample' => 'start date',
860 ),
861 array(
862 'fieldName' => 'end_event',
863 'sample' => 'member since',
864 ),
865 array(
866 'fieldName' => 'start_event_adjust_unit',
867 'sample' => 'month',
868 ),
869 array(
870 'fieldName' => 'end_event_adjust_unit',
871 'sample' => 'year',
872 ),
873 ),
874 'CRM_Member_DAO_MembershipType' => array(
875 array(
876 'fieldName' => 'visibility',
877 'sample' => 'Public',
878 ),
879 array(
880 'fieldName' => 'domain_id',
881 'sample' => 'Default Domain Name',
882 ),
883 array(
884 'fieldName' => 'financial_type_id',
885 'sample' => 'Donation',
886 ),
887 array(
888 'fieldName' => 'duration_unit',
889 'sample' => 'lifetime',
890 ),
891 array(
892 'fieldName' => 'period_type',
893 'sample' => 'Rolling',
894 ),
6ce01b02
CW
895 ),
896 'CRM_Mailing_DAO_Mailing' => array(
f899561e 897 array(
6ce01b02
CW
898 'fieldName' => 'approval_status_id',
899 'sample' => 'Approved',
f899561e 900 ),
874bbfa9
CW
901 array(
902 'fieldName' => 'domain_id',
903 'sample' => 'Default Domain Name',
904 ),
905 array(
906 'fieldName' => 'visibility',
907 'sample' => 'Public Pages',
908 ),
909 array(
910 'fieldName' => 'campaign_id',
911 'sample' => $campaign_name,
912 ),
913 ),
914 'CRM_Mailing_DAO_Component' => array(
915 array(
916 'fieldName' => 'component_type',
917 'sample' => 'Header',
918 ),
919 ),
920 'CRM_Mailing_DAO_MailingGroup' => array(
921 array(
922 'fieldName' => 'group_type',
923 'sample' => 'Include',
924 ),
925 ),
926 'CRM_Mailing_DAO_MailingJob' => array(
927 array(
928 'fieldName' => 'status',
929 'sample' => 'Scheduled',
930 ),
931 ),
932 'CRM_Mailing_Event_DAO_Bounce' => array(
933 array(
934 'fieldName' => 'bounce_type_id',
935 'sample' => 'Invalid',
936 ),
937 ),
938 'CRM_Mailing_Event_DAO_Subscribe' => array(
939 array(
940 'fieldName' => 'group_id',
941 'sample' => $group_name,
942 ),
f899561e 943 ),
fb1fd730
CW
944 'CRM_Grant_DAO_Grant' => array(
945 array(
946 'fieldName' => 'status_id',
d7867ce7 947 'sample' => 'Approved for Payment',
fb1fd730
CW
948 ),
949 array(
950 'fieldName' => 'grant_type_id',
951 'sample' => 'Emergency',
952 ),
6d68a4cb
CW
953 array(
954 'fieldName' => 'currency',
a38a89fc 955 'sample' => array('USD' => 'US Dollar'),
6d68a4cb
CW
956 'max' => 200,
957 ),
874bbfa9
CW
958 array(
959 'fieldName' => 'financial_type_id',
960 'sample' => 'Donation',
961 ),
6d68a4cb
CW
962 ),
963 'CRM_Contribute_DAO_Contribution' => array(
964 array(
965 'fieldName' => 'payment_instrument_id',
966 'sample' => 'Credit Card',
967 ),
968 array(
969 'fieldName' => 'financial_type_id',
970 'sample' => 'Donation',
971 ),
972 array(
973 'fieldName' => 'currency',
a38a89fc 974 'sample' => array('USD' => 'US Dollar'),
6d68a4cb
CW
975 'max' => 200,
976 ),
977 array(
978 'fieldName' => 'contribution_status_id',
979 'sample' => 'Completed',
980 ),
874bbfa9
CW
981 array(
982 'fieldName' => 'contribution_page_id',
983 'sample' => $contribution_page,
984 ),
985 array(
986 'fieldName' => 'campaign_id',
987 'sample' => $campaign_name,
988 ),
989 ),
990 'CRM_Contribute_DAO_PremiumsProduct' => array(
991 array(
992 'fieldName' => 'financial_type_id',
993 'sample' => 'Donation',
994 ),
6d68a4cb
CW
995 ),
996 'CRM_Contribute_DAO_ContributionPage' => array(
997 array(
998 'fieldName' => 'payment_processor',
999 'sample' => $pp_name,
1000 ),
1001 array(
1002 'fieldName' => 'financial_type_id',
1003 'sample' => 'Donation',
1004 ),
1005 array(
1006 'fieldName' => 'currency',
a38a89fc 1007 'sample' => array('USD' => 'US Dollar'),
6d68a4cb
CW
1008 'max' => 200,
1009 ),
874bbfa9
CW
1010 array(
1011 'fieldName' => 'campaign_id',
1012 'sample' => $campaign_name,
1013 ),
fb1fd730 1014 ),
3f3a3ba0
CW
1015 'CRM_Case_DAO_Case' => array(
1016 array(
1017 'fieldName' => 'status_id',
1018 'sample' => 'Ongoing',
1019 ),
68fd48d9
CW
1020 array(
1021 'fieldName' => 'case_type_id',
1022 'sample' => 'Housing Support',
1023 ),
3f3a3ba0 1024 ),
874bbfa9
CW
1025 'CRM_Report_DAO_ReportInstance' => array(
1026 array(
1027 'fieldName' => 'domain_id',
1028 'sample' => 'Default Domain Name',
1029 ),
1030 ),
887a4028 1031 );
398f49ab
AS
1032
1033 foreach ($fields as $daoName => $daoFields) {
1034 foreach ($daoFields as $field) {
a42ef93c 1035 $message = "DAO name: '{$daoName}', field: '{$field['fieldName']}'";
398f49ab 1036
6d68a4cb 1037 $optionValues = $daoName::buildOptions($field['fieldName']);
091fe2a8
CW
1038 $this->assertNotEmpty($optionValues, $message);
1039
1040 // Ensure sample value is contained in the returned optionValues.
c0c9cd82
CW
1041 if (!is_array($field['sample'])) {
1042 $this->assertContains($field['sample'], $optionValues, $message);
1043 }
1044 // If sample is an array, we check keys and values
1045 else {
1046 foreach ($field['sample'] as $key => $value) {
1047 $this->assertArrayHasKey($key, $optionValues, $message);
1048 $this->assertEquals(CRM_Utils_Array::value($key, $optionValues), $value, $message);
1049 }
1050 }
398f49ab 1051
6ce01b02 1052 // Ensure exclude value is not contained in the optionValues
091fe2a8
CW
1053 if (!empty($field['exclude'])) {
1054 $this->assertNotContains($field['exclude'], $optionValues, $message);
1055 }
1056
398f49ab 1057 // Ensure count of optionValues is not extraordinarily high.
874bbfa9 1058 $max = CRM_Utils_Array::value('max', $field, 20);
398f49ab
AS
1059 $this->assertLessThanOrEqual($max, count($optionValues), $message);
1060 }
1061 }
887a4028 1062 }
091fe2a8 1063
00be9182 1064 public function testContactTypes() {
091fe2a8
CW
1065 $byName = array(
1066 'Individual' => 'Individual',
1067 'Household' => 'Household',
1068 'Organization' => 'Organization',
1069 );
1070 $byId = array(
1071 1 => 'Individual',
1072 2 => 'Household',
1073 3 => 'Organization',
1074 );
a1ef51e2 1075 // By default this should return an array keyed by name
c0c9cd82 1076 $result = CRM_Contact_DAO_Contact::buildOptions('contact_type');
091fe2a8
CW
1077 $this->assertEquals($byName, $result);
1078 // But we can also fetch by ID
92915c55
TO
1079 $result = CRM_Core_PseudoConstant::get('CRM_Contact_DAO_Contact', 'contact_type', array(
1080 'keyColumn' => 'id',
28a04ea9 1081 'labelColumn' => 'name',
92915c55 1082 ));
091fe2a8
CW
1083 $this->assertEquals($byId, $result);
1084 // Make sure flip param works
92915c55
TO
1085 $result = CRM_Core_PseudoConstant::get('CRM_Contact_DAO_Contact', 'contact_type', array(
1086 'keyColumn' => 'id',
1087 'labelColumn' => 'name',
28a04ea9 1088 'flip' => TRUE,
92915c55 1089 ));
091fe2a8
CW
1090 $this->assertEquals(array_flip($byId), $result);
1091 }
96025800 1092
887a4028 1093}