public function testOccurences() { $str = new Text('let it go'); $this->assertTrue($str->startsWith('let')); $this->assertTrue($str->startsWith(new Text('let'))); $this->assertFalse($str->startsWith('go')); $this->assertFalse($str->startsWith(new Text('go'))); $this->assertTrue($str->endsWith('go')); $this->assertTrue($str->endsWith(new Text('go'))); $this->assertFalse($str->endsWith('let')); $this->assertFalse($str->endsWith(new Text('let'))); $this->assertTrue($str->contains('it')); $this->assertTrue($str->contains(new Text('it'))); $this->assertFalse($str->contains('Hulk')); $this->assertFalse($str->contains(new Text('Hulk'))); $this->assertTrue($str->equals('let it go')); $this->assertTrue($str->equals(new Text('let it go'))); $this->assertFalse($str->equals('Let It Go')); $this->assertTrue($str->equalsIgnoreCase('Let It Go')); $this->assertTrue($str->equalsIgnoreCase(new Text('Let It Go'))); $this->assertFalse($str->isEmpty()); }
/** * @param mixed $query * @param mixed $filter * @return void */ protected function applyFilter($query, $filter) { if (is_array($filter)) { // filter by fields if (isset($filter['fields'])) { foreach ($filter['fields'] as $column => $value) { $pos = strpos($column, '.'); if ($pos !== false) { $rel = NameUtils::toStudlyCase(substr($column, 0, $pos)); $col = substr($column, $pos + 1); $method = 'use' . $rel . 'Query'; if (method_exists($query, $method)) { $sub = $query->{$method}(); $this->applyFilter($sub, ['fields' => [$col => $value]]); $sub->endUse(); } } else { $method = 'filterBy' . NameUtils::toStudlyCase($column); if (method_exists($query, $method)) { $query->{$method}($value); } } } } // filter by features if (isset($filter['features'])) { $features = new Text($filter['features']); if ($features->contains('random')) { $query->addAscendingOrderByColumn('RAND()'); } } } if (method_exists($this, 'filter')) { $this->filter($query, $filter); } }