diff --git a/app/assets/javascripts/admin/addon/controllers/admin-badges/show.js b/app/assets/javascripts/admin/addon/controllers/admin-badges/show.js
index 55077f17ea2..0a360789a27 100644
--- a/app/assets/javascripts/admin/addon/controllers/admin-badges/show.js
+++ b/app/assets/javascripts/admin/addon/controllers/admin-badges/show.js
@@ -81,8 +81,8 @@ export default class AdminBadgesShowController extends Controller.extend(
}
get hasQuery() {
- let modelQuery = this.model.query;
- let bufferedQuery = this.bufferedQuery;
+ let modelQuery = this.model.get("query");
+ let bufferedQuery = this.buffered.get("query");
if (bufferedQuery) {
return bufferedQuery.trim().length > 0;
diff --git a/app/assets/javascripts/admin/addon/templates/admin-badges/show.hbs b/app/assets/javascripts/admin/addon/templates/admin-badges/show.hbs
index 1cf2bbab5a7..31b16af4cc0 100644
--- a/app/assets/javascripts/admin/addon/templates/admin-badges/show.hbs
+++ b/app/assets/javascripts/admin/addon/templates/admin-badges/show.hbs
@@ -97,21 +97,21 @@
-
diff --git a/app/assets/javascripts/discourse/tests/acceptance/admin-badges-show-test.js b/app/assets/javascripts/discourse/tests/acceptance/admin-badges-show-test.js
index 531342e2fff..2464e770b93 100644
--- a/app/assets/javascripts/discourse/tests/acceptance/admin-badges-show-test.js
+++ b/app/assets/javascripts/discourse/tests/acceptance/admin-badges-show-test.js
@@ -3,8 +3,9 @@ import {
exists,
query,
} from "discourse/tests/helpers/qunit-helpers";
-import { click, visit } from "@ember/test-helpers";
+import { click, fillIn, settled, visit } from "@ember/test-helpers";
import { test } from "qunit";
+import { set } from "@ember/object";
acceptance("Admin - Badges - Show", function (needs) {
needs.user();
@@ -37,6 +38,24 @@ acceptance("Admin - Badges - Show", function (needs) {
exists(".image-uploader"),
"image uploader becomes visible after clicking the upload image radio button"
);
+
+ // SQL fields
+ assert.false(exists("label[for=query]"), "sql input is hidden by default");
+ set(this.siteSettings, "enable_badge_sql", true);
+ await settled();
+ assert.true(exists("label[for=query]"), "sql input shows when enabled");
+
+ assert.false(
+ exists("input[name=auto_revoke]"),
+ "does not show sql-specific options when query is blank"
+ );
+
+ await fillIn(".ace-wrapper textarea", "SELECT 1");
+
+ assert.true(
+ exists("input[name=auto_revoke]"),
+ "shows sql-specific options when query is present"
+ );
});
test("existing badge that has an icon", async function (assert) {