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