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 @@