Loading client/src/components/ActivityBar/ActivitySettings.test.js +9 −1 Original line number Diff line number Diff line Loading @@ -4,6 +4,7 @@ import { PiniaVuePlugin } from "pinia"; import { getLocalVue } from "tests/jest/helpers"; import { nextTick } from "vue"; import { useServerMock } from "@/api/client/__mocks__"; import { defaultActivities } from "@/stores/activitySetup"; import { useActivityStore } from "@/stores/activityStore"; Loading @@ -12,6 +13,7 @@ import mountTarget from "./ActivitySettings.vue"; const localVue = getLocalVue(); localVue.use(PiniaVuePlugin); const { server, http } = useServerMock(); const activityItemSelector = ".activity-settings-item"; function testActivity(id, newOptions = {}) { Loading Loading @@ -41,6 +43,12 @@ describe("ActivitySettings", () => { beforeEach(async () => { const pinia = createTestingPinia({ stubActions: false }); // Mock the response of the API call server.use( http.get("/api/unprivileged_tools", ({ params, query, response }) => { return response("4XX").json({ err_code: 400, err_msg: "permission problem" }, { status: 403 }); }) ); activityStore = useActivityStore(undefined); wrapper = mount(mountTarget, { localVue, Loading @@ -58,7 +66,7 @@ describe("ActivitySettings", () => { it("availability of built-in activities", async () => { const items = wrapper.findAll(activityItemSelector); const nOptional = defaultActivities.filter((x) => x.optional).length; const nOptional = defaultActivities.filter((x) => x.optional).length - 1; // 403 for unprivileged_tools excludes user-defined-tools activity expect(items.length).toBe(nOptional); }); Loading client/src/components/ActivityBar/ActivitySettings.vue +10 −1 Original line number Diff line number Diff line Loading @@ -2,11 +2,13 @@ import { faStar as faStarRegular } from "@fortawesome/free-regular-svg-icons"; import { faStar, faTrash } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/vue-fontawesome"; import { storeToRefs } from "pinia"; import { computed, type ComputedRef } from "vue"; import { useRouter } from "vue-router/composables"; import { useActivityStore } from "@/stores/activityStore"; import type { Activity } from "@/stores/activityStoreTypes"; import { useUnprivilegedToolStore } from "@/stores/unprivilegedToolStore"; import GButton from "@/components/BaseComponents/GButton.vue"; Loading @@ -21,7 +23,14 @@ const emit = defineEmits<{ const activityStore = useActivityStore(props.activityBarId); const optionalActivities = computed(() => activityStore.activities.filter((a) => a.optional)); const unprivilegedToolStore = useUnprivilegedToolStore(); const { canUseUnprivilegedTools } = storeToRefs(unprivilegedToolStore); const optionalActivities = computed(() => { return activityStore.activities.filter( (a) => (a.optional && a.id !== "user-defined-tools") || canUseUnprivilegedTools.value ); }); const filteredActivities = computed(() => { if (props.query?.length > 0) { Loading Loading
client/src/components/ActivityBar/ActivitySettings.test.js +9 −1 Original line number Diff line number Diff line Loading @@ -4,6 +4,7 @@ import { PiniaVuePlugin } from "pinia"; import { getLocalVue } from "tests/jest/helpers"; import { nextTick } from "vue"; import { useServerMock } from "@/api/client/__mocks__"; import { defaultActivities } from "@/stores/activitySetup"; import { useActivityStore } from "@/stores/activityStore"; Loading @@ -12,6 +13,7 @@ import mountTarget from "./ActivitySettings.vue"; const localVue = getLocalVue(); localVue.use(PiniaVuePlugin); const { server, http } = useServerMock(); const activityItemSelector = ".activity-settings-item"; function testActivity(id, newOptions = {}) { Loading Loading @@ -41,6 +43,12 @@ describe("ActivitySettings", () => { beforeEach(async () => { const pinia = createTestingPinia({ stubActions: false }); // Mock the response of the API call server.use( http.get("/api/unprivileged_tools", ({ params, query, response }) => { return response("4XX").json({ err_code: 400, err_msg: "permission problem" }, { status: 403 }); }) ); activityStore = useActivityStore(undefined); wrapper = mount(mountTarget, { localVue, Loading @@ -58,7 +66,7 @@ describe("ActivitySettings", () => { it("availability of built-in activities", async () => { const items = wrapper.findAll(activityItemSelector); const nOptional = defaultActivities.filter((x) => x.optional).length; const nOptional = defaultActivities.filter((x) => x.optional).length - 1; // 403 for unprivileged_tools excludes user-defined-tools activity expect(items.length).toBe(nOptional); }); Loading
client/src/components/ActivityBar/ActivitySettings.vue +10 −1 Original line number Diff line number Diff line Loading @@ -2,11 +2,13 @@ import { faStar as faStarRegular } from "@fortawesome/free-regular-svg-icons"; import { faStar, faTrash } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/vue-fontawesome"; import { storeToRefs } from "pinia"; import { computed, type ComputedRef } from "vue"; import { useRouter } from "vue-router/composables"; import { useActivityStore } from "@/stores/activityStore"; import type { Activity } from "@/stores/activityStoreTypes"; import { useUnprivilegedToolStore } from "@/stores/unprivilegedToolStore"; import GButton from "@/components/BaseComponents/GButton.vue"; Loading @@ -21,7 +23,14 @@ const emit = defineEmits<{ const activityStore = useActivityStore(props.activityBarId); const optionalActivities = computed(() => activityStore.activities.filter((a) => a.optional)); const unprivilegedToolStore = useUnprivilegedToolStore(); const { canUseUnprivilegedTools } = storeToRefs(unprivilegedToolStore); const optionalActivities = computed(() => { return activityStore.activities.filter( (a) => (a.optional && a.id !== "user-defined-tools") || canUseUnprivilegedTools.value ); }); const filteredActivities = computed(() => { if (props.query?.length > 0) { Loading