import { acceptance, logIn } from "helpers/qunit-helpers"; acceptance("Search"); QUnit.test("search", (assert) => { visit("/"); click('#search-button'); andThen(() => { assert.ok(exists('#search-term'), 'it shows the search bar'); assert.ok(!exists('.search-menu .results ul li'), 'no results by default'); }); fillIn('#search-term', 'dev'); keyEvent('#search-term', 'keyup', 16); andThen(() => { assert.ok(exists('.search-menu .results ul li'), 'it shows results'); }); click('.show-help'); andThen(() => { assert.equal(find('.full-page-search').val(), 'dev', 'it shows the search term'); assert.ok(exists('.search-advanced-options'), 'advanced search is expanded'); }); }); QUnit.test("search for a tag", (assert) => { visit("/"); click('#search-button'); fillIn('#search-term', 'evil'); keyEvent('#search-term', 'keyup', 16); andThen(() => { assert.ok(exists('.search-menu .results ul li'), 'it shows results'); }); }); QUnit.test("search scope checkbox", assert => { visit("/c/bug"); click('#search-button'); andThen(() => { assert.ok(exists('.search-context input:checked'), 'scope to category checkbox is checked'); }); click('#search-button'); visit("/t/internationalization-localization/280"); click('#search-button'); andThen(() => { assert.not(exists('.search-context input:checked'), 'scope to topic checkbox is not checked'); }); click('#search-button'); visit("/u/eviltrout"); click('#search-button'); andThen(() => { assert.ok(exists('.search-context input:checked'), 'scope to user checkbox is checked'); }); }); QUnit.test("Search with context", assert => { visit("/t/internationalization-localization/280/1"); click('#search-button'); fillIn('#search-term', 'dev'); click(".search-context input[type='checkbox']"); keyEvent('#search-term', 'keyup', 16); andThen(() => { assert.ok(exists('.search-menu .results ul li'), 'it shows results'); }); visit("/"); click('#search-button'); andThen(() => { assert.ok(!exists(".search-context input[type='checkbox']")); }); visit("/t/internationalization-localization/280/1"); click('#search-button'); andThen(() => { assert.ok(!$('.search-context input[type=checkbox]').is(":checked")); }); }); QUnit.test("Right filters are shown to anonymous users", assert => { const inSelector = selectKit('.select-kit#in'); visit("/search?expanded=true"); inSelector.expand(); andThen(() => { assert.ok(inSelector.rowByValue('first').exists()); assert.ok(inSelector.rowByValue('pinned').exists()); assert.ok(inSelector.rowByValue('unpinned').exists()); assert.ok(inSelector.rowByValue('wiki').exists()); assert.ok(inSelector.rowByValue('images').exists()); assert.notOk(inSelector.rowByValue('unseen').exists()); assert.notOk(inSelector.rowByValue('posted').exists()); assert.notOk(inSelector.rowByValue('watching').exists()); assert.notOk(inSelector.rowByValue('tracking').exists()); assert.notOk(inSelector.rowByValue('bookmarks').exists()); assert.notOk(exists('.search-advanced-options .in-likes')); assert.notOk(exists('.search-advanced-options .in-private')); assert.notOk(exists('.search-advanced-options .in-seen')); }); }); QUnit.test("Right filters are shown to logged-in users", assert => { const inSelector = selectKit('.select-kit#in'); logIn(); Discourse.reset(); visit("/search?expanded=true"); inSelector.expand(); andThen(() => { assert.ok(inSelector.rowByValue('first').exists()); assert.ok(inSelector.rowByValue('pinned').exists()); assert.ok(inSelector.rowByValue('unpinned').exists()); assert.ok(inSelector.rowByValue('wiki').exists()); assert.ok(inSelector.rowByValue('images').exists()); assert.ok(inSelector.rowByValue('unseen').exists()); assert.ok(inSelector.rowByValue('posted').exists()); assert.ok(inSelector.rowByValue('watching').exists()); assert.ok(inSelector.rowByValue('tracking').exists()); assert.ok(inSelector.rowByValue('bookmarks').exists()); assert.ok(exists('.search-advanced-options .in-likes')); assert.ok(exists('.search-advanced-options .in-private')); assert.ok(exists('.search-advanced-options .in-seen')); }); });