FIX: Improve removing advanced filters

Prior:
Entering `test after:5` and then removing the 5 via the search text field would result in the UI not updating

After:
UI updates after half a second

Removing it from the UI, removes it from the search field immediately.

Change the regex to detect filter words. This now matches what happens in search.rb, which gives a lot more flexibility (such as iterating over multiple `in:` terms)

Return [] when searchTerm is empty

Move .trim() to this.set('searchTerm', searchTerm) so it doesn't run twice (which was very obvious when watching the search term field)

More refactoring to make this a bit less complex

Update code based on review comments

FEATURE: Add common `in:` options
This commit is contained in:
cpradio
2016-10-13 12:34:31 -04:00
parent 94002f5903
commit 1e7c69044c
67 changed files with 1284 additions and 996 deletions

View File

@@ -71,7 +71,7 @@ test("open advanced search", assert => {
test("validate population of advanced search", assert => {
visit("/search");
fillIn('.search input.full-page-search', 'test user:admin #bug group:moderators badge:Reader tags:monkey in:likes status:open after:5 posts_count:10');
fillIn('.search input.full-page-search', 'test user:admin #bug group:moderators badge:Reader tags:monkey in:likes in:private in:wiki in:bookmarks status:open after:2016-10-05 posts_count:10');
click('.search-advanced-btn');
andThen(() => {
@@ -80,10 +80,13 @@ test("validate population of advanced search", assert => {
//assert.ok(exists('.search-advanced-options span:contains("moderators")'), 'has "moderators" pre-populated');
//assert.ok(exists('.search-advanced-options span:contains("Reader")'), 'has "Reader" pre-populated');
assert.ok(exists('.search-advanced-options .tag-chooser .tag-monkey'), 'has "monkey" pre-populated');
assert.ok(exists('.search-advanced-options .combobox .select2-choice .select2-chosen:contains("I liked")'), 'has "I liked" pre-populated');
assert.ok(exists('.search-advanced-options .in-likes:checked'), 'has "I liked" pre-populated');
assert.ok(exists('.search-advanced-options .in-private:checked'), 'has "are in my messages" pre-populated');
assert.ok(exists('.search-advanced-options .in-wiki:checked'), 'has "are wiki" pre-populated');
assert.ok(exists('.search-advanced-options .combobox .select2-choice .select2-chosen:contains("I\'ve bookmarked")'), 'has "I\'ve bookmarked" pre-populated');
assert.ok(exists('.search-advanced-options .combobox .select2-choice .select2-chosen:contains("are open")'), 'has "are open" pre-populated');
assert.ok(exists('.search-advanced-options .combobox .select2-choice .select2-chosen:contains("after")'), 'has "after" pre-populated');
assert.equal(find('.search-advanced-options #search-post-date').val(), "5", 'has "5" pre-populated');
assert.equal(find('.search-advanced-options #search-post-date').val(), "2016-10-05", 'has "2016-10-05" pre-populated');
assert.equal(find('.search-advanced-options #search-posts-count').val(), "10", 'has "10" pre-populated');
});
});
@@ -190,16 +193,52 @@ test("update category through advanced search ui", assert => {
// });
// });
test("update in:likes filter through advanced search ui", assert => {
visit("/search");
fillIn('.search input.full-page-search', 'none');
click('.search-advanced-btn');
click('.search-advanced-options .in-likes');
andThen(() => {
assert.ok(exists('.search-advanced-options .in-likes:checked'), 'has "I liked" populated');
assert.equal(find('.search input.full-page-search').val(), "none in:likes", 'has updated search term to "none in:likes"');
});
});
test("update in:private filter through advanced search ui", assert => {
visit("/search");
fillIn('.search input.full-page-search', 'none');
click('.search-advanced-btn');
click('.search-advanced-options .in-private');
andThen(() => {
assert.ok(exists('.search-advanced-options .in-private:checked'), 'has "are in my messages" populated');
assert.equal(find('.search input.full-page-search').val(), "none in:private", 'has updated search term to "none in:private"');
});
});
test("update in:wiki filter through advanced search ui", assert => {
visit("/search");
fillIn('.search input.full-page-search', 'none');
click('.search-advanced-btn');
click('.search-advanced-options .in-wiki');
andThen(() => {
assert.ok(exists('.search-advanced-options .in-wiki:checked'), 'has "are wiki" populated');
assert.equal(find('.search input.full-page-search').val(), "none in:wiki", 'has updated search term to "none in:wiki"');
});
});
test("update in filter through advanced search ui", assert => {
visit("/search");
fillIn('.search input.full-page-search', 'none');
click('.search-advanced-btn');
selectDropdown('.search-advanced-options #s2id_in', 'likes');
fillIn('.search-advanced-options #in', 'likes');
selectDropdown('.search-advanced-options #s2id_in', 'bookmarks');
fillIn('.search-advanced-options #in', 'bookmarks');
andThen(() => {
assert.ok(exists('.search-advanced-options #s2id_in .select2-choice .select2-chosen:contains("I liked")'), 'has "I liked" populated');
assert.equal(find('.search input.full-page-search').val(), "none in:likes", 'has updated search term to "none in:likes"');
assert.ok(exists('.search-advanced-options #s2id_in .select2-choice .select2-chosen:contains("I\'ve bookmarked")'), 'has "I\'ve bookmarked" populated');
assert.equal(find('.search input.full-page-search').val(), "none in:bookmarks", 'has updated search term to "none in:bookmarks"');
});
});
@@ -220,14 +259,14 @@ test("update post time through advanced search ui", assert => {
visit("/search");
fillIn('.search input.full-page-search', 'none');
click('.search-advanced-btn');
fillIn('#search-post-date', '5');
fillIn('#search-post-date', '2016-10-05');
selectDropdown('.search-advanced-options #s2id_postTime', 'after');
fillIn('.search-advanced-options #postTime', 'after');
andThen(() => {
assert.ok(exists('.search-advanced-options #s2id_postTime .select2-choice .select2-chosen:contains("after")'), 'has "after" populated');
assert.equal(find('.search-advanced-options #search-post-date').val(), "5", 'has "5" populated');
assert.equal(find('.search input.full-page-search').val(), "none after:5", 'has updated search term to "none after:5"');
assert.equal(find('.search-advanced-options #search-post-date').val(), "2016-10-05", 'has "2016-10-05" populated');
assert.equal(find('.search input.full-page-search').val(), "none after:2016-10-05", 'has updated search term to "none after:2016-10-05"');
});
});