df60621b |
1 | <?php |
0eea664b |
2 | |
df60621b |
3 | /** |
4 | * Include dataProvider for tests |
acb109b7 |
5 | * @group headless |
df60621b |
6 | */ |
7 | class CRM_Member_BAO_QueryTest extends CiviUnitTestCase { |
8 | |
9 | /** |
10 | * Set up function. |
11 | * |
12 | * Ensure CiviCase is enabled. |
13 | */ |
14 | public function setUp() { |
15 | parent::setUp(); |
16 | CRM_Core_BAO_ConfigSetting::enableComponent('CiviCase'); |
17 | } |
18 | |
19 | /** |
20 | * Check that membership type is handled. |
21 | * |
22 | * We want to see the following syntaxes for membership_type_id field handled: |
23 | * 1) membership_type_id => 1 |
24 | */ |
25 | public function testConvertEntityFieldSingleValue() { |
26 | $formValues = array('membership_type_id' => 2); |
27 | $params = CRM_Contact_BAO_Query::convertFormValues($formValues, 0, FALSE, NULL, array('membership_type_id')); |
28 | $this->assertEquals(array('membership_type_id', '=', 2, 0, 0), $params[0]); |
29 | $obj = new CRM_Contact_BAO_Query($params); |
30 | $this->assertEquals(array('civicrm_membership.membership_type_id = 2'), $obj->_where[0]); |
31 | } |
32 | |
33 | /** |
34 | * Check that membership type is handled. |
35 | * |
36 | * We want to see the following syntaxes for membership_type_id field handled: |
37 | * 2) membership_type_id => 5,6 |
38 | * |
39 | * The last of these is the format used prior to converting membership_type_id to an entity reference field. |
40 | */ |
41 | public function testConvertEntityFieldMultipleValueEntityRef() { |
42 | $formValues = array('membership_type_id' => '1,2'); |
43 | $params = CRM_Contact_BAO_Query::convertFormValues($formValues, 0, FALSE, NULL, array('membership_type_id')); |
44 | $this->assertEquals(array('membership_type_id', 'IN', array(1, 2), 0, 0), $params[0]); |
45 | $obj = new CRM_Contact_BAO_Query($params); |
46 | $this->assertEquals(array('civicrm_membership.membership_type_id IN ("1", "2")'), $obj->_where[0]); |
47 | } |
48 | |
49 | /** |
50 | * Check that membership type is handled. |
51 | * |
52 | * We want to see the following syntaxes for membership_type_id field handled: |
53 | * 3) membership_type_id => array(5,6) |
54 | * |
55 | * The last of these is the format used prior to converting membership_type_id to an entity reference field. It will |
56 | * be used by pre-existing smart groups. |
57 | */ |
58 | public function testConvertEntityFieldMultipleValueLegacy() { |
59 | $formValues = array('membership_type_id' => array(1, 2)); |
60 | $params = CRM_Contact_BAO_Query::convertFormValues($formValues, 0, FALSE, NULL, array('membership_type_id')); |
61 | $this->assertEquals(array('membership_type_id', 'IN', array(1, 2), 0, 0), $params[0]); |
62 | $obj = new CRM_Contact_BAO_Query($params); |
63 | $this->assertEquals(array('civicrm_membership.membership_type_id IN ("1", "2")'), $obj->_where[0]); |
64 | } |
65 | |
66 | /** |
67 | * Check that running convertFormValues more than one doesn't mangle the array. |
68 | * |
69 | * Unfortunately the convertFormValues & indeed much of the query code is run in pre-process AND post-process. |
70 | * |
71 | * The convertFormValues function should cope with this until such time as we can rationalise that. |
72 | */ |
73 | public function testConvertEntityFieldMultipleValueEntityRefDoubleRun() { |
74 | $formValues = array('membership_type_id' => '1,2'); |
75 | $params = CRM_Contact_BAO_Query::convertFormValues($formValues, 0, FALSE, NULL, array('membership_type_id')); |
76 | $this->assertEquals(array('membership_type_id', 'IN', array(1, 2), 0, 0), $params[0]); |
77 | $params = CRM_Contact_BAO_Query::convertFormValues($params, 0, FALSE, NULL, array('membership_type_id')); |
78 | $this->assertEquals(array('membership_type_id', 'IN', array(1, 2), 0, 0), $params[0]); |
79 | $obj = new CRM_Contact_BAO_Query($params); |
80 | $this->assertEquals(array('civicrm_membership.membership_type_id IN ("1", "2")'), $obj->_where[0]); |
81 | } |
82 | |
83 | } |