183 lines
5.2 KiB
JavaScript
183 lines
5.2 KiB
JavaScript
const LANGUAGE_COMMUNICATION = 'LANGUAGE_COMMUNICATION';
|
||
const LANGUAGE_COMMUNICATION_VALUE = 'Sprache & Kommunikation';
|
||
const SOCIETY = 'SOCIETY';
|
||
const SOCIETY_VALUE = 'Gesellschaft';
|
||
const INTERDISCIPLINARY = 'INTERDISCIPLINARY';
|
||
const INTERDISCIPLINARY_VALUE = 'Überfachliche Instrumente';
|
||
|
||
describe('Instruments Page', () => {
|
||
beforeEach(() => {
|
||
cy.setup();
|
||
|
||
const languageCategory = {
|
||
name: LANGUAGE_COMMUNICATION_VALUE,
|
||
id: LANGUAGE_COMMUNICATION,
|
||
foreground: '#000000',
|
||
background: '#00ffff',
|
||
};
|
||
const societyCategory = {
|
||
name: SOCIETY_VALUE,
|
||
id: SOCIETY,
|
||
foreground: '#ffffff',
|
||
background: '#000fff',
|
||
};
|
||
const ANALYSE = 'analyse';
|
||
const ARGUMENTATION = 'argumentation';
|
||
const ETHIK = 'ethik';
|
||
|
||
const analyse = {
|
||
name: 'Analyse',
|
||
category: languageCategory,
|
||
type: ANALYSE,
|
||
id: ANALYSE,
|
||
};
|
||
|
||
const argumentation = {
|
||
name: 'Argumentation',
|
||
category: languageCategory,
|
||
type: ARGUMENTATION,
|
||
id: ARGUMENTATION,
|
||
};
|
||
|
||
const ethik = {
|
||
name: 'Ethik',
|
||
category: societyCategory,
|
||
type: ETHIK,
|
||
id: ETHIK,
|
||
};
|
||
|
||
cy.mockGraphqlOps({
|
||
operations: {
|
||
MeQuery: {},
|
||
InstrumentsQuery: {
|
||
instruments: [
|
||
{
|
||
type: analyse,
|
||
title: 'Instrument: Analyse',
|
||
slug: 'analyse',
|
||
language: 'de',
|
||
},
|
||
{
|
||
type: argumentation,
|
||
title: 'Instrument: Argumentation',
|
||
slug: 'argumentation',
|
||
language: 'de',
|
||
},
|
||
{
|
||
type: ethik,
|
||
title: 'Instrument: Ethik',
|
||
slug: 'ethik',
|
||
language: 'de',
|
||
},
|
||
{
|
||
type: ethik,
|
||
title: 'Instrument: La éthique, bourgois',
|
||
slug: 'ethik-burgois',
|
||
language: 'fr',
|
||
},
|
||
],
|
||
},
|
||
InstrumentCategoriesQuery: {
|
||
instrumentCategories: [
|
||
{
|
||
name: 'Sprache & Kommunikation',
|
||
id: LANGUAGE_COMMUNICATION,
|
||
types: [
|
||
analyse,
|
||
argumentation,
|
||
{
|
||
name: 'Beschreibung',
|
||
category: languageCategory,
|
||
type: 'beschreibung',
|
||
},
|
||
],
|
||
},
|
||
{
|
||
name: SOCIETY_VALUE,
|
||
id: SOCIETY,
|
||
types: [
|
||
ethik,
|
||
{
|
||
name: 'Identität und Sozialisation',
|
||
category: societyCategory,
|
||
type: 'identitt-und-sozialisation',
|
||
},
|
||
],
|
||
},
|
||
{
|
||
name: INTERDISCIPLINARY_VALUE,
|
||
id: INTERDISCIPLINARY,
|
||
types: [],
|
||
},
|
||
],
|
||
},
|
||
},
|
||
});
|
||
});
|
||
|
||
it('opens the instruments page', () => {
|
||
cy.visit('instruments/');
|
||
|
||
cy.getByDataCy('instrument').should('have.length', 3);
|
||
|
||
cy.getByDataCy('filter-entry').filter(`:contains("${LANGUAGE_COMMUNICATION_VALUE}")`).click();
|
||
cy.getByDataCy('instrument').should('have.length', 2);
|
||
|
||
cy.getByDataCy('filter-entry').filter(`:contains("${SOCIETY_VALUE}")`).click();
|
||
cy.getByDataCy('instrument').should('have.length', 1);
|
||
|
||
cy.getByDataCy('filter-entry').filter(`:contains("${INTERDISCIPLINARY_VALUE}")`).click();
|
||
cy.getByDataCy('instrument').should('have.length', 0);
|
||
|
||
cy.get('.filter-entry').filter(`:contains("Analyse")`).click();
|
||
cy.getByDataCy('instrument').should('have.length', 1);
|
||
|
||
cy.get('.filter-entry').filter(`:contains("Ethik")`).click();
|
||
cy.getByDataCy('instrument').should('have.length', 1);
|
||
|
||
cy.getByDataCy('filter-all-instruments').click();
|
||
cy.getByDataCy('instrument').should('have.length', 3);
|
||
});
|
||
|
||
it('shows the correct instrument label', () => {
|
||
cy.visit('instruments/');
|
||
cy.getByDataCy('instrument')
|
||
.first()
|
||
.within(() => {
|
||
cy.getByDataCy('instrument-subheader').should('contain', 'Instrumente – Sprache & Kommunikation');
|
||
});
|
||
});
|
||
|
||
it('filter by title', () => {
|
||
cy.visit('instruments/');
|
||
cy.getByDataCy('instrument').should('have.length', 3);
|
||
|
||
cy.getByDataCy('filter-input').type('Analyse');
|
||
cy.getByDataCy('instrument').should('have.length', 1);
|
||
|
||
cy.getByDataCy('filter-input').clear();
|
||
cy.getByDataCy('instrument').should('have.length', 3);
|
||
});
|
||
|
||
it.skip('filter by language', () => {
|
||
// todo: move this to a myKV test env
|
||
|
||
cy.visit('instruments/');
|
||
|
||
// todo: replace this invoke with something that works like a user as soon as the myKV test env is running
|
||
// cy.get('.filter-bar__language-selection').invoke('show');
|
||
cy.getByDataCy('radio-button-de').click();
|
||
cy.getByDataCy('instrument').should('have.length', 3);
|
||
|
||
cy.getByDataCy('radio-button-en').click();
|
||
cy.getByDataCy('instrument').should('have.length', 0);
|
||
cy.getByDataCy('info-message-no-entry').should(
|
||
'contain',
|
||
'Für die ausgewählten Filtereinstellungen sind keine Einträge vorhanden'
|
||
);
|
||
|
||
cy.getByDataCy('radio-button-fr').click();
|
||
cy.getByDataCy('instrument').should('have.length', 1);
|
||
});
|
||
});
|