From 4ae288367e58efd6582c2511d8ce10836be8b9aa Mon Sep 17 00:00:00 2001 From: Keegan George Date: Wed, 9 Nov 2022 11:23:08 -0800 Subject: [PATCH] FIX: Permalinks issues (#18939) --- .../addon/controllers/admin-permalinks.js | 2 + .../templates/components/permalink-form.hbs | 4 +- .../admin/addon/templates/permalinks.hbs | 99 ++++++++++--------- .../tests/acceptance/admin-permalink-test.js | 56 +++++++++++ config/locales/client.en.yml | 1 + 5 files changed, 114 insertions(+), 48 deletions(-) create mode 100644 app/assets/javascripts/discourse/tests/acceptance/admin-permalink-test.js diff --git a/app/assets/javascripts/admin/addon/controllers/admin-permalinks.js b/app/assets/javascripts/admin/addon/controllers/admin-permalinks.js index 07372d2f104..37f51260685 100644 --- a/app/assets/javascripts/admin/addon/controllers/admin-permalinks.js +++ b/app/assets/javascripts/admin/addon/controllers/admin-permalinks.js @@ -6,11 +6,13 @@ import discourseDebounce from "discourse-common/lib/debounce"; import { observes } from "discourse-common/utils/decorators"; import { clipboardCopy } from "discourse/lib/utilities"; import { inject as service } from "@ember/service"; +import { or } from "@ember/object/computed"; export default Controller.extend({ dialog: service(), loading: false, filter: null, + showSearch: or("model.length", "filter"), _debouncedShow() { Permalink.findAll(this.filter).then((result) => { diff --git a/app/assets/javascripts/admin/addon/templates/components/permalink-form.hbs b/app/assets/javascripts/admin/addon/templates/components/permalink-form.hbs index 705ac6894d0..2e30cd353da 100644 --- a/app/assets/javascripts/admin/addon/templates/components/permalink-form.hbs +++ b/app/assets/javascripts/admin/addon/templates/components/permalink-form.hbs @@ -6,8 +6,8 @@ - + - + diff --git a/app/assets/javascripts/admin/addon/templates/permalinks.hbs b/app/assets/javascripts/admin/addon/templates/permalinks.hbs index 13d1e1d1b7d..3f4cad78940 100644 --- a/app/assets/javascripts/admin/addon/templates/permalinks.hbs +++ b/app/assets/javascripts/admin/addon/templates/permalinks.hbs @@ -6,51 +6,58 @@ - {{#if this.model.length}} - - - - - - - - - {{#each this.model as |pl|}} - - - + + + {{/each}} + + + {{else}} + {{#if this.filter}} + + {{else}} + + {{/if}} + {{/if}} + diff --git a/app/assets/javascripts/discourse/tests/acceptance/admin-permalink-test.js b/app/assets/javascripts/discourse/tests/acceptance/admin-permalink-test.js new file mode 100644 index 00000000000..bf9fb447fd2 --- /dev/null +++ b/app/assets/javascripts/discourse/tests/acceptance/admin-permalink-test.js @@ -0,0 +1,56 @@ +import { acceptance, exists } from "discourse/tests/helpers/qunit-helpers"; +import { fillIn, visit } from "@ember/test-helpers"; +import { test } from "qunit"; + +acceptance("Admin - Permalinks", function (needs) { + const startingData = [ + { + id: 38, + url: "c/feature/announcements", + topic_id: null, + topic_title: null, + topic_url: null, + post_id: null, + post_url: null, + post_number: null, + post_topic_title: null, + category_id: 67, + category_name: "announcements", + category_url: "/c/announcements/67", + external_url: null, + tag_id: null, + tag_name: null, + tag_url: null, + }, + ]; + + needs.user(); + needs.pretender((server, helper) => { + server.get("/admin/permalinks.json", (response) => { + const result = + response.queryParams.filter !== "feature" ? [] : startingData; + return helper.response(200, result); + }); + }); + + test("search permalinks with result", async function (assert) { + await visit("/admin/customize/permalinks"); + await fillIn(".permalink-search input", "feature"); + assert.ok( + exists(".permalink-results span[title='c/feature/announcements']"), + "permalink is found after search" + ); + }); + + test("search permalinks without results", async function (assert) { + await visit("/admin/customize/permalinks"); + await fillIn(".permalink-search input", "garboogle"); + + assert.ok( + exists(".permalink-results__no-result"), + "no results message shown" + ); + + assert.ok(exists(".permalink-search"), "search input still visible"); + }); +}); diff --git a/config/locales/client.en.yml b/config/locales/client.en.yml index ef115fc0005..8ca1aa4365d 100644 --- a/config/locales/client.en.yml +++ b/config/locales/client.en.yml @@ -5839,6 +5839,7 @@ en: destination: "Destination" copy_to_clipboard: "Copy Permalink to Clipboard" delete_confirm: Are you sure you want to delete this permalink? + no_permalinks: "You don't have any permalinks yet. Create a new permalink above to begin seeing a list of your permalinks here." form: label: "New:" add: "Add"