/** * @dataProvider createFiltersTestData * * @param array $configuration * @param array $metadata * @param bool $result */ public function testCreateFilters(array $configuration, array $metadata, $result) { foreach ($configuration as $property => $value) { $this->valueFactory->shouldReceive('parseValue')->with($value)->andReturn($value); } $filter = $this->factory->createFilters($configuration); static::assertEquals($result, $filter->matches($metadata), sprintf("Expected configuration: %s and data: %s to result in: %s", json_encode($configuration), json_encode($metadata), $result)); }
/** * @param string $property * @param mixed $value * * @return ArrayFilterInterface * @throws UnknownPropertyDefinitionException */ public function getFilter($property, $value) { foreach ($this->definitions as $key => $definition) { if (preg_match($key, $property, $matches)) { $expected = is_string($value) ? $this->valueFactory->parseValue($value) : $value; return call_user_func($definition, $matches[1], $expected); } } throw new UnknownPropertyDefinitionException($property); }