Koha/t/cypress/integration/Preservation/WaitingList.ts
Jonathan Druart f151895e08
Bug 35201: (bug 30708 follow-up) Fix Preservation tests
We didn't mock the config given the last changes

Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
2023-10-31 16:45:51 -03:00

137 lines
4.5 KiB
TypeScript

import { mount } from "@cypress/vue";
function get_items() {
// This is not a full item but it contains the info we are using
return [
{
biblio: {
biblio_id: 1,
title: "a biblio title",
},
external_id: "bc_1",
item_id: 1,
},
{
biblio: {
biblio_id: 2,
title: "yet another biblio title",
},
external_id: "bc_3",
item_id: 3,
},
];
}
let config = {
permissions: { manage_sysprefs: "1" },
settings: {
enabled: "1",
not_for_loan_default_train_in: "42",
not_for_loan_waiting_list_in: "24",
},
};
describe("WaitingList", () => {
beforeEach(() => {
cy.login();
cy.title().should("eq", "Koha staff interface");
cy.intercept(
"GET",
"/api/v1/preservation/config",
JSON.stringify(config)
);
});
it("List", () => {
config.settings.not_for_loan_waiting_list_in = "";
cy.intercept(
"GET",
"/api/v1/preservation/config",
JSON.stringify(config)
);
cy.visit("/cgi-bin/koha/preservation/home.pl");
cy.intercept("GET", "/api/v1/preservation/waiting-list/items*", []);
cy.get("#navmenulist").contains("Waiting list").click();
cy.get("#waiting-list").contains(
"You need to configure this module first."
);
config.settings.not_for_loan_waiting_list_in = "42";
cy.intercept(
"GET",
"/api/v1/preservation/config",
JSON.stringify(config)
);
cy.visit("/cgi-bin/koha/preservation/home.pl");
cy.intercept("GET", "/api/v1/preservation/waiting-list/items*", []);
cy.get("#navmenulist").contains("Waiting list").click();
cy.get("#waiting-list").contains(
"There are no items in the waiting list"
);
});
it("Add to waiting list", () => {
cy.intercept("GET", "/api/v1/preservation/waiting-list/items*", []);
cy.visit("/cgi-bin/koha/preservation/waiting-list");
cy.intercept("POST", "/api/v1/preservation/waiting-list/items", {
statusCode: 500,
});
cy.get("#waiting-list").contains("Add to waiting list").click();
cy.get("#barcode_list").type("bc_1\nbc_2\nbc_3");
cy.contains("Submit").click();
cy.get("main div[class='dialog alert']").contains(
"Something went wrong: Error: Internal Server Error"
);
cy.intercept("GET", "/api/v1/preservation/waiting-list/items*", {
statusCode: 200,
body: get_items(),
headers: {
"X-Base-Total-Count": "2",
"X-Total-Count": "2",
},
}).as("get-items");
cy.intercept("POST", "/api/v1/preservation/waiting-list/items", [
{ item_id: 1 },
{ item_id: 3 },
]);
cy.get("#waiting-list").contains("Add to waiting list").click();
cy.get("#barcode_list").type("bc_1\nbc_2\nbc_3");
cy.contains("Submit").click();
cy.wait("@get-items");
cy.get("main div[class='dialog message']").contains(
"2 new items added."
);
});
it("Remove item from waiting list", () => {
cy.intercept("GET", "/api/v1/preservation/waiting-list/items*", {
statusCode: 200,
body: get_items(),
headers: {
"X-Base-Total-Count": "2",
"X-Total-Count": "2",
},
}); //.as("get-items")
cy.visit("/cgi-bin/koha/preservation/waiting-list");
// Submit the form, get 500
cy.intercept("DELETE", "/api/v1/preservation/waiting-list/items/*", {
statusCode: 500,
});
cy.get("#waiting-list table tbody tr:first").contains("Remove").click();
cy.contains("Yes, remove").click();
cy.get("main div[class='dialog alert']").contains(
"Something went wrong: Error: Internal Server Error"
);
// Submit the form, success!
cy.intercept("DELETE", "/api/v1/preservation/waiting-list/items/*", {
statusCode: 204,
body: null,
});
cy.get("#waiting-list table tbody tr:first").contains("Remove").click();
cy.contains("Yes, remove").click();
cy.get("main div[class='dialog message']").contains(
`Item removed from the waiting list`
);
});
});