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