graphdb-workbench-tests
Version:
Cypress tests for GraphDB workbench
222 lines (189 loc) • 11.2 kB
JavaScript
import {QueryStubDescription, QueryStubs} from "../../../stubs/yasgui/query-stubs";
import {SparqlEditorSteps} from "../../../steps/sparql-editor-steps";
import {YasqeSteps} from "../../../steps/yasgui/yasqe-steps";
import {YasrSteps} from "../../../steps/yasgui/yasr-steps";
import {PaginationSteps} from "../../../steps/yasgui/pagination-steps";
import {NamespaceStubs} from "../../../stubs/namespace-stubs";
describe('Yasr result pagination', () => {
let repositoryId;
beforeEach(() => {
repositoryId = 'sparql-editor-' + Date.now();
QueryStubs.stubQueryCountResponse();
cy.createRepository({id: repositoryId});
cy.presetRepository(repositoryId);
NamespaceStubs.stubGeneratedOntotextNamespacesResponse(repositoryId);
// Given: I visit a page with "ontotex-yasgu-web-component" in it.
SparqlEditorSteps.visitSparqlEditorPage();
});
afterEach(() => {
cy.deleteRepository(repositoryId);
});
describe('Visibility of pagination', () => {
it('should not be visible when a tab is open without a query to be executed', () => {
// When I visit a page with "ontotext-yasgui" component in it,
// and there is not executed query.
//Then I expect pagination to not be visible
YasrSteps.getPagination().should('not.be.visible');
});
it('should not be visible when there aren\'t results', () => {
// When I visit a page with "ontotext-yasgui" component in it,
// and execute a query which don't return results
QueryStubs.stubEmptyQueryResponse();
YasqeSteps.executeQuery();
//Then I expect pagination to not be visible
YasrSteps.getPagination().should('not.be.visible');
});
it('should not be visible when results of query are less than configured page size', () => {
// When I visit a page with "ontotext-yasgui" component in it,
// and execute a query which returns results less than page size.
const queryDescription = new QueryStubDescription()
.setRepositoryId(repositoryId)
.setTotalElements(3);
QueryStubs.stubQueryResults(queryDescription);
YasqeSteps.getExecuteQueryButton().should('be.visible');
YasqeSteps.executeQuery();
// Then I expect pagination to not be visible
YasrSteps.getPagination().should('not.be.visible');
// When I execute a query witch returns results equals to page size.
queryDescription
.setRepositoryId(repositoryId)
.setTotalElements(1000);
QueryStubs.stubQueryResults(queryDescription);
YasqeSteps.getExecuteQueryButton().should('be.visible');
YasqeSteps.executeQuery();
// Then I expect pagination to not be visible
YasrSteps.getPagination().should('not.be.visible');
});
it('should be visible when results of query are more than configured page size', () => {
// When I visit a page with "ontotext-yasgui" component in it,
// and execute a query which returns results more than page size.
const queryDescription = new QueryStubDescription()
.setRepositoryId(repositoryId)
.setTotalElements(1150);
QueryStubs.stubQueryResults(queryDescription);
YasqeSteps.executeQuery();
// Then I expect pagination to be visible
YasrSteps.getPagination().should('be.visible');
});
});
describe('Pagination behaviour', () => {
it('should change page when clink on page number button', () => {
// When I visit a page with "ontotext-yasgui" component in it,
// and execute a query which returns results more than page size.
const queryDescription = new QueryStubDescription()
.setRepositoryId(repositoryId)
.setTotalElements(1001);
QueryStubs.stubQueryResults(queryDescription);
YasqeSteps.executeQuery();
PaginationSteps.waitPageSelected(1);
// I expect two pages to be shown in pagination,
PaginationSteps.getPageNumberButtons().should('have.length', 2);
// and first page to have 1000 results,
YasrSteps.getResults().should('have.length', 1000);
// and results to be from the first page
YasrSteps.getResultLink(0, 2).should('have.text', 'ontogen:page_1-row_1-column_2');
// When I click on second page button
PaginationSteps.clickOnPageNumberButton(2);
PaginationSteps.waitPageSelected(2);
// Then I expect second page to have only one result,
YasrSteps.getResults().should('have.length', 1);
// and the results to be from the second page
YasrSteps.getResultLink(0, 2).should('have.text', 'ontogen:page_2-row_1-column_2');
});
it('should change page when clink on next or previous page button', () => {
// When I visit a page with "ontotext-yasgui" component in it,
// and execute a query which returns results more than page size.
const queryDescription = new QueryStubDescription()
.setRepositoryId(repositoryId)
.setTotalElements(1002);
QueryStubs.stubQueryResults(queryDescription);
YasqeSteps.executeQuery();
PaginationSteps.waitPageSelected(1);
// Then I expect two pages to be shown in pagination.
PaginationSteps.getPageNumberButtons().should('have.length', 2);
// and first page to have 1000 results
YasrSteps.getResults().should('have.length', 1000);
// and results to be from the first page
YasrSteps.getResultLink(0, 2).should('have.text', 'ontogen:page_1-row_1-column_2');
// When I click on next page button
PaginationSteps.clickOnNextPageButton();
PaginationSteps.waitPageSelected(2);
// Then I expect second page to have two results.
YasrSteps.getResults().should('have.length', 2);
// and the result to be from the second page
YasrSteps.getResultLink(0, 2).should('have.text', 'ontogen:page_2-row_1-column_2');
// When I click on previous button
PaginationSteps.clickOnPreviousPageButton();
PaginationSteps.waitPageSelected(1);
// Then I expect first page to have 1000 results,
YasrSteps.getResults().should('have.length', 1000);
// and the results to be from the first page.
YasrSteps.getResultLink(0, 2).should('have.text', 'ontogen:page_1-row_1-column_2');
});
it('should should render pages in pager properly', () => {
// When I visit a page with "ontotext-yasgui" component in it,
// and execute a query which results are on 6 pages.
const queryDescription = new QueryStubDescription()
.setRepositoryId(repositoryId)
.setTotalElements(5001);
QueryStubs.stubQueryResults(queryDescription);
YasqeSteps.executeQuery();
PaginationSteps.waitPageSelected(1);
PaginationSteps.getPreviousPageButton().should('be.disabled');
PaginationSteps.getPageNumberButton(1).should('have.class', 'selected-page');
PaginationSteps.getPageNumberButton(2).should('be.visible');
PaginationSteps.getPageNumberButton(3).should('be.visible');
PaginationSteps.getPageNumberButton(4).should('be.visible');
PaginationSteps.getPageNumberButton(5).should('be.visible');
PaginationSteps.getPageNumberButton(6).should('not.exist');
PaginationSteps.getPageNumberButton(7).should('not.exist');
PaginationSteps.getNextPageButton().should('be.enabled');
// When select second page
PaginationSteps.clickOnPageNumberButton(2);
PaginationSteps.waitPageSelected(2);
PaginationSteps.getPreviousPageButton().should('not.be.disabled');
PaginationSteps.getPageNumberButton(1).should('be.visible');
PaginationSteps.getPageNumberButton(2).should('have.class', 'selected-page');
PaginationSteps.getPageNumberButton(3).should('be.visible');
PaginationSteps.getPageNumberButton(4).should('be.visible');
PaginationSteps.getPageNumberButton(5).should('be.visible');
PaginationSteps.getPageNumberButton(6).should('not.exist');
PaginationSteps.getNextPageButton().should('be.enabled');
// When select third page
PaginationSteps.clickOnPageNumberButton(3);
PaginationSteps.waitPageSelected(3);
PaginationSteps.getPreviousPageButton().should('be.enabled');
PaginationSteps.getPageNumberButton(1).should('be.visible');
PaginationSteps.getPageNumberButton(2).should('be.visible');
PaginationSteps.getPageNumberButton(3).should('have.class', 'selected-page');
PaginationSteps.getPageNumberButton(4).should('be.visible');
PaginationSteps.getPageNumberButton(5).should('be.visible');
PaginationSteps.getPageNumberButton(6).should('not.exist');
PaginationSteps.getNextPageButton().should('be.enabled');
// When select fifth page
PaginationSteps.clickOnPageNumberButton(5);
PaginationSteps.waitPageSelected(5);
PaginationSteps.getPreviousPageButton().should('be.enabled');
PaginationSteps.getPageNumberButton(1).should('not.exist');
PaginationSteps.getPageNumberButton(2).should('be.visible');
PaginationSteps.getPageNumberButton(3).should('be.visible');
PaginationSteps.getPageNumberButton(4).should('be.visible');
PaginationSteps.getPageNumberButton(5).should('have.class', 'selected-page');
PaginationSteps.getPageNumberButton(6).should('be.visible');
PaginationSteps.getPageNumberButton(7).should('not.exist');
PaginationSteps.getNextPageButton().should('be.enabled');
// When select last page
PaginationSteps.clickOnPageNumberButton(6);
PaginationSteps.waitPageSelected(6);
PaginationSteps.getPreviousPageButton().should('be.enabled');
PaginationSteps.getPageNumberButton(1).should('not.exist');
PaginationSteps.getPageNumberButton(2).should('be.visible');
PaginationSteps.getPageNumberButton(3).should('be.visible');
PaginationSteps.getPageNumberButton(4).should('be.visible');
PaginationSteps.getPageNumberButton(5).should('be.visible');
PaginationSteps.getPageNumberButton(6).should('have.class', 'selected-page');
PaginationSteps.getPageNumberButton(7).should('not.exist');
PaginationSteps.getNextPageButton().should('be.disabled');
});
});
});