Page MenuHomeSoftware Heritage

D3174.diff
No OneTemporary

D3174.diff

diff --git a/cypress/integration/deposit-admin.spec.js b/cypress/integration/deposit-admin.spec.js
new file mode 100644
--- /dev/null
+++ b/cypress/integration/deposit-admin.spec.js
@@ -0,0 +1,146 @@
+/**
+ * Copyright (C) 2020 The Software Heritage developers
+ * See the AUTHORS file at the top-level directory of this distribution
+ * License: GNU Affero General Public License version 3, or any later version
+ * See top-level LICENSE file for more information
+ */
+
+const username = 'admin';
+const password = 'admin';
+
+function login(username, password) {
+ cy.get('input[name="username"]')
+ .type(username)
+ .get('input[name="password"]')
+ .type(password)
+ .get('form')
+ .submit();
+}
+
+describe('Test admin deposit page', function() {
+ it('Should test deposit page', function() {
+ cy.visit(this.Urls.admin_deposit());
+ // FIXME: cypress anti-pattern, do not use ui to log ¯\_(ツ)_/¯
+ // https://docs.cypress.io/guides/getting-started/testing-your-app.html#Logging-in
+ login(username, password);
+
+ cy.server();
+ let inputDeposits = [
+ {
+ 'id': 614,
+ 'external_id': 'c-d-1',
+ 'reception_date': '2020-05-18T13:48:27Z',
+ 'status': 'done',
+ 'status_detail': 'all good',
+ 'swh_id': 'swh:1:dir:ef04a768',
+ 'swh_id_context': 'swh:1:dir:ef04a768;origin=https://w.s.o/c-d-1;visit=swh:1:snp:b234be1e;anchor=swh:1:rev:d24a75c9;path=/'
+ },
+ {
+ 'id': 613,
+ 'external_id': 'c-d-2',
+ 'reception_date': '2020-05-18T11:20:16Z',
+ 'status': 'done',
+ 'status_detail': 'everything is fine',
+ 'swh_id': 'swh:1:dir:181417fb',
+ 'swh_id_context': 'swh:1:dir:181417fb;origin=https://w.s.o/c-d-2;visit=swh:1:snp:8c32a2ef;anchor=swh:1:rev:3d1eba04;path=/'
+ },
+ {
+ 'id': 612,
+ 'external_id': 'c-d-3',
+ 'reception_date': '2020-05-18T11:20:16Z',
+ 'status': 'rejected',
+ 'status_detail': 'hu ho, issue!',
+ 'swh_id': null,
+ 'swh_id_context': null
+ }
+ ];
+ cy.route({
+ method: 'GET',
+ url: `${this.Urls.admin_deposit_list()}**`,
+ response: {
+ 'draw': 10,
+ 'recordsTotal': 3,
+ 'recordsFiltered': 3,
+ 'data': inputDeposits
+ }
+ }).as('listDeposits');
+
+ cy.location('pathname')
+ .should('be.equal', this.Urls.admin_deposit());
+ cy.url().should('include', '/admin/deposit');
+
+ cy.get('#swh-admin-deposit-list')
+ .should('exist');
+
+ // those are computed from the
+ let expectedOrigins = ['https://w.s.o/c-d-1', 'https://w.s.o/c-d-2', ''];
+
+ cy.wait('@listDeposits').then((xhr) => {
+ cy.log('response:', xhr.response);
+ cy.log(xhr.response.body);
+ let deposits = xhr.response.body.data;
+ cy.log('Deposits: ', deposits);
+ expect(deposits.length).to.equal(inputDeposits.length);
+
+ cy.get('#swh-admin-deposit-list').find('tbody > tr').as('rows');
+
+ // only 2 entries
+ cy.get('@rows').each((row, idx, collection) => {
+ let deposit = deposits[idx];
+ let inputDeposit = inputDeposits[idx];
+ assert.isNotNull(deposit);
+ assert.isNotNull(inputDeposit);
+ expect(deposit.id).to.be.equal(inputDeposit['id']);
+ expect(deposit.external_id).to.be.equal(inputDeposit['external_id']);
+ expect(deposit.status).to.be.equal(inputDeposit['status']);
+ expect(deposit.status_detail).to.be.equal(inputDeposit['status_detail']);
+ expect(deposit.swh_id).to.be.equal(inputDeposit['swh_id']);
+ expect(deposit.swh_id_context).to.be.equal(inputDeposit['swh_id_context']);
+
+ let expectedOrigin = expectedOrigins[idx];
+ // ensure it's in the dom
+ expect(row).to.contain(deposit.id);
+ if (deposit.status === 'done') {
+ expect(row).to.contain(deposit.external_id);
+ } else {
+ expect(row).to.not.contain(deposit.external_id);
+ }
+ expect(row).to.contain(deposit.status);
+ expect(row).to.contain(expectedOrigin);
+ // those are hidden by default
+ expect(row).to.not.contain(deposit.status_detail);
+ expect(row).to.not.contain(deposit.swh_id);
+ expect(row).to.not.contain(deposit.swh_id_context);
+ });
+
+ // toggling all links and ensure, the previous checks are inverted
+ cy.get('a.toggle-col').click({'multiple': true}).then(() => {
+
+ cy.get('#swh-admin-deposit-list').find('tbody > tr').as('rows');
+ cy.get('@rows').each((row, idx, collection) => {
+ let deposit = deposits[idx];
+
+ // ensure it's in the dom
+ expect(row).to.not.contain(deposit.id);
+ if (deposit.status === 'done') {
+ expect(row).to.contain(deposit.external_id);
+ } else {
+ expect(row).to.not.contain(deposit.external_id);
+ }
+ expect(row).to.not.contain(deposit.status);
+ // those are hidden by default
+ expect(row).to.contain(deposit.status_detail);
+ if (deposit.swh_id !== null) {
+ expect(row).to.contain(deposit.swh_id);
+ expect(row).to.contain(deposit.swh_id_context);
+ }
+ });
+
+ });
+
+ cy.get('#swh-admin-deposit-list-error')
+ .should('not.contain',
+ 'An error occurred while retrieving the list of deposits');
+ });
+ });
+});

File Metadata

Mime Type
text/plain
Expires
Thu, Jul 3, 3:55 PM (2 w, 21 h ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3220166

Event Timeline