From 684bc821bef033eee5ef75b13f63998c01d0e804 Mon Sep 17 00:00:00 2001 From: Joffrey JAFFEUX Date: Wed, 22 Jun 2022 18:36:49 +0200 Subject: [PATCH] DEV: allows category-badge helper to display a link (#17206) --- .../discourse/app/helpers/category-badge.js | 3 +- .../components/category-badge-test.js | 45 +++++++++++++++++++ 2 files changed, 47 insertions(+), 1 deletion(-) create mode 100644 app/assets/javascripts/discourse/tests/integration/components/category-badge-test.js diff --git a/app/assets/javascripts/discourse/app/helpers/category-badge.js b/app/assets/javascripts/discourse/app/helpers/category-badge.js index 887e5fcf97e..b9e51674c91 100644 --- a/app/assets/javascripts/discourse/app/helpers/category-badge.js +++ b/app/assets/javascripts/discourse/app/helpers/category-badge.js @@ -1,11 +1,12 @@ import { categoryLinkHTML } from "discourse/helpers/category-link"; import { registerUnbound } from "discourse-common/lib/helpers"; +import { isPresent } from "@ember/utils"; registerUnbound("category-badge", function (cat, options) { return categoryLinkHTML(cat, { hideParent: options.hideParent, allowUncategorized: options.allowUncategorized, categoryStyle: options.categoryStyle, - link: false, + link: isPresent(options.link) ? options.link : false, }); }); diff --git a/app/assets/javascripts/discourse/tests/integration/components/category-badge-test.js b/app/assets/javascripts/discourse/tests/integration/components/category-badge-test.js new file mode 100644 index 00000000000..0dfecbf6b21 --- /dev/null +++ b/app/assets/javascripts/discourse/tests/integration/components/category-badge-test.js @@ -0,0 +1,45 @@ +import componentTest, { + setupRenderingTest, +} from "discourse/tests/helpers/component-test"; +import { + discourseModule, + exists, + query, +} from "discourse/tests/helpers/qunit-helpers"; +import hbs from "htmlbars-inline-precompile"; +import Category from "discourse/models/category"; + +discourseModule("Integration | Component | category-badge", function (hooks) { + setupRenderingTest(hooks); + + componentTest("displays category", { + template: hbs`{{category-badge category}}`, + + beforeEach() { + this.set("category", Category.findById(1)); + }, + + async test(assert) { + assert.equal( + query(".category-name").innerText.trim(), + this.category.name + ); + }, + }); + + componentTest("options.link", { + template: hbs`{{category-badge category link=true}}`, + + beforeEach() { + this.set("category", Category.findById(1)); + }, + + async test(assert) { + assert.ok( + exists( + `a.badge-wrapper[href="/c/${this.category.slug}/${this.category.id}"]` + ) + ); + }, + }); +});