skillbox/client/cypress/integration/project-entry.spec.js

149 lines
4.8 KiB
JavaScript

const schema = require('../fixtures/schema.json');
describe('Project Entry', () => {
beforeEach(() => {
cy.viewport('macbook-15');
cy.apolloLogin('rahel.cueni', 'test');
cy.mockGraphql({
schema: schema,
operations: {
MeQuery: {
me: {
id: 'VXNlck5vZGU6NQ==',
permissions: []
}
},
ProjectsQuery: {
projects: {
edges: [{
node: {
id: 'UHJvamVjdE5vZGU6MzM=',
title: 'Groot',
appearance: 'red',
'description': 'I am Groot',
'slug': 'groot',
'objectives': 'Be Groot\nBe awesome',
'final': false,
'student': {
'firstName': 'Rahel',
'lastName': 'Cueni',
'id': 'VXNlck5vZGU6NQ==',
'avatarUrl': '',
'__typename': 'UserNode'
},
'entriesCount': 2,
'__typename': 'ProjectNode'
},
'__typename': 'ProjectNodeEdge'
}],
'__typename': 'ProjectNodeConnection'
}
},
ProjectQuery: {
"project": {
"id": "UHJvamVjdE5vZGU6MzY=",
"title": "Groot",
"appearance": "yellow",
"description": "I am Groot",
"slug": "groot",
"objectives": "Be Groot\nBe awesome",
"final": false,
"student": {
"firstName": "Rahel",
"lastName": "Cueni",
"id": "VXNlck5vZGU6NQ==",
"avatarUrl": "",
"__typename": "UserNode"
},
"entriesCount": 1,
"__typename": "ProjectNode",
"entries": {
"edges": [{
"node": {
"id": "UHJvamVjdEVudHJ5Tm9kZTo2NQ==",
"activity": "Kill Thanos",
"reflection": "He sucks",
"nextSteps": "Go for the head",
"documentUrl": "",
"__typename": "ProjectEntryNode",
"created": "2020-01-20T15:20:31.262510+00:00"
}, "__typename": "ProjectEntryNodeEdge"
}], "__typename": "ProjectEntryNodeConnection"
}
}
},
AddProjectEntry: variables => ({
addProjectEntry: {
projectEntry: Object.assign({}, variables.input.projectEntry, {
created: '2020-01-20T15:26:58.722773+00:00'
}),
errors: null,
__typename: 'AddProjectEntryPayload'
}
}),
UpdateProjectEntry: variables => ({
updateProjectEntry: {
projectEntry: variables.input.projectEntry,
errors: null,
__typename: 'UpdateProjectEntryPayload'
}
}),
DeleteProjectEntry: {
deleteProjectEntry: {
success: true,
__typename: 'DeleteProjectEntryPayload'
}
}
}
});
});
it('should create a new project entry', () => {
cy.visit('/portfolio');
cy.get('[data-cy=project-link]:first-of-type').click();
cy.get('[data-cy=add-project-entry]:first-of-type').click();
cy.get('[data-cy=activity-input]').within(() => {
cy.get('[data-cy=text-form-input]').type('Join the Guardians');
});
cy.get('[data-cy=reflection-input]').within(() => {
cy.get('[data-cy=text-form-input]').type('They are cool!');
});
cy.get('[data-cy=next-steps-input]').within(() => {
cy.get('[data-cy=text-form-input]').type('Stay with Rocket\nMeet Quill');
});
cy.get('[data-cy=modal-save-button]').click();
cy.get('.project-entry:last-of-type').within(() => {
cy.get('.project-entry__paragraph:first-of-type').contains('Join the Guardians')
});
});
it('should edit first entry', () => {
cy.visit('/portfolio/groot');
cy.get('.project-entry__paragraph:first-of-type').contains('Kill Thanos');
cy.get('.project-entry:first-of-type').within(() => {
cy.get('[data-cy=project-entry-more]').click();
cy.get('[data-cy=edit-project-entry]').click();
});
cy.get('[data-cy=activity-input]').within(() => {
cy.get('[data-cy=text-form-input]').clear().type('Defeat Thanos');
});
cy.get('[data-cy=modal-save-button]').click();
cy.get('.project-entry__paragraph:first-of-type').contains('Defeat Thanos');
});
it('should delete the last entry', () => {
cy.visit('/portfolio/groot');
cy.get('.project-entry').should('have.length', 1);
cy.get('.project-entry:last-of-type').within(() => {
cy.get('[data-cy=project-entry-more]').click();
cy.get('[data-cy=delete-project-entry]').click();
});
cy.get('.project-entry').should('have.length', 0);
});
});