$defaultListTest->assertDontSee($notVisitedPage->name);
}
- public function test_ajax_entity_serach_shows_breadcrumbs()
+ public function test_ajax_entity_search_shows_breadcrumbs()
{
$chapter = Chapter::first();
$page = $chapter->pages->first();
$chapterSearch->assertSee($chapter->book->getShortName(42));
}
+ public function test_ajax_entity_search_reflects_items_without_permission()
+ {
+ $page = Page::query()->first();
+ $baseSelector = 'a[data-entity-type="page"][data-entity-id="' . $page->id . '"]';
+ $searchUrl = '/ajax/search/entities?permission=update&term=' . urlencode($page->name);
+
+ $resp = $this->asEditor()->get($searchUrl);
+ $this->withHtml($resp)->assertElementContains($baseSelector, $page->name);
+ $this->withHtml($resp)->assertElementNotContains($baseSelector, "You don't have the required permissions to select this item");
+
+ $resp = $this->actingAs($this->getViewer())->get($searchUrl);
+ $this->withHtml($resp)->assertElementContains($baseSelector, $page->name);
+ $this->withHtml($resp)->assertElementContains($baseSelector, "You don't have the required permissions to select this item");
+ }
+
public function test_sibling_search_for_pages()
{
$chapter = Chapter::query()->with('pages')->first();
$this->newPage(['name' => 'Test page B', 'html' => '<p>cat biscuit</p>']);
$search = $this->asEditor()->get('/search?term=cat+dog+biscuit');
- $search->assertElementContains('.entity-list > .page', 'Test page A', 1);
- $search->assertElementContains('.entity-list > .page', 'Test page B', 2);
+ $this->withHtml($search)->assertElementContains('.entity-list > .page:nth-child(1)', 'Test page A');
+ $this->withHtml($search)->assertElementContains('.entity-list > .page:nth-child(2)', 'Test page B');
for ($i = 0; $i < 2; $i++) {
$this->newPage(['name' => 'Test page ' . $i, 'html' => '<p>dog</p>']);
}
$search = $this->asEditor()->get('/search?term=cat+dog+biscuit');
- $search->assertElementContains('.entity-list > .page', 'Test page B', 1);
- $search->assertElementContains('.entity-list > .page', 'Test page A', 2);
+ $this->withHtml($search)->assertElementContains('.entity-list > .page:nth-child(1)', 'Test page B');
+ $this->withHtml($search)->assertElementContains('.entity-list > .page:nth-child(2)', 'Test page A');
}
public function test_terms_in_headers_have_an_adjusted_index_score()
// Content
$search->assertSee('A <strong>superimportant</strong> page about <strong>meowie</strong>able animals', false);
// Tag name
- $search->assertElementContains('.tag-name.highlight', 'SuperImportant');
+ $this->withHtml($search)->assertElementContains('.tag-name.highlight', 'SuperImportant');
// Tag value
- $search->assertElementContains('.tag-value.highlight', 'MeowieCat');
+ $this->withHtml($search)->assertElementContains('.tag-value.highlight', 'MeowieCat');
+ }
+
+ public function test_match_highlighting_works_with_multibyte_content()
+ {
+ $this->newPage([
+ 'name' => 'Test Page',
+ 'html' => '<p>На мен ми трябва нещо добро test</p>',
+ ]);
+
+ $search = $this->asEditor()->get('/search?term=' . urlencode('На мен ми трябва нещо добро'));
+ $search->assertSee('<strong>На</strong> <strong>мен</strong> <strong>ми</strong> <strong>трябва</strong> <strong>нещо</strong> <strong>добро</strong> test', false);
}
public function test_html_entities_in_item_details_remains_escaped_in_search_results()
$search->assertSee('My <cool> <strong>TestPageContent</strong>', false);
$search->assertSee('My supercool <great> <strong>TestPageContent</strong> page', false);
}
+
+ public function test_words_adjacent_to_lines_breaks_can_be_matched_with_normal_terms()
+ {
+ $page = $this->newPage(['name' => 'TermA', 'html' => '
+ <p>TermA<br>TermB<br>TermC</p>
+ ']);
+
+ $search = $this->asEditor()->get('/search?term=' . urlencode('TermB TermC'));
+
+ $search->assertSee($page->getUrl(), false);
+ }
+
+ public function test_searches_with_user_filters_adds_them_into_advanced_search_form()
+ {
+ $resp = $this->asEditor()->get('/search?term=' . urlencode('test {updated_by:me} {created_by:dan}'));
+ $this->withHtml($resp)->assertElementExists('form input[type="hidden"][name="filters[updated_by]"][value="me"]');
+ $this->withHtml($resp)->assertElementExists('form input[type="hidden"][name="filters[created_by]"][value="dan"]');
+ }
}