import React from 'react'; import {mount} from 'enzyme'; import AccountNotifications from 'app/views/settings/account/accountNotifications'; describe('AccountNotifications', function() { let url = '/users/me/notifications/'; beforeEach(function() { MockApiClient.addMockResponse({ url, method: 'GET', body: { workflowNotifications: 1, selfAssignOnResolve: false, weeklyReports: true, deployNotifications: 3, personalActivityNotifications: true, subscribeByDefault: true, }, }); }); afterEach(function() { MockApiClient.clearMockResponses(); }); it('renders with values from API', function() { let wrapper = mount(, TestStubs.routerContext()); // "Send Me Project Alerts" expect(wrapper.find('Switch[name="subscribeByDefault"]').prop('isActive')).toBe(true); // "Workflow Notifications" expect( wrapper.find('Field[id="workflowNotifications"] RadioGroup').prop('value') ).toBe(1); // "Deploy Notifications" expect(wrapper.find('Field[id="deployNotifications"] RadioGroup').prop('value')).toBe( 3 ); // "Notify Me About my Own Activity" expect( wrapper.find('Switch[name="personalActivityNotifications"]').prop('isActive') ).toBe(true); // "Claim Unassigned Issues" expect(wrapper.find('Switch[name="selfAssignOnResolve"]').prop('isActive')).toBe( false ); }); it('can change "Deploy Notifications"', function() { let wrapper = mount(, TestStubs.routerContext()); let mock = MockApiClient.addMockResponse({ url, method: 'PUT', }); wrapper .find('Field[id="deployNotifications"] RadioLineItem') .at(2) .simulate('click'); expect(mock).toHaveBeenCalledWith( url, expect.objectContaining({ data: {deployNotifications: 4}, }) ); }); });