diff --git a/tests/php/Search/DatabaseSearchEngineTest.php b/tests/php/Search/DatabaseSearchEngineTest.php new file mode 100644 index 00000000..8d424af0 --- /dev/null +++ b/tests/php/Search/DatabaseSearchEngineTest.php @@ -0,0 +1,65 @@ +kill(); + Config::modify(); + } + FulltextSearchable::enable(); + static::$tempDB->build(); + static::resetDBSchema(true); + } + + /** + * Validate that https://github.com/silverstripe/silverstripe-cms/issues/3212 is fixed + */ + public function testSearchEngineEscapeAs() + { + $page = new SiteTree(); + $page->Title = "This page provides food as bar"; + $page->write(); + $page->doPublish(); + + $results = DB::get_conn()->searchEngine([ SiteTree::class, File::class ], "foo* as* bar*", 0, 100, "\"Relevance\" DESC", "", true); + + $this->assertCount(1, $results); + $this->assertEquals( + "This page provides food as bar", + $results->First()->Title + ); + } + + /** + * Validate that https://github.com/silverstripe/silverstripe-cms/issues/1452 is fixed + */ + public function testSearchEngineEscapeGreaterThan() + { + $page = new SiteTree(); + $page->Title = "Unrelated page"; + $page->write(); + $page->doPublish(); + + $results = DB::get_conn()->searchEngine([ SiteTree::class, File::class ], "foo>*", 0, 100, "\"Relevance\" DESC", "", true); + + // We're not trying to match this query, just confirm that it successfully executes + $this->assertCount(0, $results); + } +}