// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
import {shallow} from 'enzyme';
import React from 'react';
import LeaveTeamModal from 'components/leave_team_modal/leave_team_modal';
describe('components/LeaveTeamModal', () => {
const requiredProps = {
currentUserId: 'user_id',
currentTeamId: 'team_id',
onHide: jest.fn(),
show: false,
isBusy: false,
actions: {
leaveTeam: jest.fn(),
toggleSideBarRightMenu: jest.fn(),
},
};
it('should render the leave team model', () => {
const wrapper = shallow();
expect(wrapper).toMatchSnapshot();
});
it('should call onHide when cancel is clicked', () => {
const wrapper = shallow();
const cancel = wrapper.find('.btn-link').first();
cancel.simulate('click');
expect(requiredProps.onHide).toHaveBeenCalledTimes(1);
});
it('should call leaveTeam and toggleSideBarRightMenu when ok is clicked', () => {
const wrapper = shallow();
const ok = wrapper.find('.btn-danger').first();
ok.simulate('click');
expect(requiredProps.actions.leaveTeam).toHaveBeenCalledTimes(1);
expect(requiredProps.actions.toggleSideBarRightMenu).toHaveBeenCalledTimes(1);
expect(requiredProps.onHide).toHaveBeenCalledTimes(1);
expect(requiredProps.actions.leaveTeam).
toHaveBeenCalledWith(requiredProps.currentTeamId, requiredProps.currentUserId);
});
it('should call attach and remove event listeners', () => {
document.addEventListener = jest.fn();
document.removeEventListener = jest.fn();
const wrapper = shallow();
const instance = wrapper.instance() as LeaveTeamModal;
expect(document.addEventListener).toHaveBeenCalledTimes(1);
expect(document.removeEventListener).not.toBeCalled();
instance.componentWillUnmount();
expect(document.removeEventListener).toHaveBeenCalledTimes(1);
});
});