Skip to content
This repository was archived by the owner on Jul 14, 2025. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import Component from "@glimmer/component";
import { hash } from "@ember/helper";
import CategoryChooser from "select-kit/components/category-chooser";

export default class CategoryIdInput extends Component {
Expand All @@ -15,6 +16,11 @@ export default class CategoryIdInput extends Component {
<CategoryChooser
@value={{this.data.value}}
@onChange={{@field.set}}
@options={{hash
allowUncategorized=null
autoInsertNoneItem=true
none=true
}}
name={{@info.identifier}}
/>
</@field.Custom>
Expand Down
73 changes: 1 addition & 72 deletions test/javascripts/acceptance/list-queries-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,78 +9,7 @@ acceptance("Data Explorer Plugin | List Queries", function (needs) {

needs.pretender((server, helper) => {
server.get("/admin/plugins/explorer/groups.json", () => {
return helper.response([
{
id: 1,
name: "admins",
},
{
id: 2,
name: "moderators",
},
{
id: 3,
name: "staff",
},
{
id: 0,
name: "everyone",
},
{
id: 10,
name: "trust_level_0",
},
{
id: 11,
name: "trust_level_1",
},
{
id: 12,
name: "trust_level_2",
},
{
id: 13,
name: "trust_level_3",
},
{
id: 14,
name: "trust_level_4",
},
]);
});

server.get("/admin/plugins/explorer/schema.json", () => {
return helper.response({
anonymous_users: [
{
column_name: "id",
data_type: "serial",
primary: true,
},
{
column_name: "user_id",
data_type: "integer",
fkey_info: "users",
},
{
column_name: "master_user_id",
data_type: "integer",
fkey_info: "users",
},
{
column_name: "active",
data_type: "boolean",
},
{
column_name: "created_at",
data_type: "timestamp",
},
{
column_name: "updated_at",
data_type: "timestamp",
},
],
});
return helper.response([]);
});

server.get("/admin/plugins/explorer/queries", () => {
Expand Down
123 changes: 49 additions & 74 deletions test/javascripts/acceptance/param-input-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,82 +8,11 @@ acceptance("Data Explorer Plugin | Param Input", function (needs) {

needs.pretender((server, helper) => {
server.get("/admin/plugins/explorer/groups.json", () => {
return helper.response([
{
id: 1,
name: "admins",
},
{
id: 2,
name: "moderators",
},
{
id: 3,
name: "staff",
},
{
id: 0,
name: "everyone",
},
{
id: 10,
name: "trust_level_0",
},
{
id: 11,
name: "trust_level_1",
},
{
id: 12,
name: "trust_level_2",
},
{
id: 13,
name: "trust_level_3",
},
{
id: 14,
name: "trust_level_4",
},
{
id: 41,
name: "discourse",
},
]);
return helper.response([]);
});

server.get("/admin/plugins/explorer/schema.json", () => {
return helper.response({
anonymous_users: [
{
column_name: "id",
data_type: "serial",
primary: true,
},
{
column_name: "user_id",
data_type: "integer",
fkey_info: "users",
},
{
column_name: "master_user_id",
data_type: "integer",
fkey_info: "users",
},
{
column_name: "active",
data_type: "boolean",
},
{
column_name: "created_at",
data_type: "timestamp",
},
{
column_name: "updated_at",
data_type: "timestamp",
},
],
});
return helper.response({});
});

server.get("/admin/plugins/explorer/queries", () => {
Expand Down Expand Up @@ -373,6 +302,35 @@ acceptance("Data Explorer Plugin | Param Input", function (needs) {
},
});
});

server.get("/admin/plugins/explorer/queries/4", () => {
return helper.response({
query: {
id: 4,
sql: "-- [params]\n-- null category_id :category\n\nSELECT 1",
name: "Params test - category_id chooser",
description: "Test for category_id param.",
param_info: [
{
identifier: "category",
type: "category_id",
default: null,
nullable: true,
},
],
created_at: "2025-06-03T09:05:59.337Z",
username: "system",
group_ids: [],
last_run_at: "2025-06-03T09:05:59.337Z",
hidden: false,
category_id: null,
},
});
});

server.post("/admin/plugins/explorer/queries/4/run", () => {
return helper.response({});
});
});

test("puts params for the query into the url", async function (assert) {
Expand Down Expand Up @@ -421,12 +379,29 @@ acceptance("Data Explorer Plugin | Param Input", function (needs) {
await visit("/admin/plugins/explorer/queries/3");
assert.dom(".query-params input").doesNotExist();
await click(".query-edit .btn-edit-query");
await click(".query-editor .ace_text-input");
await fillIn(
".query-editor .ace_text-input",
"-- [params]\n-- int :months_ago = 1\n\nSELECT 1"
);
await click(".query-editor .ace_text-input"); // enables `Save Changes` button
await click(".query-edit .btn-save-query");
assert.dom(".query-params input").exists();
});

test("nullable category_id param: puts params for the query into the url", async function (assert) {
const selectedCategory = { id: "6", name: "support" };

await visit("/admin/plugins/explorer/queries/4");
assert.dom(".select-kit-selected-name").hasText("(no category)");

await click(".select-kit-selected-name");
await click(".category-row.select-kit-row:first-of-type");
assert.dom(".select-kit-selected-name").hasText(selectedCategory.name);

await click("form.query-run button");

const searchParams = new URLSearchParams(currentURL().split("?")[1]);
const categoryIdParam = JSON.parse(searchParams.get("params")).category;
assert.strictEqual(categoryIdParam, selectedCategory.id);
});
});