77 lines
1.7 KiB
JavaScript
77 lines
1.7 KiB
JavaScript
import { getMinimalMe } from '../../../support/helpers';
|
|
import { hasOperationName } from '../../../support/graphql';
|
|
|
|
const teacher = getMinimalMe();
|
|
|
|
const mockCreateTeamCall = (name) => {
|
|
cy.intercept('POST', '/api/graphql', (req) => {
|
|
if (hasOperationName(req, 'CreateTeamMutation')) {
|
|
let result;
|
|
if (name) {
|
|
result = {
|
|
__typename: 'TeamNode',
|
|
id: 'newTeamId',
|
|
name,
|
|
code: 'ABC',
|
|
members: [],
|
|
};
|
|
} else {
|
|
result = {
|
|
__typename: 'DuplicateName',
|
|
reason: 'Dieser Name wird bereits verwendet.',
|
|
};
|
|
}
|
|
req.reply({
|
|
data: {
|
|
createTeam: {
|
|
result,
|
|
},
|
|
},
|
|
});
|
|
}
|
|
});
|
|
};
|
|
|
|
describe('Team', () => {
|
|
beforeEach(() => {
|
|
cy.setup();
|
|
cy.mockGraphqlOps({
|
|
operations: {
|
|
MeQuery: {
|
|
me: {
|
|
...teacher,
|
|
team: null,
|
|
},
|
|
},
|
|
},
|
|
});
|
|
});
|
|
|
|
it('creates a new team', () => {
|
|
const name = 'Team Böhmi';
|
|
|
|
mockCreateTeamCall(name);
|
|
|
|
cy.visit('/me/team');
|
|
|
|
cy.getByDataCy('create-team-button').click();
|
|
cy.getByDataCy('join-form-input').type(name);
|
|
cy.getByDataCy('join-form-confirm').click();
|
|
|
|
cy.getByDataCy('group-list-name').should('contain', name);
|
|
});
|
|
|
|
it('tries to create team but fails due to duplicate name', () => {
|
|
const name = "Gibt's schon";
|
|
|
|
mockCreateTeamCall(false);
|
|
cy.visit('/me/team');
|
|
|
|
cy.getByDataCy('create-team-button').click();
|
|
cy.getByDataCy('join-form-input').type(name);
|
|
cy.getByDataCy('join-form-confirm').click();
|
|
|
|
cy.getByDataCy('join-form-input-error').should('contain', 'Dieser Name wird bereits verwendet.');
|
|
});
|
|
});
|