Bug 32030: Fix tests
Signed-off-by: Jonathan Field <jonathan.field@ptfs-europe.com> Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com> Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com> Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
This commit is contained in:
parent
08ce593bd9
commit
72b73e0a5b
|
|
@ -34,6 +34,7 @@ function get_agreement() {
|
|||
},
|
||||
],
|
||||
user_roles: [],
|
||||
agreement_licenses: [],
|
||||
};
|
||||
}
|
||||
|
||||
|
|
@ -45,17 +46,20 @@ describe("Agreement CRUD operations", () => {
|
|||
|
||||
it("List agreements", () => {
|
||||
// GET agreements returns 500
|
||||
cy.intercept("GET", "/api/v1/erm/agreements*", {
|
||||
cy.intercept("GET", "/api/v1/erm/agreements", {
|
||||
statusCode: 500,
|
||||
error: "Something went wrong",
|
||||
});
|
||||
cy.visit("/cgi-bin/koha/erm/agreements.pl");
|
||||
cy.get("#agreements").contains("Something went wrong");
|
||||
cy.visit("/cgi-bin/koha/erm/erm.pl");
|
||||
cy.get("#navmenulist").contains("Agreements").click();
|
||||
cy.get("main div[class='dialog alert']").contains(
|
||||
/Something went wrong/
|
||||
);
|
||||
|
||||
// GET agreements returns empty list
|
||||
cy.intercept("GET", "/api/v1/erm/agreements*", []);
|
||||
cy.visit("/cgi-bin/koha/erm/agreements.pl");
|
||||
cy.get("#agreements").contains("There are no agreements defined.");
|
||||
cy.visit("/cgi-bin/koha/erm/agreements");
|
||||
cy.get("#agreements_list").contains("There are no agreements defined.");
|
||||
|
||||
// GET agreements returns something
|
||||
let agreement = get_agreement();
|
||||
|
|
@ -70,30 +74,39 @@ describe("Agreement CRUD operations", () => {
|
|||
},
|
||||
});
|
||||
cy.intercept("GET", "/api/v1/erm/agreements/*", agreement);
|
||||
cy.visit("/cgi-bin/koha/erm/agreements.pl");
|
||||
cy.get("#agreements").contains("Showing 1 to 1 of 1 entries");
|
||||
cy.visit("/cgi-bin/koha/erm/agreements");
|
||||
cy.get("#agreements_list").contains("Showing 1 to 1 of 1 entries");
|
||||
});
|
||||
|
||||
it ("Add agreement", () => {
|
||||
it("Add agreement", () => {
|
||||
// Click the button in the toolbar
|
||||
cy.visit("/cgi-bin/koha/erm/agreements.pl");
|
||||
cy.visit("/cgi-bin/koha/erm/agreements");
|
||||
cy.contains("New agreement").click();
|
||||
cy.get("#agreements h2").contains("New agreement");
|
||||
cy.get("#agreements_add h2").contains("New agreement");
|
||||
|
||||
// Fill in the form for normal attributes
|
||||
let agreement = get_agreement();
|
||||
|
||||
cy.get("#agreements").contains("Submit").click();
|
||||
cy.get("input:invalid,textarea:invalid,select:invalid").should("have.length", 3);
|
||||
cy.get("#agreements_add").contains("Submit").click();
|
||||
cy.get("input:invalid,textarea:invalid,select:invalid").should(
|
||||
"have.length",
|
||||
3
|
||||
);
|
||||
cy.get("#agreement_name").type(agreement.name);
|
||||
cy.get("#agreement_description").type(agreement.description);
|
||||
cy.get("#agreements").contains("Submit").click();
|
||||
cy.get("input:invalid,textarea:invalid,select:invalid").should("have.length", 1); // name, description, status
|
||||
cy.get("#agreements_add").contains("Submit").click();
|
||||
cy.get("input:invalid,textarea:invalid,select:invalid").should(
|
||||
"have.length",
|
||||
1
|
||||
); // name, description, status
|
||||
cy.get("#agreement_status").select(agreement.status);
|
||||
|
||||
cy.contains("Add new period").click();
|
||||
cy.get("#agreements").contains("Submit").click();
|
||||
cy.get("input:invalid,textarea:invalid,select:invalid").should("have.length", 1); // Start date
|
||||
cy.get("#agreements_add").contains("Submit").click();
|
||||
cy.get("input:invalid,textarea:invalid,select:invalid").should(
|
||||
"have.length",
|
||||
1
|
||||
); // Start date
|
||||
|
||||
// Add new periods
|
||||
cy.contains("Add new period").click();
|
||||
|
|
@ -154,8 +167,8 @@ describe("Agreement CRUD operations", () => {
|
|||
statusCode: 500,
|
||||
error: "Something went wrong",
|
||||
});
|
||||
cy.get("#agreements").contains("Submit").click();
|
||||
cy.get("#agreements").contains(
|
||||
cy.get("#agreements_add").contains("Submit").click();
|
||||
cy.get("main div[class='dialog alert']").contains(
|
||||
"Something went wrong: Internal Server Error"
|
||||
);
|
||||
|
||||
|
|
@ -164,11 +177,13 @@ describe("Agreement CRUD operations", () => {
|
|||
statusCode: 201,
|
||||
body: agreement,
|
||||
});
|
||||
cy.get("#agreements").contains("Submit").click();
|
||||
cy.get("#agreements").contains("Agreement created");
|
||||
cy.get("#agreements_add").contains("Submit").click();
|
||||
cy.get("main div[class='dialog message']").contains(
|
||||
"Agreement created"
|
||||
);
|
||||
});
|
||||
|
||||
it ("Edit agreement", () => {
|
||||
it("Edit agreement", () => {
|
||||
let agreement = get_agreement();
|
||||
let agreements = [agreement];
|
||||
// Click the 'Edit' button from the list
|
||||
|
|
@ -180,12 +195,16 @@ describe("Agreement CRUD operations", () => {
|
|||
"X-Total-Count": "1",
|
||||
},
|
||||
});
|
||||
cy.intercept("GET", "/api/v1/erm/agreements/*", agreement).as("get-agreement");
|
||||
cy.visit("/cgi-bin/koha/erm/agreements.pl");
|
||||
cy.get("#agreements table tbody tr:first").contains("Edit").click();
|
||||
cy.intercept("GET", "/api/v1/erm/agreements/*", agreement).as(
|
||||
"get-agreement"
|
||||
);
|
||||
cy.visit("/cgi-bin/koha/erm/agreements");
|
||||
cy.get("#agreements_list table tbody tr:first")
|
||||
.contains("Edit")
|
||||
.click();
|
||||
cy.wait("@get-agreement");
|
||||
cy.wait(500); // Cypress is too fast! Vue hasn't populated the form yet!
|
||||
cy.get("#agreements h2").contains("Edit agreement");
|
||||
cy.get("#agreements_add h2").contains("Edit agreement");
|
||||
|
||||
// Form has been correctly filled in
|
||||
cy.get("#agreement_name").should("have.value", agreements[0].name);
|
||||
|
|
@ -211,8 +230,8 @@ describe("Agreement CRUD operations", () => {
|
|||
statusCode: 500,
|
||||
error: "Something went wrong",
|
||||
});
|
||||
cy.get("#agreements").contains("Submit").click();
|
||||
cy.get("#agreements").contains(
|
||||
cy.get("#agreements_add").contains("Submit").click();
|
||||
cy.get("main div[class='dialog alert']").contains(
|
||||
"Something went wrong: Internal Server Error"
|
||||
);
|
||||
|
||||
|
|
@ -221,11 +240,13 @@ describe("Agreement CRUD operations", () => {
|
|||
statusCode: 200,
|
||||
body: agreement,
|
||||
});
|
||||
cy.get("#agreements").contains("Submit").click();
|
||||
cy.get("#agreements").contains("Agreement updated");
|
||||
cy.get("#agreements_add").contains("Submit").click();
|
||||
cy.get("main div[class='dialog message']").contains(
|
||||
"Agreement updated"
|
||||
);
|
||||
});
|
||||
|
||||
it ("Show agreement", () => {
|
||||
it("Show agreement", () => {
|
||||
let agreement = get_agreement();
|
||||
let agreements = [agreement];
|
||||
// Click the "name" link from the list
|
||||
|
|
@ -237,14 +258,23 @@ describe("Agreement CRUD operations", () => {
|
|||
"X-Total-Count": "1",
|
||||
},
|
||||
});
|
||||
cy.intercept("GET", "/api/v1/erm/agreements/*", agreement).as("get-agreement");
|
||||
cy.visit("/cgi-bin/koha/erm/agreements.pl");
|
||||
let name_link = cy.get("#agreements table tbody tr:first td:first a");
|
||||
name_link.should("have.text", agreement.name + " (#" + agreement.agreement_id + ")");
|
||||
cy.intercept("GET", "/api/v1/erm/agreements/*", agreement).as(
|
||||
"get-agreement"
|
||||
);
|
||||
cy.visit("/cgi-bin/koha/erm/agreements");
|
||||
let name_link = cy.get(
|
||||
"#agreements_list table tbody tr:first td:first a"
|
||||
);
|
||||
name_link.should(
|
||||
"have.text",
|
||||
agreement.name + " (#" + agreement.agreement_id + ")"
|
||||
);
|
||||
name_link.click();
|
||||
cy.wait("@get-agreement");
|
||||
cy.wait(500); // Cypress is too fast! Vue hasn't populated the form yet!
|
||||
cy.get("#agreements h2").contains("Agreement #" + agreement.agreement_id);
|
||||
cy.get("#agreements_show h2").contains(
|
||||
"Agreement #" + agreement.agreement_id
|
||||
);
|
||||
|
||||
// TODO There are more to test here:
|
||||
// Dates correctly formatted
|
||||
|
|
@ -252,7 +282,7 @@ describe("Agreement CRUD operations", () => {
|
|||
// AV's libs displayed
|
||||
// Tables for periods and users
|
||||
});
|
||||
it ("Delete agreement", () => {
|
||||
it("Delete agreement", () => {
|
||||
let agreement = get_agreement();
|
||||
let agreements = [agreement];
|
||||
|
||||
|
|
@ -266,10 +296,12 @@ describe("Agreement CRUD operations", () => {
|
|||
},
|
||||
});
|
||||
cy.intercept("GET", "/api/v1/erm/agreements/*", agreement);
|
||||
cy.visit("/cgi-bin/koha/erm/agreements.pl");
|
||||
cy.visit("/cgi-bin/koha/erm/agreements");
|
||||
|
||||
cy.get("#agreements table tbody tr:first").contains("Delete").click();
|
||||
cy.get("#agreements h2").contains("Delete agreement");
|
||||
cy.get("#agreements_list table tbody tr:first")
|
||||
.contains("Delete")
|
||||
.click();
|
||||
cy.get("#agreements_confirm_delete h2").contains("Delete agreement");
|
||||
cy.contains("Agreement name: " + agreement.name);
|
||||
|
||||
// Submit the form, get 500
|
||||
|
|
@ -278,7 +310,7 @@ describe("Agreement CRUD operations", () => {
|
|||
error: "Something went wrong",
|
||||
});
|
||||
cy.contains("Yes, delete").click();
|
||||
cy.get("#agreements").contains(
|
||||
cy.get("main div[class='dialog alert']").contains(
|
||||
"Something went wrong: Internal Server Error"
|
||||
);
|
||||
|
||||
|
|
@ -288,6 +320,8 @@ describe("Agreement CRUD operations", () => {
|
|||
body: null,
|
||||
});
|
||||
cy.contains("Yes, delete").click();
|
||||
cy.get("#agreements").contains("Agreement deleted");
|
||||
cy.get("main div[class='dialog message']").contains(
|
||||
"Agreement deleted"
|
||||
);
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
<fieldset class="rows" id="agreement_licenses">
|
||||
<legend>Licenses</legend>
|
||||
<fieldset
|
||||
:id="`agreement_license_${counter}`"
|
||||
class="rows"
|
||||
v-for="(agreement_license, counter) in agreement_licenses"
|
||||
v-bind:key="counter"
|
||||
|
|
@ -115,8 +116,8 @@ export default {
|
|||
av_agreement_license_location: Array,
|
||||
agreement_licenses: Array,
|
||||
},
|
||||
beforeCreate(){
|
||||
fetchLicenses().then((licenses) => this.licenses = licenses )
|
||||
beforeCreate() {
|
||||
fetchLicenses().then((licenses) => this.licenses = licenses)
|
||||
},
|
||||
methods: {
|
||||
addLicense() {
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
<template>
|
||||
<div v-if="!this.initialized">Loading...</div>
|
||||
<div v-else>
|
||||
<div v-else id="agreements_add">
|
||||
<h2 v-if="agreement.agreement_id">
|
||||
Edit agreement #{{ agreement.agreement_id }}
|
||||
</h2>
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
<template>
|
||||
<div v-if="!this.initialized">Loading...</div>
|
||||
<div v-else>
|
||||
<div v-else id="agreements_confirm_delete">
|
||||
<h2>Delete agreement</h2>
|
||||
<div>
|
||||
<form @submit="onSubmit($event)">
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
<template>
|
||||
<div v-if="!this.initialized">Loading...</div>
|
||||
<div v-else>
|
||||
<div v-else-if="this.agreements" id="agreements_list">
|
||||
<Toolbar />
|
||||
<table v-if="agreements.length" id="agreement_list"></table>
|
||||
<table v-if="this.agreements.length" id="agreement_list"></table>
|
||||
<div v-else-if="this.initialized" class="dialog message">
|
||||
There are no agreements defined.
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
<template>
|
||||
<div v-if="!this.initialized">Loading...</div>
|
||||
<div v-else>
|
||||
<div v-else id="agreements_show">
|
||||
<h2>Agreement #{{ agreement.agreement_id }}</h2>
|
||||
<div>
|
||||
<fieldset class="rows">
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
<template>
|
||||
<div v-if="!this.initialized">Loading...</div>
|
||||
<div v-else>
|
||||
<div v-else id="licenses_add">
|
||||
<h2 v-if="license.license_id">
|
||||
Edit license #{{ license.license_id }}
|
||||
</h2>
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
<template>
|
||||
<div v-if="!this.initialized">Loading...</div>
|
||||
<div v-else>
|
||||
<div v-else id="licenses_confirm_delete">
|
||||
<h2>Delete license</h2>
|
||||
<div>
|
||||
<form @submit="onSubmit($event)">
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
<template>
|
||||
<div v-if="!this.initialized">Loading...</div>
|
||||
<div v-else>
|
||||
<div v-else-if="this.licenses" id="licenses_list">
|
||||
<Toolbar />
|
||||
<table v-if="licenses.length" id="license_list"></table>
|
||||
<div v-else-if="this.initialized" class="dialog message">
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
<template>
|
||||
<div v-if="!this.initialized">Loading...</div>
|
||||
<div v-else>
|
||||
<div v-else id="licenses_show">
|
||||
<h2>License #{{ license.license_id }}</h2>
|
||||
<div>
|
||||
<fieldset class="rows">
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@ const breadcrumbs = {
|
|||
licenses: { text: "Licenses", path: "/cgi-bin/koha/erm/licenses" },
|
||||
};
|
||||
export const routes = [
|
||||
{ path: "/cgi-bin/koha/mainpage.pl" },
|
||||
{
|
||||
path: "/cgi-bin/koha/erm/erm.pl",
|
||||
component: ERMHome,
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ export const useMainStore = defineStore("main", {
|
|||
this.displayed_already = false;
|
||||
},
|
||||
setError(error) {
|
||||
this.error = "Something went wrong: " + error;
|
||||
this.error = error;
|
||||
this.message = null;
|
||||
this.displayed_already = false;
|
||||
},
|
||||
|
|
|
|||
|
|
@ -110,7 +110,7 @@ subtest 'list() tests' => sub {
|
|||
|
||||
subtest 'get() tests' => sub {
|
||||
|
||||
plan tests => 8;
|
||||
plan tests => 14;
|
||||
|
||||
$schema->storage->txn_begin;
|
||||
|
||||
|
|
@ -140,6 +140,14 @@ subtest 'get() tests' => sub {
|
|||
. $agreement->agreement_id )->status_is(200)
|
||||
->json_is( $agreement->to_api );
|
||||
|
||||
$t->get_ok( "//$userid:$password@/api/v1/erm/agreements/"
|
||||
. $agreement->agreement_id => {'x-koha-embed' => 'periods,user_roles,agreement_licenses'} )->status_is(200)
|
||||
->json_is( { %{ $agreement->to_api }, periods => [], user_roles => [], agreement_licenses => [] });
|
||||
|
||||
$t->get_ok( "//$userid:$password@/api/v1/erm/agreements/"
|
||||
. $agreement->agreement_id => {'x-koha-embed' => 'periods,user_roles,user_roles.patron,agreement_licenses,agreement_licenses.license'} )->status_is(200)
|
||||
->json_is( { %{ $agreement->to_api }, periods => [], user_roles => [], agreement_licenses => [] });
|
||||
|
||||
$t->get_ok( "//$unauth_userid:$password@/api/v1/erm/agreements/"
|
||||
. $agreement->agreement_id )->status_is(403);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue