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