From f2c8079f9b3cc5ac01ecde2cd278c38a0d2e460c Mon Sep 17 00:00:00 2001 From: sebastianrad <65756657+sebastianrad@users.noreply.github.com> Date: Thu, 1 Apr 2021 11:45:35 +0300 Subject: [PATCH] test: add tests for unsubmited articles and article title comlumn --- .../elife/manuscripts_page_spec.js | 121 +++++++++++++++++- cypress/page-object/manuscripts-page.js | 16 ++- 2 files changed, 130 insertions(+), 7 deletions(-) diff --git a/cypress/integration/elife/manuscripts_page_spec.js b/cypress/integration/elife/manuscripts_page_spec.js index e9ec04d5f3..502349bf35 100644 --- a/cypress/integration/elife/manuscripts_page_spec.js +++ b/cypress/integration/elife/manuscripts_page_spec.js @@ -2,6 +2,7 @@ import { ManuscriptsPage } from '../../page-object/manuscripts-page' import { NewSubmissionPage } from '../../page-object/new-submission-page' import { SubmissionFormPage } from '../../page-object/submission-form-page' import { manuscripts } from '../../support/routes' +import { Menu } from '../../page-object/page-component/menu' describe('Manuscripts page tests', () => { context('Elements visibility', () => { @@ -19,9 +20,92 @@ describe('Manuscripts page tests', () => { it('check Submit button is visible', () => { ManuscriptsPage.getSubmitButton().should('be.visible') }) + it('evaluation button is visible on unsubmited status article', () => { + ManuscriptsPage.clickSubmit() + NewSubmissionPage.clickSubmitURL() + // fill the submit form and submit it + // eslint-disable-next-line jest/valid-expect-in-promise + cy.fixture('submission_form_data').then(data => { + SubmissionFormPage.fillInArticleld(data.articleId) + }) + Menu.clickManuscripts() + ManuscriptsPage.getEvaluationButton().should('be.visible') + }) }) - context('', () => { + context('unsubmitetd article tests', () => { + beforeEach(() => { + // task to restore the database as per the dumps/initialState.sql + cy.task('restore', 'initialState') + + // login as admin + // eslint-disable-next-line jest/valid-expect-in-promise + cy.fixture('role_names').then(name => { + cy.login(name.role.admin, manuscripts) + }) + ManuscriptsPage.clickSubmit() + NewSubmissionPage.clickSubmitURL() + // fill the submit form and submit it + // eslint-disable-next-line jest/valid-expect-in-promise + cy.fixture('submission_form_data').then(data => { + SubmissionFormPage.fillInArticleld(data.articleId) + }) + Menu.clickManuscripts() + }) + + it('unsubmited article is evaluated', () => { + ManuscriptsPage.clickEvaluation() + cy.url().should('contain', 'evaluation') + + // SubmissionFormPage.getArticleld().should('have.value', '') + SubmissionFormPage.getArticleUrl().should('have.value', '') + // eslint-disable-next-line + SubmissionFormPage.getDescription().should('have.value', '') + SubmissionFormPage.getEvaluationContent() + .find('p') + .should('have.value', '') + // eslint-disable-next-line + SubmissionFormPage.getFormOptionValue(-1).should('have.value', '') + // eslint-disable-next-line jest/valid-expect-in-promise + cy.fixture('submission_form_data').then(data => { + SubmissionFormPage.fillInArticleld(data.articleId) + SubmissionFormPage.fillInArticleUrl(data.doi) + SubmissionFormPage.fillInDescription(data.description) + SubmissionFormPage.fillInEvaluationContent(data.evaluationContent) + SubmissionFormPage.clickElementFromFormOptionList(4) + SubmissionFormPage.selectDropdownOption(1) + SubmissionFormPage.clickSubmitResearch() + SubmissionFormPage.clickSubmitManuscript() + }) + ManuscriptsPage.getStatus(0).should('eq', 'evaluated') + }) + + it('sort article after Article id', () => { + ManuscriptsPage.clickSubmit() + NewSubmissionPage.clickSubmitURL() + SubmissionFormPage.fillInArticleld('456') + Menu.clickManuscripts() + ManuscriptsPage.clickSubmit() + NewSubmissionPage.clickSubmitURL() + SubmissionFormPage.fillInArticleld('abc') + Menu.clickManuscripts() + ManuscriptsPage.clickSubmit() + NewSubmissionPage.clickSubmitURL() + SubmissionFormPage.fillInArticleld('def') + Menu.clickManuscripts() + ManuscriptsPage.getArticleIdColumn(0).should('contain', 'def') + ManuscriptsPage.getArticleIdColumn(1).should('contain', 'abc') + ManuscriptsPage.getArticleIdColumn(2).should('contain', '456') + ManuscriptsPage.getArticleIdColumn(3).should('contain', '123') + ManuscriptsPage.clickArticleId(0) + ManuscriptsPage.getArticleIdColumn(0).should('contain', '123') + ManuscriptsPage.getArticleIdColumn(1).should('contain', '456') + ManuscriptsPage.getArticleIdColumn(2).should('contain', 'abc') + ManuscriptsPage.getArticleIdColumn(3).should('contain', 'def') + }) + }) + + context('Submited and evaluated article tests', () => { beforeEach(() => { // task to restore the database as per the dumps/initialState.sql cy.task('restore', 'initialState') @@ -56,11 +140,14 @@ describe('Manuscripts page tests', () => { ManuscriptsPage.getManuscriptsPageTitle().should('be.visible') ManuscriptsPage.getEvaluationButton().should('be.visible') ManuscriptsPage.getControlButton().should('not.exist') + ManuscriptsPage.getOptionWithText('Publish').should('be.visible') }) it('evaluate article and check status is changed', () => { ManuscriptsPage.getStatus(0).should('eq', 'Submitted') ManuscriptsPage.clickEvaluation(0) + SubmissionFormPage.clickSubmitResearch() + ManuscriptsPage.getStatus(0).should('eq', 'evaluated') ManuscriptsPage.getEvaluationButton().should('be.visible') }) @@ -72,12 +159,18 @@ describe('Manuscripts page tests', () => { SubmissionFormPage.getArticleld().should('have.value', data.articleId) SubmissionFormPage.getArticleUrl().should('have.value', data.doi) // eslint-disable-next-line - SubmissionFormPage.getDescription().should('have.value', data.description) + SubmissionFormPage.getDescription().should( + 'have.value', + data.description, + ) SubmissionFormPage.getEvaluationContent() .find('p') .should('contain', data.evaluationContent) // eslint-disable-next-line - SubmissionFormPage.getFormOptionValue(-1).should('contain', data.evaluationType) + SubmissionFormPage.getFormOptionValue(-1).should( + 'contain', + data.evaluationType, + ) }) }) it('evaluation changes should be visible', () => { @@ -99,15 +192,31 @@ describe('Manuscripts page tests', () => { SubmissionFormPage.clickSubmitResearch() ManuscriptsPage.clickEvaluation() // eslint-disable-next-line - SubmissionFormPage.getArticleld().should('not.have.value', data.articleId) + SubmissionFormPage.getArticleld().should( + 'not.have.value', + data.articleId, + ) SubmissionFormPage.getArticleUrl().should('not.have.value', data.doi) // eslint-disable-next-line - SubmissionFormPage.getDescription().should('not.have.value', data.description) + SubmissionFormPage.getDescription().should( + 'not.have.value', + data.description, + ) SubmissionFormPage.getEvaluationContent() .find('p') .should('not.contain', data.evaluationContent) // eslint-disable-next-line - SubmissionFormPage.getFormOptionValue(-1).should('not.contain', data.evaluationType) + SubmissionFormPage.getFormOptionValue(-1).should( + 'not.contain', + data.evaluationType, + ) + }) + }) + it('assert atricle id is the first table head and contains submitted atricle id title', () => { + ManuscriptsPage.getTabelHead(0).should('contain', 'Article Id') + // eslint-disable-next-line jest/valid-expect-in-promise + cy.fixture('submission_form_data').then(data => { + ManuscriptsPage.getArticleIdColumn(0).should('contain', data.articleId) }) }) }) diff --git a/cypress/page-object/manuscripts-page.js b/cypress/page-object/manuscripts-page.js index c3f1e10f7f..29e9d4a44c 100644 --- a/cypress/page-object/manuscripts-page.js +++ b/cypress/page-object/manuscripts-page.js @@ -4,7 +4,7 @@ * where users can see the list of submitted manuscripts & select Control, * View or Delete. */ -const MANUSCRIPTS_OPTIONS_LIST = '[class*=Table__LastCell] > a' +const MANUSCRIPTS_OPTIONS_LIST = '[class*=style__UserAction]' const BUTTON = 'button' const MANUSCRIPTS_PAGE_TITLE = '[class*=General__Heading-sc]' const EVALUATION_BUTTON = '[href*=evaluation]' @@ -12,6 +12,8 @@ const CONTROL_BUTTON = '[href*=control]' const CREATED_CARET = 'Carets__Caret' const AUTHOR_FIELD = 'UserCombo__Primary' const STATUS_FIELD = 'Badge__Status' +const MANUSCRIPTS_TABLE_HEAD = '[class*=Table__Header] > tr >th' +const ARTICLE_ID = '[class*=Table__Row]>td:nth-child(1)' export const ManuscriptsPage = { getManuscriptsOptionsList() { @@ -20,6 +22,9 @@ export const ManuscriptsPage = { selectOptionWithText(text) { this.getManuscriptsOptionsList().contains(text).click() }, + getOptionWithText(text) { + return this.getManuscriptsOptionsList().contains(text) + }, getSubmitButton() { return cy.get(BUTTON).contains('New submission') }, @@ -53,5 +58,14 @@ export const ManuscriptsPage = { getStatus(nth) { return this.getStatusField(nth).invoke('text') }, + getTabelHead(nth) { + return cy.get(MANUSCRIPTS_TABLE_HEAD).eq(nth) + }, + getArticleIdColumn(nth) { + return cy.get(ARTICLE_ID).eq(nth) + }, + clickArticleId() { + cy.get(MANUSCRIPTS_TABLE_HEAD).eq(0).click() + }, } export default ManuscriptsPage -- GitLab