Changeset View
Changeset View
Standalone View
Standalone View
cypress/integration/deposit-admin.spec.js
Show All 11 Lines | function login(username, password) { | ||||
cy.get('input[name="username"]') | cy.get('input[name="username"]') | ||||
.type(username) | .type(username) | ||||
.get('input[name="password"]') | .get('input[name="password"]') | ||||
.type(password) | .type(password) | ||||
.get('form') | .get('form') | ||||
.submit(); | .submit(); | ||||
} | } | ||||
describe('Test admin deposit page', function() { | // data to use as request query response | ||||
it('Should test deposit page', function() { | let responseDeposits; | ||||
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(); | describe('Test admin deposit page', function() { | ||||
let inputDeposits = [ | beforeEach(() => { | ||||
responseDeposits = [ | |||||
{ | { | ||||
'id': 614, | 'id': 614, | ||||
'external_id': 'c-d-1', | 'external_id': 'ch-de-1', | ||||
'reception_date': '2020-05-18T13:48:27Z', | 'reception_date': '2020-05-18T13:48:27Z', | ||||
'status': 'done', | 'status': 'done', | ||||
'status_detail': 'all good', | 'status_detail': null, | ||||
'swh_id': 'swh:1:dir:ef04a768', | '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=/' | '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, | 'id': 613, | ||||
'external_id': 'c-d-2', | 'external_id': 'ch-de-2', | ||||
'reception_date': '2020-05-18T11:20:16Z', | 'reception_date': '2020-05-18T11:20:16Z', | ||||
'status': 'done', | 'status': 'done', | ||||
'status_detail': 'everything is fine', | 'status_detail': null, | ||||
'swh_id': 'swh:1:dir:181417fb', | '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=/' | '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, | 'id': 612, | ||||
'external_id': 'c-d-3', | 'external_id': 'ch-de-3', | ||||
'reception_date': '2020-05-18T11:20:16Z', | 'reception_date': '2020-05-18T11:20:16Z', | ||||
'status': 'rejected', | 'status': 'rejected', | ||||
'status_detail': 'hu ho, issue!', | 'status_detail': 'incomplete deposit!', | ||||
'swh_id': null, | 'swh_id': null, | ||||
'swh_id_context': null | 'swh_id_context': null | ||||
} | } | ||||
]; | ]; | ||||
}); | |||||
it('Should filter out deposits matching excluding pattern from display', 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(); | |||||
// entry supposed to be excluded from the display by default | |||||
let extraDeposit = { | |||||
'id': 10, | |||||
'external_id': 'check-deposit-3', | |||||
'reception_date': '2020-05-18T11:20:16Z', | |||||
'status': 'done', | |||||
'status_detail': null, | |||||
'swh_id': 'swh:1:dir:fb234417', | |||||
'swh_id_context': 'swh:1:dir:fb234417;origin=https://w.s.o/c-d-3;visit=swh:1:snp:181417fb;anchor=swh:1:rev:3d166604;path=/' | |||||
}; | |||||
// of course, that's how to copy a list (an "array") | |||||
let testDeposits = responseDeposits.slice(); | |||||
// and add a new element to that array by mutating it... | |||||
testDeposits.push(extraDeposit); | |||||
// ensure we don't touch the original reference | |||||
expect(responseDeposits.length).to.be.equal(3); | |||||
expect(testDeposits.length).to.be.equal(4); | |||||
cy.route({ | cy.route({ | ||||
method: 'GET', | method: 'GET', | ||||
url: `${this.Urls.admin_deposit_list()}**`, | url: `${this.Urls.admin_deposit_list()}**`, | ||||
response: { | response: { | ||||
'draw': 10, | 'draw': 10, | ||||
'recordsTotal': 3, | 'recordsTotal': testDeposits.length, | ||||
'recordsFiltered': 3, | 'recordsFiltered': testDeposits.length, | ||||
'data': inputDeposits | 'data': testDeposits | ||||
} | } | ||||
}).as('listDeposits'); | }).as('listDeposits'); | ||||
cy.location('pathname') | cy.location('pathname') | ||||
.should('be.equal', this.Urls.admin_deposit()); | .should('be.equal', this.Urls.admin_deposit()); | ||||
cy.url().should('include', '/admin/deposit'); | cy.url().should('include', '/admin/deposit'); | ||||
cy.get('#swh-admin-deposit-list') | cy.get('#swh-admin-deposit-list') | ||||
.should('exist'); | .should('exist'); | ||||
// those are computed from the | // those are computed from the | ||||
let expectedOrigins = ['https://w.s.o/c-d-1', 'https://w.s.o/c-d-2', '']; | let expectedOrigins = [ | ||||
'https://w.s.o/c-d-1', 'https://w.s.o/c-d-2', '', 'https://w.s.o/c-d-3' | |||||
]; | |||||
cy.wait('@listDeposits').then((xhr) => { | cy.wait('@listDeposits').then((xhr) => { | ||||
cy.log('response:', xhr.response); | |||||
cy.log(xhr.response.body); | |||||
let deposits = xhr.response.body.data; | let deposits = xhr.response.body.data; | ||||
cy.log('Deposits: ', deposits); | expect(deposits.length).to.equal(testDeposits.length); | ||||
expect(deposits.length).to.equal(inputDeposits.length); | |||||
cy.get('#swh-admin-deposit-list').find('tbody > tr').as('rows'); | cy.get('#swh-admin-deposit-list').find('tbody > tr').as('rows'); | ||||
// only 2 entries | // only 2 entries | ||||
cy.get('@rows').each((row, idx, collection) => { | cy.get('@rows').each((row, idx, collection) => { | ||||
let deposit = deposits[idx]; | let deposit = deposits[idx]; | ||||
let inputDeposit = inputDeposits[idx]; | let responseDeposit = testDeposits[idx]; | ||||
assert.isNotNull(deposit); | cy.log('deposit', deposit); | ||||
assert.isNotNull(inputDeposit); | cy.log('responseDeposit', responseDeposit); | ||||
expect(deposit.id).to.be.equal(inputDeposit['id']); | expect(deposit.id).to.be.equal(responseDeposit['id']); | ||||
expect(deposit.external_id).to.be.equal(inputDeposit['external_id']); | expect(deposit.external_id).to.be.equal(responseDeposit['external_id']); | ||||
expect(deposit.status).to.be.equal(inputDeposit['status']); | expect(deposit.status).to.be.equal(responseDeposit['status']); | ||||
expect(deposit.status_detail).to.be.equal(inputDeposit['status_detail']); | expect(deposit.status_detail).to.be.equal(responseDeposit['status_detail']); | ||||
expect(deposit.swh_id).to.be.equal(inputDeposit['swh_id']); | expect(deposit.swh_id).to.be.equal(responseDeposit['swh_id']); | ||||
expect(deposit.swh_id_context).to.be.equal(inputDeposit['swh_id_context']); | expect(deposit.swh_id_context).to.be.equal(responseDeposit['swh_id_context']); | ||||
let expectedOrigin = expectedOrigins[idx]; | let expectedOrigin = expectedOrigins[idx]; | ||||
// ensure it's in the dom | |||||
expect(row).to.contain(deposit.id); | // part of the data, but it should not be displayed (got filtered out) | ||||
if (deposit.status === 'done') { | if (deposit.external_id === 'check-deposit-3') { | ||||
expect(row).to.contain(deposit.external_id); | cy.contains(deposit.status).should('not.be.visible'); | ||||
cy.contains(deposit.status_detail).should('not.be.visible'); | |||||
cy.contains(deposit.external_id).should('not.be.visible'); | |||||
cy.contains(expectedOrigin).should('not.be.visible'); | |||||
cy.contains(deposit.swh_id).should('not.be.visible'); | |||||
cy.contains(deposit.swh_id_context).should('not.be.visible'); | |||||
} else { | } else { | ||||
expect(row).to.not.contain(deposit.external_id); | expect(deposit.external_id).to.be.not.equal('check-deposit-3'); | ||||
cy.contains(deposit.id).should('be.visible'); | |||||
if (deposit.status !== 'rejected') { | |||||
cy.contains(deposit.external_id).should('not.be.visible'); | |||||
cy.contains(expectedOrigin).should('be.visible'); | |||||
// ensure it's in the dom | |||||
} | } | ||||
expect(row).to.contain(deposit.status); | cy.contains(deposit.status).should('be.visible'); | ||||
expect(row).to.contain(expectedOrigin); | // those are hidden by default, so now visible | ||||
if (deposit.status_detail !== null) { | |||||
cy.contains(deposit.status_detail).should('not.be.visible'); | |||||
} | |||||
// those are hidden by default | // those are hidden by default | ||||
expect(row).to.not.contain(deposit.status_detail); | if (deposit.swh_id !== null) { | ||||
expect(row).to.not.contain(deposit.swh_id); | cy.contains(deposit.swh_id).should('not.be.visible'); | ||||
expect(row).to.not.contain(deposit.swh_id_context); | cy.contains(deposit.swh_id_context).should('not.be.visible'); | ||||
} | |||||
} | |||||
}); | }); | ||||
// toggling all links and ensure, the previous checks are inverted | // toggling all links and ensure, the previous checks are inverted | ||||
cy.get('a.toggle-col').click({'multiple': true}).then(() => { | // cy.get('a.toggle-col').click({'multiple': true}).then(() => { | ||||
// cy.get('#swh-admin-deposit-list').find('tbody > tr').as('rows'); | |||||
cy.get('#swh-admin-deposit-list').find('tbody > tr').as('rows'); | // cy.get('@rows').should('have.length', 3); | ||||
cy.get('@rows').each((row, idx, collection) => { | |||||
let deposit = deposits[idx]; | |||||
// ensure it's in the dom | // cy.get('@rows').each((row, idx, collection) => { | ||||
expect(row).to.not.contain(deposit.id); | // let deposit = deposits[idx]; | ||||
if (deposit.status === 'done') { | // let expectedOrigin = expectedOrigins[idx]; | ||||
expect(row).to.contain(deposit.external_id); | |||||
} else { | // if (deposit.external_id === 'check-deposit-3') { // filtered out deposit | ||||
expect(row).to.not.contain(deposit.external_id); | // cy.contains(deposit.status).should('not.be.visible'); | ||||
} | // cy.contains(deposit.status_detail).should('not.be.visible'); | ||||
expect(row).to.not.contain(deposit.status); | // cy.contains(deposit.external_id).should('not.be.visible'); | ||||
// those are hidden by default | // cy.contains(expectedOrigin).should('not.be.visible'); | ||||
expect(row).to.contain(deposit.status_detail); | // cy.contains(deposit.swh_id).should('not.be.visible'); | ||||
if (deposit.swh_id !== null) { | // cy.contains(deposit.swh_id_context).should('not.be.visible'); | ||||
expect(row).to.contain(deposit.swh_id); | // } else { | ||||
expect(row).to.contain(deposit.swh_id_context); | // expect(deposit.external_id).to.be.not.equal('check-deposit-3'); | ||||
} | // // ensure it's in the dom | ||||
// cy.contains(deposit.id).should('not.be.visible'); | |||||
// if (deposit.status !== 'rejected') { | |||||
// cy.contains(deposit.external_id).should('not.be.visible'); | |||||
// expect(row).to.contain(expectedOrigin); | |||||
// } | |||||
// expect(row).to.not.contain(deposit.status); | |||||
// // those are hidden by default, so now visible | |||||
// if (deposit.status_detail !== null) { | |||||
// cy.contains(deposit.status_detail).should('be.visible'); | |||||
// } | |||||
// // those are hidden by default, so now they should be visible | |||||
// if (deposit.swh_id !== null) { | |||||
// cy.contains(deposit.swh_id).should('be.visible'); | |||||
// cy.contains(deposit.swh_id_context).should('be.visible'); | |||||
// } | |||||
// } | |||||
// }); | |||||
// }); | |||||
// cy.get('#swh-admin-deposit-list-error') | |||||
// .should('not.contain', | |||||
// 'An error occurred while retrieving the list of deposits'); | |||||
}); | }); | ||||
}); | }); | ||||
cy.get('#swh-admin-deposit-list-error') | // it('Should display properly entries', function() { | ||||
.should('not.contain', | // cy.visit(this.Urls.admin_deposit()); | ||||
'An error occurred while retrieving the list of deposits'); | // // 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); | ||||
// let testDeposits = responseDeposits; | |||||
// cy.server(); | |||||
// cy.route({ | |||||
// method: 'GET', | |||||
// url: `${this.Urls.admin_deposit_list()}**`, | |||||
// response: { | |||||
// 'draw': 10, | |||||
// 'recordsTotal': testDeposits.length, | |||||
// 'recordsFiltered': testDeposits.length, | |||||
// 'data': testDeposits | |||||
// } | |||||
// }).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(testDeposits.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 responseDeposit = testDeposits[idx]; | |||||
// assert.isNotNull(deposit); | |||||
// assert.isNotNull(responseDeposit); | |||||
// expect(deposit.id).to.be.equal(responseDeposit['id']); | |||||
// expect(deposit.external_id).to.be.equal(responseDeposit['external_id']); | |||||
// expect(deposit.status).to.be.equal(responseDeposit['status']); | |||||
// expect(deposit.status_detail).to.be.equal(responseDeposit['status_detail']); | |||||
// expect(deposit.swh_id).to.be.equal(responseDeposit['swh_id']); | |||||
// expect(deposit.swh_id_context).to.be.equal(responseDeposit['swh_id_context']); | |||||
// let expectedOrigin = expectedOrigins[idx]; | |||||
// // ensure it's in the dom | |||||
// cy.contains(deposit.id).should('be.visible'); | |||||
// if (deposit.status !== 'rejected') { | |||||
// expect(row).to.not.contain(deposit.external_id); | |||||
// cy.contains(expectedOrigin).should('be.visible'); | |||||
// } | |||||
// cy.contains(deposit.status).should('be.visible'); | |||||
// // those are hidden by default, so now visible | |||||
// if (deposit.status_detail !== null) { | |||||
// cy.contains(deposit.status_detail).should('not.be.visible'); | |||||
// } | |||||
// // those are hidden by default | |||||
// if (deposit.swh_id !== null) { | |||||
// cy.contains(deposit.swh_id).should('not.be.visible'); | |||||
// cy.contains(deposit.swh_id_context).should('not.be.visible'); | |||||
// } | |||||
// }); | |||||
// // 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]; | |||||
// let expectedOrigin = expectedOrigins[idx]; | |||||
// // ensure it's in the dom | |||||
// cy.contains(deposit.id).should('not.be.visible'); | |||||
// if (deposit.status !== 'rejected') { | |||||
// expect(row).to.not.contain(deposit.external_id); | |||||
// expect(row).to.contain(expectedOrigin); | |||||
// } | |||||
// expect(row).to.not.contain(deposit.status); | |||||
// // those are hidden by default, so now visible | |||||
// if (deposit.status_detail !== null) { | |||||
// cy.contains(deposit.status_detail).should('be.visible'); | |||||
// } | |||||
// // those are hidden by default, so now they should be visible | |||||
// if (deposit.swh_id !== null) { | |||||
// cy.contains(deposit.swh_id).should('be.visible'); | |||||
// cy.contains(deposit.swh_id_context).should('be.visible'); | |||||
// } | |||||
// }); | |||||
// }); | |||||
// cy.get('#swh-admin-deposit-list-error') | |||||
// .should('not.contain', | |||||
// 'An error occurred while retrieving the list of deposits'); | |||||
// }); | |||||
// }); | |||||
}); | }); |