diff --git a/app/assets/javascripts/discourse/components/search-advanced-options.js.es6 b/app/assets/javascripts/discourse/components/search-advanced-options.js.es6
index 109182042c..f29c6f95a3 100644
--- a/app/assets/javascripts/discourse/components/search-advanced-options.js.es6
+++ b/app/assets/javascripts/discourse/components/search-advanced-options.js.es6
@@ -30,12 +30,14 @@ const IN_OPTIONS_MAPPING = {'images': 'with'};
export default Em.Component.extend({
classNames: ['search-advanced-options'],
- inOptions: [
+ inOptionsForUsers: [
{name: I18n.t('search.advanced.filters.unseen'), value: "unseen"},
{name: I18n.t('search.advanced.filters.posted'), value: "posted"},
{name: I18n.t('search.advanced.filters.watching'), value: "watching"},
{name: I18n.t('search.advanced.filters.tracking'), value: "tracking"},
{name: I18n.t('search.advanced.filters.bookmarks'), value: "bookmarks"},
+ ],
+ inOptionsForAll: [
{name: I18n.t('search.advanced.filters.first'), value: "first"},
{name: I18n.t('search.advanced.filters.pinned'), value: "pinned"},
{name: I18n.t('search.advanced.filters.unpinned'), value: "unpinned"},
@@ -91,7 +93,8 @@ export default Em.Component.extend({
when: 'before',
days: ''
}
- }
+ },
+ inOptions: this.currentUser ? this.inOptionsForUsers.concat(this.inOptionsForAll) : this.inOptionsForAll
});
},
diff --git a/app/assets/javascripts/discourse/templates/components/search-advanced-options.hbs b/app/assets/javascripts/discourse/templates/components/search-advanced-options.hbs
index e3ac643ec6..c1c1914b64 100644
--- a/app/assets/javascripts/discourse/templates/components/search-advanced-options.hbs
+++ b/app/assets/javascripts/discourse/templates/components/search-advanced-options.hbs
@@ -53,11 +53,13 @@
-
-
-
-
-
+ {{#if currentUser}}
+
+
+
+
+
+ {{/if}}
{{combo-box id="in" valueAttribute="value" content=inOptions value=searchedTerms.in none="user.locale.any"}}
diff --git a/test/javascripts/acceptance/search-full-test.js.es6 b/test/javascripts/acceptance/search-full-test.js.es6
index b978f8879d..782d234adc 100644
--- a/test/javascripts/acceptance/search-full-test.js.es6
+++ b/test/javascripts/acceptance/search-full-test.js.es6
@@ -1,6 +1,7 @@
import { acceptance, waitFor } from "helpers/qunit-helpers";
acceptance("Search - Full Page", {
settings: {tagging_enabled: true},
+ loggedIn: true,
beforeEach() {
const response = (object) => {
return [
diff --git a/test/javascripts/acceptance/search-test.js.es6 b/test/javascripts/acceptance/search-test.js.es6
index c3d6f11e81..fcd78afe18 100644
--- a/test/javascripts/acceptance/search-test.js.es6
+++ b/test/javascripts/acceptance/search-test.js.es6
@@ -1,4 +1,4 @@
-import { acceptance } from "helpers/qunit-helpers";
+import { acceptance, logIn } from "helpers/qunit-helpers";
acceptance("Search");
QUnit.test("search", (assert) => {
@@ -73,3 +73,49 @@ QUnit.test("Search with context", assert => {
assert.ok(!$('.search-context input[type=checkbox]').is(":checked"));
});
});
+
+QUnit.test("Right filters are shown to anonymous users", assert => {
+ visit("/search?expanded=true");
+
+ andThen(() => {
+ assert.ok(exists('select#in option[value=first]'));
+ assert.ok(exists('select#in option[value=pinned]'));
+ assert.ok(exists('select#in option[value=unpinned]'));
+ assert.ok(exists('select#in option[value=wiki]'));
+ assert.ok(exists('select#in option[value=images]'));
+
+ assert.notOk(exists('select#in option[value=unseen]'));
+ assert.notOk(exists('select#in option[value=posted]'));
+ assert.notOk(exists('select#in option[value=watching]'));
+ assert.notOk(exists('select#in option[value=tracking]'));
+ assert.notOk(exists('select#in option[value=bookmarks]'));
+
+ 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 => {
+ logIn();
+ Discourse.reset();
+ visit("/search?expanded=true");
+
+ andThen(() => {
+ assert.ok(exists('select#in option[value=first]'));
+ assert.ok(exists('select#in option[value=pinned]'));
+ assert.ok(exists('select#in option[value=unpinned]'));
+ assert.ok(exists('select#in option[value=wiki]'));
+ assert.ok(exists('select#in option[value=images]'));
+
+ assert.ok(exists('select#in option[value=unseen]'));
+ assert.ok(exists('select#in option[value=posted]'));
+ assert.ok(exists('select#in option[value=watching]'));
+ assert.ok(exists('select#in option[value=tracking]'));
+ assert.ok(exists('select#in option[value=bookmarks]'));
+
+ assert.ok(exists('.search-advanced-options .in-likes'));
+ assert.ok(exists('.search-advanced-options .in-private'));
+ assert.ok(exists('.search-advanced-options .in-seen'));
+ });
+});