skillbox/client/cypress/e2e/frontend/rooms/article-page.spec.js

83 lines
1.9 KiB
JavaScript

import {getMinimalMe} from '../../../support/helpers';
describe('Article page', () => {
const slug = 'this-article-has-a-slug';
const roomEntry = {
slug,
id: 'room-entry-id',
title: 'Some Room Entry, yay!',
comments: [],
contents: [{
type: 'text_block',
value: {
text: 'Ein Text',
},
}, {
type: 'subtitle',
value: {
text: 'Ein Untertitel'
}
}],
};
const operations = {
MeQuery: getMinimalMe({}),
RoomEntryQuery: {
roomEntry,
},
AddComment({input}) {
return {
addComment: {
success: true,
comment: {
text: input.comment,
roomEntry: roomEntry,
owner: {
firstName: 'Matt',
lastName: 'Damon',
},
},
},
};
},
};
beforeEach(() => {
cy.setup();
});
it('shows the article with contents', () => {
cy.mockGraphqlOps({
operations,
});
cy.visit(`/article/${slug}`);
cy.getByDataCy('text-block').should('contain.text', 'Ein Text');
cy.getByDataCy('subtitle-block').should('contain.text', 'Ein Untertitel');
});
it('goes to article and leaves a comment', () => {
cy.mockGraphqlOps({
operations,
});
const commentText = 'First! ';
const emoji = '🖐';
cy.visit(`/article/${slug}`);
cy.getByDataCy('comment-textarea').type(commentText);
cy.getByDataCy('emoji-button').should('have.length', 9).first().click();
cy.getByDataCy('submit-comment').should('contain', 'Kommentar teilen').click();
cy.getByDataCy('comment').first().should('contain', commentText + emoji);
});
it('does not show input field on mobile', () => {
cy.mockGraphqlOps({
operations,
});
cy.viewport('iphone-8');
cy.visit(`/article/${slug}`);
cy.getByDataCy('article-title').should('exist');
cy.getByDataCy('comment-textarea').should('not.be.visible');
});
});