View | Details | Raw Unified | Return to bug 39320
Collapse All | Expand All

(-)a/t/cypress/integration/ERM/ModuleDashboard_spec.ts (-1 / +360 lines)
Line 0 Link Here
0
- 
1
describe("ERM Module Dashboard", () => {
2
    beforeEach(() => {
3
        cy.login();
4
        cy.title().should("eq", "Koha staff interface");
5
        cy.intercept(
6
            "GET",
7
            "/api/v1/erm/config",
8
            '{"settings":{"ERMModule":"1","ERMProviders":["local"]}}'
9
        );
10
    });
11
12
    it("Counts", () => {
13
        cy.intercept("GET", "/api/v1/erm/counts", {
14
            counts: {
15
                agreements_count: 1,
16
                documents_count: 0,
17
                eholdings_packages_count: 0,
18
                eholdings_titles_count: 0,
19
                licenses_count: 5,
20
                usage_data_providers_count: 1,
21
            },
22
        }).as("getCounts");
23
        cy.visit("/cgi-bin/koha/erm/erm.pl");
24
25
        //Display
26
        cy.get(".widget#ERMCounts .widget-content").should(
27
            "contain",
28
            "Loading..."
29
        );
30
        cy.wait("@getCounts");
31
        cy.get(".widget#ERMCounts .widget-content").contains(
32
            "There are 1 agreement, 5 licenses, 0 documents, 0 local packages, 0 local titles, 1 usage data provider."
33
        );
34
35
        //Move
36
        cy.get(
37
            ".dashboard-left-col .widget#ERMCounts .widget-header #dropdownMenuButton"
38
        ).click();
39
        cy.get(
40
            ".dashboard-left-col .widget#ERMCounts .widget-header .move-right"
41
        ).click();
42
        cy.get(".dashboard-left-col .widget#ERMCounts").should("not.exist");
43
        cy.get(".dashboard-right-col .dragArea")
44
            .children()
45
            .first()
46
            .should("have.id", "ERMCounts");
47
48
        //Remove
49
        cy.get(
50
            ".dashboard-right-col .widget#ERMCounts .widget-header #dropdownMenuButton"
51
        ).click();
52
        cy.get(
53
            ".dashboard-right-col .widget#ERMCounts .widget-header .remove-widget"
54
        ).click();
55
        cy.get(".dashboard-right-col .widget#ERMCounts").should("not.exist");
56
57
        //Add
58
        cy.get("#dashboard-header #open-widget-picker").click();
59
        cy.get(".modal #ERMCounts .add-widget").click();
60
        cy.get(".modal .modal-footer button").contains("Close").click();
61
        cy.get(".dashboard-left-col .dragArea")
62
            .children()
63
            .first()
64
            .should("have.id", "ERMCounts");
65
    });
66
67
    it("Run eUsage report", () => {
68
        cy.intercept("GET", "/api/v1/erm/default_usage_reports", []).as(
69
            "getReports"
70
        );
71
        cy.visit("/cgi-bin/koha/erm/erm.pl");
72
73
        //Display
74
        cy.get(".widget#ERMRunUsageReport .widget-content").should(
75
            "contain",
76
            "Loading..."
77
        );
78
        cy.wait("@getReports");
79
        cy.get(".widget#ERMRunUsageReport .widget-content").should(
80
            "contain",
81
            "No saved eUsage reports are available to run."
82
        );
83
        cy.get(".widget#ERMRunUsageReport .widget-content")
84
            .find("a")
85
            .should("have.attr", "href", "/cgi-bin/koha/erm/eusage/reports")
86
            .contains("Create a report");
87
88
        let reports = [
89
            {
90
                erm_default_usage_report_id: 3,
91
                report_name: "new",
92
                report_url_params:
93
                    '{"url":"/api/v1/erm/eUsage/monthly_report/database?q=[{\\"erm_usage_muses.year\\":2020,\\"erm_usage_muses.report_type\\":\\"DR\\",\\"erm_usage_muses.month\\":[1,2,3,4,5,6,7,8,9,10,11,12],\\"erm_usage_muses.metric_type\\":[\\"Searches_Automated\\",\\"Searches_Federated\\",\\"Searches_Regular\\",\\"Total_Item_Investigations\\",\\"Total_Item_Requests\\",\\"Unique_Item_Investigations\\",\\"Unique_Item_Requests\\",\\"Unique_Title_Investigations\\",\\"Unique_Title_Requests\\",\\"Limit_Exceeded\\",\\"No_License\\"]},{\\"erm_usage_muses.year\\":2021,\\"erm_usage_muses.report_type\\":\\"DR\\",\\"erm_usage_muses.month\\":[1,2,3,4,5,6,7,8,9,10,11,12],\\"erm_usage_muses.metric_type\\":[\\"Searches_Automated\\",\\"Searches_Federated\\",\\"Searches_Regular\\",\\"Total_Item_Investigations\\",\\"Total_Item_Requests\\",\\"Unique_Item_Investigations\\",\\"Unique_Item_Requests\\",\\"Unique_Title_Investigations\\",\\"Unique_Title_Requests\\",\\"Limit_Exceeded\\",\\"No_License\\"]},{\\"erm_usage_muses.year\\":2022,\\"erm_usage_muses.report_type\\":\\"DR\\",\\"erm_usage_muses.month\\":[1,2,3,4,5,6,7,8,9,10,11,12],\\"erm_usage_muses.metric_type\\":[\\"Searches_Automated\\",\\"Searches_Federated\\",\\"Searches_Regular\\",\\"Total_Item_Investigations\\",\\"Total_Item_Requests\\",\\"Unique_Item_Investigations\\",\\"Unique_Item_Requests\\",\\"Unique_Title_Investigations\\",\\"Unique_Title_Requests\\",\\"Limit_Exceeded\\",\\"No_License\\"]},{\\"erm_usage_muses.year\\":2023,\\"erm_usage_muses.report_type\\":\\"DR\\",\\"erm_usage_muses.month\\":[1,2,3,4,5,6,7,8,9,10,11,12],\\"erm_usage_muses.metric_type\\":[\\"Searches_Automated\\",\\"Searches_Federated\\",\\"Searches_Regular\\",\\"Total_Item_Investigations\\",\\"Total_Item_Requests\\",\\"Unique_Item_Investigations\\",\\"Unique_Item_Requests\\",\\"Unique_Title_Investigations\\",\\"Unique_Title_Requests\\",\\"Limit_Exceeded\\",\\"No_License\\"]}]","columns":[1],"queryObject":{"data_display":"monthly","report_type":"DR","metric_types":["Searches_Automated","Searches_Federated","Searches_Regular","Total_Item_Investigations","Total_Item_Requests","Unique_Item_Investigations","Unique_Item_Requests","Unique_Title_Investigations","Unique_Title_Requests","Limit_Exceeded","No_License"],"access_types":null,"usage_data_providers":null,"keywords":null,"start_month":null,"start_year":"2020","end_month":null,"end_year":"2023"},"yearly_filter":true,"type":"monthly","tp_columns":{"2020":[{"short":"Jan","description":"January","value":1,"active":true},{"short":"Feb","description":"February","value":2,"active":true},{"short":"Mar","description":"March","value":3,"active":true},{"short":"Apr","description":"April","value":4,"active":true},{"short":"May","description":"May","value":5,"active":true},{"short":"Jun","description":"June","value":6,"active":true},{"short":"Jul","description":"July","value":7,"active":true},{"short":"Aug","description":"August","value":8,"active":true},{"short":"Sep","description":"September","value":9,"active":true},{"short":"Oct","description":"October","value":10,"active":true},{"short":"Nov","description":"November","value":11,"active":true},{"short":"Dec","description":"December","value":12,"active":true}],"2021":[{"short":"Jan","description":"January","value":1,"active":true},{"short":"Feb","description":"February","value":2,"active":true},{"short":"Mar","description":"March","value":3,"active":true},{"short":"Apr","description":"April","value":4,"active":true},{"short":"May","description":"May","value":5,"active":true},{"short":"Jun","description":"June","value":6,"active":true},{"short":"Jul","description":"July","value":7,"active":true},{"short":"Aug","description":"August","value":8,"active":true},{"short":"Sep","description":"September","value":9,"active":true},{"short":"Oct","description":"October","value":10,"active":true},{"short":"Nov","description":"November","value":11,"active":true},{"short":"Dec","description":"December","value":12,"active":true}],"2022":[{"short":"Jan","description":"January","value":1,"active":true},{"short":"Feb","description":"February","value":2,"active":true},{"short":"Mar","description":"March","value":3,"active":true},{"short":"Apr","description":"April","value":4,"active":true},{"short":"May","description":"May","value":5,"active":true},{"short":"Jun","description":"June","value":6,"active":true},{"short":"Jul","description":"July","value":7,"active":true},{"short":"Aug","description":"August","value":8,"active":true},{"short":"Sep","description":"September","value":9,"active":true},{"short":"Oct","description":"October","value":10,"active":true},{"short":"Nov","description":"November","value":11,"active":true},{"short":"Dec","description":"December","value":12,"active":true}],"2023":[{"short":"Jan","description":"January","value":1,"active":true},{"short":"Feb","description":"February","value":2,"active":true},{"short":"Mar","description":"March","value":3,"active":true},{"short":"Apr","description":"April","value":4,"active":true},{"short":"May","description":"May","value":5,"active":true},{"short":"Jun","description":"June","value":6,"active":true},{"short":"Jul","description":"July","value":7,"active":true},{"short":"Aug","description":"August","value":8,"active":true},{"short":"Sep","description":"September","value":9,"active":true},{"short":"Oct","description":"October","value":10,"active":true},{"short":"Nov","description":"November","value":11,"active":true},{"short":"Dec","description":"December","value":12,"active":true}]}}',
94
            },
95
        ];
96
97
        cy.intercept("GET", "/api/v1/erm/default_usage_reports", reports).as(
98
            "getReports"
99
        );
100
        cy.visit("/cgi-bin/koha/erm/erm.pl");
101
102
        cy.get(".widget#ERMRunUsageReport .widget-content")
103
            .find(".v-select")
104
            .should("exist");
105
        cy.get(".widget#ERMRunUsageReport .widget-content")
106
            .find("button")
107
            .contains("Run")
108
            .should("be.disabled");
109
        cy.get(".widget#ERMRunUsageReport .widget-content .vs__search").type(
110
            "new{enter}",
111
            { force: true }
112
        );
113
        cy.get(
114
            ".widget#ERMRunUsageReport .widget-content .vs__selected"
115
        ).contains("new");
116
        cy.get(".widget#ERMRunUsageReport .widget-content")
117
            .find("button")
118
            .contains("Run")
119
            .should("not.be.disabled");
120
        cy.get(
121
            ".widget#ERMRunUsageReport .widget-content button.btn-primary"
122
        ).click();
123
        cy.url().should("match", /erm\/eusage\/reports\/viewer/);
124
125
        cy.intercept("GET", "/api/v1/erm/default_usage_reports", reports);
126
        cy.visit("/cgi-bin/koha/erm/erm.pl");
127
128
        //Move
129
        cy.get(
130
            ".dashboard-left-col .widget#ERMRunUsageReport .widget-header #dropdownMenuButton"
131
        ).click();
132
        cy.get(
133
            ".dashboard-left-col .widget#ERMRunUsageReport .widget-header .move-right"
134
        ).click();
135
        cy.get(".dashboard-left-col .widget#ERMRunUsageReport").should(
136
            "not.exist"
137
        );
138
        cy.get(".dashboard-right-col .dragArea")
139
            .children()
140
            .first()
141
            .should("have.id", "ERMRunUsageReport");
142
143
        //Remove
144
        cy.get(
145
            ".dashboard-right-col .widget#ERMRunUsageReport .widget-header #dropdownMenuButton"
146
        ).click();
147
        cy.get(
148
            ".dashboard-right-col .widget#ERMRunUsageReport .widget-header .remove-widget"
149
        ).click();
150
        cy.get(".dashboard-right-col .widget#ERMRunUsageReport").should(
151
            "not.exist"
152
        );
153
154
        //Add
155
        cy.get("#dashboard-header #open-widget-picker").click();
156
        cy.get(".modal #ERMRunUsageReport .add-widget").click();
157
        cy.get(".modal .modal-footer button").contains("Close").click();
158
        cy.get(".dashboard-left-col .dragArea")
159
            .children()
160
            .first()
161
            .should("have.id", "ERMRunUsageReport");
162
    });
163
164
    it("Licenses needing action", () => {
165
        cy.intercept("GET", "/api/v1/erm/licenses*", [cy.get_license()]).as(
166
            "getLicenses"
167
        );
168
        cy.visit("/cgi-bin/koha/erm/erm.pl");
169
170
        //Display
171
        cy.get(".widget#ERMLicensesNeedingAction .widget-content").should(
172
            "contain",
173
            "Loading..."
174
        );
175
        cy.wait("@getLicenses");
176
        cy.get(
177
            ".widget#ERMLicensesNeedingAction .widget-content table tbody tr:first"
178
        ).contains("license 1");
179
180
        //Settings
181
        cy.get(".widget#ERMLicensesNeedingAction .widget-settings").should(
182
            "not.exist"
183
        );
184
        cy.get(
185
            ".widget#ERMLicensesNeedingAction .widget-header #dropdownMenuButton"
186
        ).click();
187
        cy.get(
188
            ".widget#ERMLicensesNeedingAction .widget-header .toggle-settings"
189
        ).click();
190
        cy.get(".widget#ERMLicensesNeedingAction .widget-settings").should(
191
            "exist"
192
        );
193
        cy.get(".widget#ERMLicensesNeedingAction .widget-settings button")
194
            .contains("Close settings")
195
            .click();
196
        cy.get(".widget#ERMLicensesNeedingAction .widget-settings").should(
197
            "not.exist"
198
        );
199
200
        //Move
201
        cy.get(
202
            ".dashboard-right-col .widget#ERMLicensesNeedingAction .widget-header #dropdownMenuButton"
203
        ).click();
204
        cy.get(
205
            ".dashboard-right-col .widget#ERMLicensesNeedingAction .widget-header .move-left"
206
        ).click();
207
        cy.get(".dashboard-right-col .widget#ERMLicensesNeedingAction").should(
208
            "not.exist"
209
        );
210
        cy.get(".dashboard-left-col .dragArea")
211
            .children()
212
            .first()
213
            .should("have.id", "ERMLicensesNeedingAction");
214
215
        //Remove
216
        cy.get(
217
            ".dashboard-left-col .widget#ERMLicensesNeedingAction .widget-header #dropdownMenuButton"
218
        ).click();
219
        cy.get(
220
            ".dashboard-left-col .widget#ERMLicensesNeedingAction .widget-header .remove-widget"
221
        ).click();
222
        cy.get(".dashboard-left-col .widget#ERMLicensesNeedingAction").should(
223
            "not.exist"
224
        );
225
226
        //Add
227
        cy.get("#dashboard-header #open-widget-picker").click();
228
        cy.get(".modal #ERMLicensesNeedingAction .add-widget").click();
229
        cy.get(".modal .modal-footer button").contains("Close").click();
230
        cy.get(".dashboard-right-col .dragArea")
231
            .children()
232
            .first()
233
            .should("have.id", "ERMLicensesNeedingAction");
234
    });
235
236
    it("Latest SUSHI Counter jobs", () => {
237
        cy.intercept("GET", "/api/v1/jobs*", [
238
            {
239
                context: {
240
                    branch: "CPL",
241
                    branchname: "Centerville",
242
                    cardnumber: "42",
243
                    desk_id: null,
244
                    desk_name: null,
245
                    emailaddress: null,
246
                    firstname: null,
247
                    flags: "1",
248
                    id: "koha",
249
                    interface: "api",
250
                    number: "51",
251
                    register_id: null,
252
                    register_name: null,
253
                    shibboleth: "0",
254
                    surname: "koha",
255
                },
256
                data: {
257
                    begin_date: "2025-01-01",
258
                    end_date: "2025-03-12",
259
                    messages: [
260
                        {
261
                            code: 2010,
262
                            message:
263
                                "Error - Requestor is Not Authorized to Access Usage for Institution",
264
                            type: "error",
265
                        },
266
                    ],
267
                    report: {
268
                        report_type: "PR",
269
                        ud_provider_id: 1,
270
                        ud_provider_name: "Wiley Online Library",
271
                        us_report_info: {
272
                            added_mus: 0,
273
                            added_usage_objects: 0,
274
                            added_yus: 0,
275
                            skipped_mus: 0,
276
                            skipped_yus: 0,
277
                        },
278
                    },
279
                    report_type: "PR",
280
                    ud_provider_id: 1,
281
                    ud_provider_name: "Wiley Online Library",
282
                },
283
                ended_date: "2025-03-11T16:56:07+00:00",
284
                enqueued_date: "2025-03-11T16:56:06+00:00",
285
                job_id: 1,
286
                patron_id: "51",
287
                progress: "0",
288
                queue: "long_tasks",
289
                size: "1",
290
                started_date: "2025-03-11T16:56:06+00:00",
291
                status: "finished",
292
                type: "erm_sushi_harvester",
293
            },
294
        ]).as("getJobs");
295
        cy.visit("/cgi-bin/koha/erm/erm.pl");
296
297
        //Display
298
        cy.get(".widget#ERMLatestSUSHIJobs .widget-content").should(
299
            "contain",
300
            "Loading..."
301
        );
302
        cy.wait("@getJobs");
303
        cy.get(
304
            ".widget#ERMLatestSUSHIJobs .widget-content table tbody tr td:first"
305
        ).contains("Finished");
306
307
        cy.get(
308
            ".widget#ERMLatestSUSHIJobs .widget-content table tbody tr td:nth-child(2)"
309
        )
310
            .contains("Wiley Online Library")
311
            .click();
312
313
        cy.url().should("match", /erm\/eusage\/usage_data_providers/);
314
315
        cy.visit("/cgi-bin/koha/erm/erm.pl");
316
317
        cy.get(
318
            ".widget#ERMLatestSUSHIJobs .widget-content table tbody tr td:nth-child(5)"
319
        )
320
            .contains("View")
321
            .click();
322
323
        cy.url().should("match", /erm\/home/);
324
325
        //Move
326
        cy.get(
327
            ".dashboard-right-col .widget#ERMLatestSUSHIJobs .widget-header #dropdownMenuButton"
328
        ).click();
329
        cy.get(
330
            ".dashboard-right-col .widget#ERMLatestSUSHIJobs .widget-header .move-left"
331
        ).click();
332
        cy.get(".dashboard-right-col .widget#ERMLatestSUSHIJobs").should(
333
            "not.exist"
334
        );
335
        cy.get(".dashboard-left-col .dragArea")
336
            .children()
337
            .first()
338
            .should("have.id", "ERMLatestSUSHIJobs");
339
340
        //Remove
341
        cy.get(
342
            ".dashboard-left-col .widget#ERMLatestSUSHIJobs .widget-header #dropdownMenuButton"
343
        ).click();
344
        cy.get(
345
            ".dashboard-left-col .widget#ERMLatestSUSHIJobs .widget-header .remove-widget"
346
        ).click();
347
        cy.get(".dashboard-left-col .widget#ERMLatestSUSHIJobs").should(
348
            "not.exist"
349
        );
350
351
        //Add
352
        cy.get("#dashboard-header #open-widget-picker").click();
353
        cy.get(".modal #ERMLatestSUSHIJobs .add-widget").click();
354
        cy.get(".modal .modal-footer button").contains("Close").click();
355
        cy.get(".dashboard-right-col .dragArea")
356
            .children()
357
            .first()
358
            .should("have.id", "ERMLatestSUSHIJobs");
359
    });
360
});

Return to bug 39320