diff --git a/client/src/components/Tool/ToolCard.test.js b/client/src/components/Tool/ToolCard.test.js index 9c1e043746d..b9e0607ba2b 100644 --- a/client/src/components/Tool/ToolCard.test.js +++ b/client/src/components/Tool/ToolCard.test.js @@ -47,8 +47,10 @@ describe("ToolCard", () => { expect(dropdownHeader.attributes("title")).toBe("Options"); const dropdownItems = wrapper.findAll(".dropdown-item"); expect(dropdownItems.length).toBe(4); + const backdrop = wrapper.findAll(".portlet-backdrop"); + expect(backdrop.length).toBe(0); await wrapper.setProps({ disabled: true }); - const iconSpinner = wrapper.find(".portlet-title-icon"); - expect(iconSpinner.classes()).toContain("fa-spin"); + const backdropActive = wrapper.findAll(".portlet-backdrop"); + expect(backdropActive.length).toBe(1); }); }); diff --git a/client/src/components/Tool/ToolCard.vue b/client/src/components/Tool/ToolCard.vue index c39cbb66a55..fe675d9eab7 100644 --- a/client/src/components/Tool/ToolCard.vue +++ b/client/src/components/Tool/ToolCard.vue @@ -80,8 +80,7 @@
- - + {{ title }} {{ description }} (Galaxy Version {{ version }}) @@ -119,9 +118,8 @@ import Webhooks from "mvc/webhooks"; import { addFavorite, removeFavorite } from "components/Tool/services"; import { FontAwesomeIcon } from "@fortawesome/vue-fontawesome"; import { library } from "@fortawesome/fontawesome-svg-core"; -import { faSpinner, faWrench } from "@fortawesome/free-solid-svg-icons"; +import { faWrench } from "@fortawesome/free-solid-svg-icons"; -library.add(faSpinner); library.add(faWrench); export default { diff --git a/client/src/components/Tool/ToolFooter.test.js b/client/src/components/Tool/ToolFooter.test.js new file mode 100644 index 00000000000..971cd5f421c --- /dev/null +++ b/client/src/components/Tool/ToolFooter.test.js @@ -0,0 +1,57 @@ +import axios from "axios"; +import MockAdapter from "axios-mock-adapter"; +import { mount } from "@vue/test-utils"; +import { getLocalVue } from "jest/helpers"; +import flushPromises from "flush-promises"; +import ToolFooter from "./ToolFooter"; + +const localVue = getLocalVue(); + +const citationsA = [{ format: "bibtex", content: "@misc{entry_a, year = {1111}}" }]; +const citationsB = [{ format: "bibtex", content: "@misc{entry_b, year = {2222}}" }]; + +describe("ToolFooter", () => { + let wrapper; + let axiosMock; + + beforeEach(() => { + axiosMock = new MockAdapter(axios); + axiosMock.onGet(`/api/tools/tool_a/citations`).reply(200, citationsA); + axiosMock.onGet(`/api/tools/tool_b/citations`).reply(200, citationsB); + + wrapper = mount(ToolFooter, { + propsData: { + id: "tool_a", + hasCitations: true, + xrefs: [], + license: "tool_license", + creators: [], + requirements: [], + }, + localVue, + stubs: { + Citation: false, + License: true, + Creators: true, + FontAwesomeIcon: true, + }, + }); + }); + + afterEach(() => { + axiosMock.restore(); + axiosMock.reset(); + }); + + it("check props", async () => { + await flushPromises(); + const referenceA = wrapper.find(".formatted-reference .csl-entry"); + expect(referenceA.attributes()["data-csl-entry-id"]).toBe("entry_a"); + expect(referenceA.text()).toContain("1111"); + wrapper.setProps({ id: "tool_b" }); + await flushPromises(); + const referenceB = wrapper.find(".formatted-reference .csl-entry"); + expect(referenceB.attributes()["data-csl-entry-id"]).toBe("entry_b"); + expect(referenceB.text()).toContain("2222"); + }); +}); diff --git a/client/src/components/Tool/ToolFooter.vue b/client/src/components/Tool/ToolFooter.vue index 991b9788be3..c4ecbde5041 100644 --- a/client/src/components/Tool/ToolFooter.vue +++ b/client/src/components/Tool/ToolFooter.vue @@ -133,18 +133,26 @@ export default { citations: [], }; }, + watch: { + id() { + this.loadCitations(); + }, + }, created() { - if (this.hasCitations) { - getCitations("tools", this.id) - .then((citations) => { - this.citations = citations; - }) - .catch((e) => { - console.error(e); - }); - } + this.loadCitations(); }, methods: { + loadCitations() { + if (this.hasCitations) { + getCitations("tools", this.id) + .then((citations) => { + this.citations = citations; + }) + .catch((e) => { + console.error(e); + }); + } + }, copyBibtex() { var text = ""; this.citations.forEach((citation) => { diff --git a/client/src/components/Workflow/Editor/Index.vue b/client/src/components/Workflow/Editor/Index.vue index e73139f019f..fc59880a8c2 100644 --- a/client/src/components/Workflow/Editor/Index.vue +++ b/client/src/components/Workflow/Editor/Index.vue @@ -175,6 +175,7 @@