protected function getSearchAttributes() { $form = $this->getConfigurationForm(); return MarketingListMembersUtil::makeSearchAttributeData($this->modelId, $form->filteredBySubscriptionType, $form->filteredBySearchTerm); }
public function testMakeSearchAttributeData() { $marketingListId = 1; $filterBySubscriptionType = null; $filterBySearchTerm = null; $searchAttributeData1 = MarketingListMembersUtil::makeSearchAttributeData($marketingListId, $filterBySubscriptionType, $filterBySearchTerm); $this->assertCount(1, $searchAttributeData1); $this->assertArrayHasKey(0, $searchAttributeData1); $this->assertArrayHasKey('MarketingListMember', $searchAttributeData1[0]); $this->assertArrayHasKey('clauses', $searchAttributeData1[0]['MarketingListMember']); $this->assertArrayHasKey('structure', $searchAttributeData1[0]['MarketingListMember']); $this->assertEquals(1, $searchAttributeData1[0]['MarketingListMember']['structure']); $clauses1 = $searchAttributeData1[0]['MarketingListMember']['clauses']; $this->assertCount(1, $clauses1); $this->assertArrayHasKey(1, $clauses1); $this->assertCount(4, $clauses1[1]); $this->assertArrayHasKey('attributeName', $clauses1[1]); $this->assertEquals('marketingList', $clauses1[1]['attributeName']); $this->assertArrayHasKey('relatedAttributeName', $clauses1[1]); $this->assertEquals('id', $clauses1[1]['relatedAttributeName']); $this->assertArrayHasKey('operatorType', $clauses1[1]); $this->assertEquals('equals', $clauses1[1]['operatorType']); $this->assertArrayHasKey('value', $clauses1[1]); $this->assertEquals($marketingListId, $clauses1[1]['value']); $filterBySubscriptionType = MarketingListMembersConfigurationForm::FILTERED_USER_ALL; $searchAttributeData2 = MarketingListMembersUtil::makeSearchAttributeData($marketingListId, $filterBySubscriptionType, $filterBySearchTerm); $this->assertEquals($searchAttributeData1, $searchAttributeData2); $filterBySubscriptionType = MarketingListMembersConfigurationForm::FILTER_USER_SUBSCRIBERS; $searchAttributeData3 = MarketingListMembersUtil::makeSearchAttributeData($marketingListId, $filterBySubscriptionType, $filterBySearchTerm); $this->assertCount(1, $searchAttributeData3); $this->assertArrayHasKey(0, $searchAttributeData3); $this->assertArrayHasKey('MarketingListMember', $searchAttributeData3[0]); $this->assertArrayHasKey('clauses', $searchAttributeData3[0]['MarketingListMember']); $this->assertArrayHasKey('structure', $searchAttributeData3[0]['MarketingListMember']); $this->assertEquals('(1 and 2)', $searchAttributeData3[0]['MarketingListMember']['structure']); $clauses3 = $searchAttributeData3[0]['MarketingListMember']['clauses']; $this->assertCount(2, $clauses3); $this->assertArrayHasKey(2, $clauses3); $this->assertCount(3, $clauses3[2]); $this->assertArrayHasKey('attributeName', $clauses3[2]); $this->assertEquals('unsubscribed', $clauses3[2]['attributeName']); $this->assertArrayHasKey('operatorType', $clauses3[2]); $this->assertEquals('equals', $clauses3[2]['operatorType']); $this->assertArrayHasKey('value', $clauses3[2]); $this->assertEquals(0, $clauses3[2]['value']); $filterBySubscriptionType = MarketingListMembersConfigurationForm::FILTER_USER_UNSUBSCRIBERS; $searchAttributeData4 = MarketingListMembersUtil::makeSearchAttributeData($marketingListId, $filterBySubscriptionType, $filterBySearchTerm); $this->assertEquals(1, $searchAttributeData4[0]['MarketingListMember']['clauses'][2]['value']); $filterBySearchTerm = 'ja'; $searchAttributeData5 = MarketingListMembersUtil::makeSearchAttributeData($marketingListId, $filterBySubscriptionType, $filterBySearchTerm); $this->assertCount(1, $searchAttributeData5); $this->assertArrayHasKey(0, $searchAttributeData5); $this->assertArrayHasKey('MarketingListMember', $searchAttributeData5[0]); $this->assertArrayHasKey('clauses', $searchAttributeData5[0]['MarketingListMember']); $this->assertArrayHasKey('structure', $searchAttributeData5[0]['MarketingListMember']); $this->assertEquals('(1 and 2) and (3 or 4 or 5 or 6)', $searchAttributeData5[0]['MarketingListMember']['structure']); $clauses5 = $searchAttributeData5[0]['MarketingListMember']['clauses']; $this->assertCount(6, $clauses5); $this->assertArrayHasKey(3, $clauses5); $this->assertCount(4, $clauses5[3]); $this->assertArrayHasKey('attributeName', $clauses5[3]); $this->assertEquals('contact', $clauses5[3]['attributeName']); $this->assertArrayHasKey('relatedAttributeName', $clauses5[3]); $this->assertEquals('firstName', $clauses5[3]['relatedAttributeName']); $this->assertArrayHasKey('operatorType', $clauses5[3]); $this->assertEquals('startsWith', $clauses5[3]['operatorType']); $this->assertArrayHasKey('value', $clauses5[3]); $this->assertEquals($filterBySearchTerm, $clauses5[3]['value']); $this->assertArrayHasKey(4, $clauses5); $this->assertCount(4, $clauses5[4]); $this->assertArrayHasKey('attributeName', $clauses5[4]); $this->assertEquals('contact', $clauses5[4]['attributeName']); $this->assertArrayHasKey('relatedAttributeName', $clauses5[4]); $this->assertEquals('lastName', $clauses5[4]['relatedAttributeName']); $this->assertArrayHasKey('operatorType', $clauses5[4]); $this->assertEquals('startsWith', $clauses5[4]['operatorType']); $this->assertArrayHasKey('value', $clauses5[4]); $this->assertEquals($filterBySearchTerm, $clauses5[4]['value']); $this->assertArrayHasKey(5, $clauses5); $this->assertCount(2, $clauses5[5]); $this->assertArrayHasKey('attributeName', $clauses5[5]); $this->assertEquals('contact', $clauses5[5]['attributeName']); $this->assertArrayHasKey('relatedModelData', $clauses5[5]); $this->assertCount(4, $clauses5[5]['relatedModelData']); $this->assertArrayHasKey('attributeName', $clauses5[5]['relatedModelData']); $this->assertEquals('primaryEmail', $clauses5[5]['relatedModelData']['attributeName']); $this->assertArrayHasKey('relatedAttributeName', $clauses5[5]['relatedModelData']); $this->assertEquals('emailAddress', $clauses5[5]['relatedModelData']['relatedAttributeName']); $this->assertArrayHasKey('operatorType', $clauses5[5]['relatedModelData']); $this->assertEquals('startsWith', $clauses5[5]['relatedModelData']['operatorType']); $this->assertArrayHasKey('value', $clauses5[5]['relatedModelData']); $this->assertEquals($filterBySearchTerm, $clauses5[5]['relatedModelData']['value']); $this->assertArrayHasKey(6, $clauses5); $this->assertCount(2, $clauses5[6]); $this->assertArrayHasKey('attributeName', $clauses5[6]); $this->assertEquals('contact', $clauses5[6]['attributeName']); $this->assertArrayHasKey('relatedModelData', $clauses5[6]); $this->assertCount(4, $clauses5[6]['relatedModelData']); $this->assertArrayHasKey('attributeName', $clauses5[6]['relatedModelData']); $this->assertEquals('secondaryEmail', $clauses5[6]['relatedModelData']['attributeName']); $this->assertArrayHasKey('relatedAttributeName', $clauses5[6]['relatedModelData']); $this->assertEquals('emailAddress', $clauses5[6]['relatedModelData']['relatedAttributeName']); $this->assertArrayHasKey('operatorType', $clauses5[6]['relatedModelData']); $this->assertEquals('startsWith', $clauses5[6]['relatedModelData']['operatorType']); $this->assertArrayHasKey('value', $clauses5[6]['relatedModelData']); $this->assertEquals($filterBySearchTerm, $clauses5[6]['relatedModelData']['value']); }
protected function makeDataProvider($uniquePageId, $form) { assert('is_string($uniquePageId)'); assert('$form instanceOf MarketingListMembersConfigurationForm'); $pageSize = Yii::app()->pagination->resolveActiveForCurrentUserByType('subListPageSize'); $searchAttributes = MarketingListMembersUtil::makeSearchAttributeData($this->modelId, $form->filteredBySubscriptionType, $form->filteredBySearchTerm); $sortAttributes = MarketingListMembersUtil::makeSortAttributeData(); return new RedBeanModelsDataProvider($uniquePageId, $sortAttributes, true, $searchAttributes, array('pagination' => array('pageSize' => $pageSize))); }