diff --git a/client/cypress/integration/frontend/portfolio/project-page.spec.js b/client/cypress/integration/frontend/portfolio/project-page.spec.js index 0105f9cf..2a03aa3e 100644 --- a/client/cypress/integration/frontend/portfolio/project-page.spec.js +++ b/client/cypress/integration/frontend/portfolio/project-page.spec.js @@ -144,6 +144,24 @@ describe('Project Page', () => { cy.getByDataCy('project-share-link').should('contain', unsharedText); }); + it('cannot edit or delete the project as a teacher', () => { + cy.mockGraphqlOps({ + operations: { + ...operations, + MeQuery: { + me: { + id: 'not-the-same', + isTeacher: true + }, + }, + }, + }); + cy.visit('/portfolio/groot'); + cy.getByDataCy('project-actions').should('not.exist'); + cy.getByDataCy('project-entry').should('have.length', 1); + cy.getByDataCy('project-entry-more').should('not.exist'); + }); + describe('Project Entry', () => { it('should create a new project entry', () => { cy.visit('/portfolio'); diff --git a/client/src/graphql/client.js b/client/src/graphql/client.js index 3ed2ec5c..2bfabfc8 100644 --- a/client/src/graphql/client.js +++ b/client/src/graphql/client.js @@ -107,7 +107,6 @@ export default function (uri, networkErrorCallback) { objectiveGroup: (_, args, {getCacheKey}) => getCacheKey({__typename: 'ObjectiveGroupNode', id: args.id}), projectEntry: (_, args, {getCacheKey}) => getCacheKey({__typename: 'ProjectEntryNode', id: args.id}), project: (_, args, {getCacheKey}) => { - console.log(args); if (args.slug) { return getCacheKey({__typename: 'ProjectNode', id: args.slug}); } else { diff --git a/client/src/pages/portfolio/project.vue b/client/src/pages/portfolio/project.vue index a14ed984..b701df39 100644 --- a/client/src/pages/portfolio/project.vue +++ b/client/src/pages/portfolio/project.vue @@ -13,13 +13,13 @@ :final="project.final" data-cy="project-share-link" class="project__share" - @click.native="updateProjectShareState(project.id, !project.final)" /> + @click.native="updateProjectShareState(project.id, !project.final)"/> + v-if="canEdit"/> @@ -45,7 +45,7 @@ @@ -109,6 +109,9 @@ projectEntryCount() { return this.project.entries ? this.project.entries.length : 0; }, + canEdit() { + return !this.me.readOnly && !this.me.selectedClass.readOnly && this.isOwner; + }, }, apollo: {