diff --git a/src/Plugin/facets/processor/CountLimitProcessor.php b/src/Plugin/facets/processor/CountLimitProcessor.php index 4b72a5e3afa1e56b8f7d16c210609647bf3293fb..30c2c1ee3c3e55a8b03fe5630743affcfe52b56e 100644 --- a/src/Plugin/facets/processor/CountLimitProcessor.php +++ b/src/Plugin/facets/processor/CountLimitProcessor.php @@ -76,7 +76,11 @@ class CountLimitProcessor extends ProcessorPluginBase implements BuildProcessorI * {@inheritdoc} */ public function validateConfigurationForm(array $form, FormStateInterface $form_state, FacetInterface $facet) { - return parent::validateConfigurationForm($form, $form_state, $facet); // TODO: Change the autogenerated stub + $values = $form_state->getValues(); + if (!empty($values['maximum_items']) && !empty($values['minimum_items']) && $values['maximum_items'] <= $values['minimum_items']) { + $form_state->setErrorByName('maximum_items', t('If both minimum and maximum item count are specified, the maximum item count should be higher than the minimum item count.')); + } + return parent::validateConfigurationForm($form, $form_state, $facet); } diff --git a/tests/src/Unit/Plugin/processor/CountLimitProcessorTest.php b/tests/src/Unit/Plugin/processor/CountLimitProcessorTest.php index 30c4c6d60f2cc5397fd4d3fbaa2c6e3f4d195547..baf5c1db6f43d01894659340ed8bc7f9ef0bdcdb 100644 --- a/tests/src/Unit/Plugin/processor/CountLimitProcessorTest.php +++ b/tests/src/Unit/Plugin/processor/CountLimitProcessorTest.php @@ -137,6 +137,34 @@ class CountLimitProcessorTest extends UnitTestCase { $this->assertCount(2, $sorted_results); } + /** + * Test maximum values. + */ + public function testMaxValue() { + $facet = new Facet([], 'facet'); + $facet->setResults($this->original_results); + $facet->setOption('processors', [ + 'count_limit' => [], + ]); + + $this->processor->setConfiguration(['maximum_items' => 14]); + $sorted_results = $this->processor->build($facet, $this->original_results); + $this->assertCount(2, $sorted_results); + $this->assertEquals('llama', $sorted_results[0]->getDisplayValue()); + $this->assertEquals('badger', $sorted_results[1]->getDisplayValue()); + + $this->processor->setConfiguration(['maximum_items' => 140]); + $sorted_results = $this->processor->build($facet, $this->original_results); + $this->assertCount(3, $sorted_results); + $this->assertEquals('llama', $sorted_results[0]->getDisplayValue()); + $this->assertEquals('badger', $sorted_results[1]->getDisplayValue()); + $this->assertEquals('duck', $sorted_results[2]->getDisplayValue()); + + $this->processor->setConfiguration(['maximum_items' => 1]); + $sorted_results = $this->processor->build($facet, $this->original_results); + $this->assertCount(0, $sorted_results); + } + /** * Test filtering of results. */