diff --git a/src/proctored-exam-settings/ProctoredExamSettings.jsx b/src/proctored-exam-settings/ProctoredExamSettings.jsx index 468eb0ba9..ba832380f 100644 --- a/src/proctored-exam-settings/ProctoredExamSettings.jsx +++ b/src/proctored-exam-settings/ProctoredExamSettings.jsx @@ -25,11 +25,18 @@ function ExamSettings(props) { } function onCreateZendeskTicketsChange(event) { - setAllowOptingOut(event); + setCreateZendeskTickets(event); } function onProctoringProviderChange(event) { - setProctoringProvider(event.target.value); + const provider = event.target.value; + setProctoringProvider(provider); + + if (provider === 'proctortrack') { + setCreateZendeskTickets(false); + } else if (provider === 'software_secure') { + setCreateZendeskTickets(true); + } } function onProctortrackEscalationEmailChange(event) { diff --git a/src/proctored-exam-settings/ProctoredExamSettings.test.jsx b/src/proctored-exam-settings/ProctoredExamSettings.test.jsx new file mode 100644 index 000000000..dd39cdaf7 --- /dev/null +++ b/src/proctored-exam-settings/ProctoredExamSettings.test.jsx @@ -0,0 +1,27 @@ +import React from 'react'; +import { mount } from 'enzyme'; + +import ProctoredExamSettings from './ProctoredExamSettings'; + +const defaultProps = { + courseId: 'course-v1%3AedX%2BDemoX%2BDemo_Course', +}; + +describe('ProctoredExamSettings', () => { + const component = mount(); + + it('updates zendesk ticket field if proctortrack is provider', () => { + component.find('select#proctoringProvider').simulate('change', { target: { value: 'proctortrack' } }); + expect(component.find('input#createZendeskTickets').prop('checked')).toEqual(false); + }); + + it('updates zendesk ticket field if software_secure is provider', () => { + component.find('select#proctoringProvider').simulate('change', { target: { value: 'software_secure' } }); + expect(component.find('input#createZendeskTickets').prop('checked')).toEqual(true); + }); + + it('does not update zendesk ticket field for any other provider', () => { + component.find('select#proctoringProvider').simulate('change', { target: { value: 'mockprock' } }); + expect(component.find('input#createZendeskTickets').prop('checked')).toEqual(true); + }); +}); diff --git a/src/setupTest.js b/src/setupTest.js index b012711b9..735fd4cd6 100755 --- a/src/setupTest.js +++ b/src/setupTest.js @@ -1 +1,11 @@ import 'babel-polyfill'; +import Enzyme from 'enzyme'; +import Adapter from 'enzyme-adapter-react-16'; +import axios from 'axios'; +import { getAuthenticatedHttpClient, getAuthenticatedUser } from '@edx/frontend-platform/auth'; + +Enzyme.configure({ adapter: new Adapter() }); + +jest.mock('@edx/frontend-platform/auth'); +getAuthenticatedHttpClient.mockReturnValue(axios); +getAuthenticatedUser.mockReturnValue({ administrator: false });