<?php
-namespace Search;
+namespace Tests\Search;
use Tests\TestCase;
$this->assertEquals(3, $scoreByTerm->get('Animal'));
$this->assertEquals(3, $scoreByTerm->get('SuperImportant'));
}
+
+ public function test_terms_containing_guillemets_handled()
+ {
+ $page = $this->entities->newPage(['html' => '<p>«Hello there» and « there »</p>']);
+
+ $scoreByTerm = $page->searchTerms()->pluck('score', 'term');
+ $expected = ['Hello', 'there', 'and'];
+ foreach ($expected as $term) {
+ $this->assertNotNull($scoreByTerm->get($term), "Failed asserting that \"$term\" is indexed");
+ }
+
+ $nonExpected = ['«', '»'];
+ foreach ($nonExpected as $term) {
+ $this->assertNull($scoreByTerm->get($term), "Failed asserting that \"$term\" is not indexed");
+ }
+ }
+
+ public function test_terms_containing_punctuation_within_retain_original_form_and_split_form_in_index()
+ {
+ $page = $this->entities->newPage(['html' => '<p>super.duper awesome-beans big- barry cheese.</p><p>biscuits</p><p>a-bs</p>']);
+
+ $scoreByTerm = $page->searchTerms()->pluck('score', 'term');
+ $expected = ['super', 'duper', 'super.duper', 'awesome-beans', 'awesome', 'beans', 'big', 'barry', 'cheese', 'biscuits', 'a-bs', 'a', 'bs'];
+ foreach ($expected as $term) {
+ $this->assertNotNull($scoreByTerm->get($term), "Failed asserting that \"$term\" is indexed");
+ }
+
+ $nonExpected = ['big-', 'big-barry', 'cheese.', 'cheese.biscuits'];
+ foreach ($nonExpected as $term) {
+ $this->assertNull($scoreByTerm->get($term), "Failed asserting that \"$term\" is not indexed");
+ }
+ }
+
+ public function test_non_breaking_spaces_handled_as_spaces()
+ {
+ $page = $this->entities->newPage(['html' => '<p>a tigerbadger is a dangerous animal</p>']);
+
+ $scoreByTerm = $page->searchTerms()->pluck('score', 'term');
+ $this->assertNotNull($scoreByTerm->get('tigerbadger'));
+ $this->assertNotNull($scoreByTerm->get('dangerous'));
+ $this->assertNotNull($scoreByTerm->get('animal'));
+ }
}