예제 #1
0
 /**
  * The method ::getRows should invoke row filtering.
  */
 public function testGetRows()
 {
     $fieldValues = [1, 3];
     $fieldName = "field" . (string) rand();
     $rows = [];
     // Make one row for each of the field values
     foreach ($fieldValues as $fieldValue) {
         $rows[] = RowBuilder::begin()->addWritable(new Field([], [], 'literal', 'A literal field', $fieldValue), $fieldName)->build();
     }
     $filter = FilterBuilder::begin()->setId("myFilter")->setType(Filter::TYPE_STATIC)->setFieldName($fieldName)->setCondition(FilterStatement::COND_GREATER_THAN)->setCriterion(2)->build();
     $table = TableBuilder::begin()->setId("t" . (string) rand())->addRows($rows)->addFilter($filter)->build();
     $this->assertEquals(1, sizeof($table->getRows()));
 }
예제 #2
0
 public function testForcePaginationFilterToSoftPagination()
 {
     // This pagination filter should be able to execute by query, so it should remain
     // a hard pagination filter.
     $filter1 = FilterBuilder::begin()->setId("Filter1")->setType(Filter::TYPE_PAGINATION)->build();
     // This filter will force a row sort because the field name is not
     // available to the query.
     $filter2 = FilterBuilder::begin()->setNextFilter($filter1)->setId("Filter2")->setType(Filter::TYPE_STATIC)->setFieldName("TestClass.MadeUpFieldToForceRowSort")->setCondition(FilterStatement::COND_SORT_DESC)->build();
     // This pagination filter will be forced to be done by rows, which means
     // that it should designate itself as a soft pagination filter.
     $filter3 = FilterBuilder::begin()->setNextFilter($filter2)->setId("Filter3")->setType(Filter::TYPE_PAGINATION)->build();
     // use MockQuery from FilterStatementTest
     $filter3->queryFilter(new MockQueryWrapper($this->query));
     $filter3->rowFilter([]);
     $this->assertEquals(PaginationFilter::TYPE_HARD_PAGINATION, $filter1->getType());
     $this->assertEquals(PaginationFilter::TYPE_SOFT_PAGINATION, $filter3->getType());
 }
예제 #3
0
 public function testVisitSelectFilter()
 {
     $writer = new HTMLWriter();
     $handle = (string) rand();
     $optionNames = ["s" . (string) rand(), "s" . (string) rand(), "s" . (string) rand()];
     $optionFieldNames = [(string) rand(), (string) rand(), (string) rand()];
     $optionConditions = [FilterStatement::COND_GREATER_THAN, FilterStatement::COND_CONTAINS, FilterStatement::COND_LESS_THAN];
     $optionValues = [rand(), rand(), rand()];
     $defaultOption = 1;
     $filter = FilterBuilder::begin()->setType(Filter::TYPE_SELECT)->setId($handle)->addOptions([$optionNames[0] => [$optionFieldNames[0], $optionConditions[0], $optionValues[0]], $optionNames[1] => [$optionFieldNames[1], $optionConditions[1], $optionValues[1]]])->addOptions([$optionNames[2] => [$optionFieldNames[2], $optionConditions[2], $optionValues[2]]])->setDefault($optionNames[$defaultOption])->build();
     $result = $this->stripQuotes($filter->accept($writer));
     // Assert that the result contains the container for our filter controls
     $this->assertContains("class=select-container data-handle-for={$handle}", $result);
     // Assert that each of the option names is presented
     foreach ($optionNames as $name) {
         $this->assertContains($name, $result);
     }
 }