From b81afa07560bf1eb2ed3c867792e1e0ee6be840a Mon Sep 17 00:00:00 2001 From: Bianca Nenciu Date: Mon, 26 Sep 2022 16:37:56 +0300 Subject: [PATCH] FIX: Update user results page when no users found (#18363) The page was not updated if the server did not return any results. This caused the page to be either empty or display the previous result set. --- .../addon/controllers/admin-users-list-show.js | 8 ++++---- .../tests/acceptance/admin-users-list-test.js | 13 ++++++++++++- .../discourse/tests/helpers/create-pretender.js | 6 ++++++ 3 files changed, 22 insertions(+), 5 deletions(-) diff --git a/app/assets/javascripts/admin/addon/controllers/admin-users-list-show.js b/app/assets/javascripts/admin/addon/controllers/admin-users-list-show.js index abd59ab1f1c..e51e7c3a5cb 100644 --- a/app/assets/javascripts/admin/addon/controllers/admin-users-list-show.js +++ b/app/assets/javascripts/admin/addon/controllers/admin-users-list-show.js @@ -59,10 +59,10 @@ export default Controller.extend(CanCheckEmails, { page, }) .then((result) => { - if (result && result.length > 0) { - this._results[page] = result; - this.set("model", this._results.flat()); - } else { + this._results[page] = result; + this.set("model", this._results.flat()); + + if (result.length === 0) { this._canLoadMore = false; } }) diff --git a/app/assets/javascripts/discourse/tests/acceptance/admin-users-list-test.js b/app/assets/javascripts/discourse/tests/acceptance/admin-users-list-test.js index e899cf9d3d8..6e051abe6be 100644 --- a/app/assets/javascripts/discourse/tests/acceptance/admin-users-list-test.js +++ b/app/assets/javascripts/discourse/tests/acceptance/admin-users-list-test.js @@ -3,7 +3,7 @@ import { exists, query, } from "discourse/tests/helpers/qunit-helpers"; -import { click, visit } from "@ember/test-helpers"; +import { click, fillIn, visit } from "@ember/test-helpers"; import I18n from "I18n"; import { test } from "qunit"; @@ -17,6 +17,17 @@ acceptance("Admin - Users List", function (needs) { assert.ok(!exists(".user:nth-of-type(1) .email small"), "escapes email"); }); + test("searching users with no matches", async function (assert) { + await visit("/admin/users/list/active"); + + await fillIn(".controls.username input", "doesntexist"); + + assert.equal( + query(".users-list-container").innerText, + I18n.t("search.no_results") + ); + }); + test("sorts users", async function (assert) { await visit("/admin/users/list/active"); diff --git a/app/assets/javascripts/discourse/tests/helpers/create-pretender.js b/app/assets/javascripts/discourse/tests/helpers/create-pretender.js index 608a718b403..faddd058adc 100644 --- a/app/assets/javascripts/discourse/tests/helpers/create-pretender.js +++ b/app/assets/javascripts/discourse/tests/helpers/create-pretender.js @@ -670,6 +670,12 @@ export function applyDefaultHandlers(pretender) { }, ]; + if (request.queryParams.filter) { + store = store.filter((user) => + user.username.includes(request.queryParams.filter) + ); + } + const showEmails = request.queryParams.show_emails; if (showEmails === "false") {