diff --git a/client/cypress/integration/school-class.spec.js b/client/cypress/integration/school-class.spec.js index a018e9f8..6a036581 100644 --- a/client/cypress/integration/school-class.spec.js +++ b/client/cypress/integration/school-class.spec.js @@ -151,9 +151,7 @@ describe('Class Management', () => { cy.get('[data-cy=edit-class-name-link]').click(); cy.get('[data-cy=edit-class-name-input]').type('{selectall}{backspace}').type(className); - cy.get('[data-cy=save-button]').click(); - cy.get('[data-cy=class-name-heading]').should('equal', className); - - + cy.get('[data-cy=modal-save-button]').click(); + cy.get('[data-cy=school-class-name]').should('contain', className); }) }); diff --git a/client/src/App.vue b/client/src/App.vue index 3bf87810..210e0254 100644 --- a/client/src/App.vue +++ b/client/src/App.vue @@ -23,6 +23,7 @@ import NewObjectiveWizard from '@/components/objective-groups/NewObjectiveWizard'; import NewNoteWizard from '@/components/notes/NewNoteWizard'; import EditNoteWizard from '@/components/notes/EditNoteWizard'; + import EditClassNameWizard from '@/components/school-class/EditClassNameWizard'; import FullscreenImage from '@/components/FullscreenImage'; import FullscreenInfographic from '@/components/FullscreenInfographic'; import FullscreenVideo from '@/components/FullscreenVideo'; @@ -49,6 +50,7 @@ NewObjectiveWizard, NewNoteWizard, EditNoteWizard, + EditClassNameWizard, FullscreenImage, FullscreenInfographic, FullscreenVideo diff --git a/client/src/components/modules/Module.vue b/client/src/components/modules/Module.vue index 43c041c1..997f8c08 100644 --- a/client/src/components/modules/Module.vue +++ b/client/src/components/modules/Module.vue @@ -31,7 +31,6 @@ + + diff --git a/client/src/components/school-class/EditClassNameWizard.vue b/client/src/components/school-class/EditClassNameWizard.vue new file mode 100644 index 00000000..8bf6c222 --- /dev/null +++ b/client/src/components/school-class/EditClassNameWizard.vue @@ -0,0 +1,74 @@ + + + diff --git a/client/src/graphql/gql/mutations/updateSchoolClass.gql b/client/src/graphql/gql/mutations/updateSchoolClass.gql new file mode 100644 index 00000000..d9ff3217 --- /dev/null +++ b/client/src/graphql/gql/mutations/updateSchoolClass.gql @@ -0,0 +1,8 @@ +mutation UpdateSchoolClass($input: UpdateSchoolClassInput!) { + updateSchoolClass(input: $input) { + success + schoolClass { + name + } + } +} diff --git a/client/src/pages/myClass.vue b/client/src/pages/myClass.vue index 1b15b85d..740c0581 100644 --- a/client/src/pages/myClass.vue +++ b/client/src/pages/myClass.vue @@ -6,6 +6,7 @@ :name="me.selectedClass.name" :members="me.selectedClass.members" :teacher="me.isTeacher" + :id="me.selectedClass.id" @remove="remove" @add="add" > diff --git a/client/src/store/index.js b/client/src/store/index.js index 5c9a634d..42328442 100644 --- a/client/src/store/index.js +++ b/client/src/store/index.js @@ -166,6 +166,9 @@ export default new Vuex.Store({ }, editModule({commit}, payload) { commit('setEditModule', payload) + }, + editClassName({commit, dispatch}, payload) { + dispatch('showModal', 'edit-class-name-wizard'); } }, diff --git a/server/users/mutations.py b/server/users/mutations.py index 4a5f6c7d..79817c0c 100644 --- a/server/users/mutations.py +++ b/server/users/mutations.py @@ -164,9 +164,30 @@ class AddRemoveMember(relay.ClientIDMutation): return cls(success=True) +class UpdateSchoolClass(relay.ClientIDMutation): + class Input: + id = graphene.ID(required=True) + name = graphene.String() + + success = graphene.Boolean() + school_class = graphene.Field(SchoolClassNode) + + @classmethod + def mutate_and_get_payload(cls, root, info, **kwargs): + id = kwargs.get('id') + name = kwargs.get('name') + + school_class = get_object(SchoolClass, id) + school_class.name = name + school_class.save() + + return cls(success=True, school_class=school_class) + + class ProfileMutations: update_password = UpdatePassword.Field() update_avatar = UpdateAvatar.Field() update_setting = UpdateSetting.Field() join_class = JoinClass.Field() add_remove_member = AddRemoveMember.Field() + update_school_class = UpdateSchoolClass.Field()