/* Copyright (C) 2017 Cloudbase Solutions SRL This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ import React from 'react' import { shallow } from 'enzyme' import sinon from 'sinon' import TW from '@src/utils/TestWrapper' import type { Project } from '@src/@types/Project' import EndpointDuplicateOptions from '.' type Props = { projects: Project[], selectedProjectId: string, duplicating: boolean, onCancelClick: () => void, onDuplicateClick: (projectId: string) => void, } const wrap = (props: Props) => new TW(shallow(), 'edOptions') const projects: Project[] = [ { id: 'project-1', name: 'Project 1' }, { id: 'project-2', name: 'Project 2' }, ] describe('EndpointDuplicateOptions Component', () => { it('renders projects', () => { let wrapper = wrap({ projects, selectedProjectId: 'project-2', duplicating: false, onCancelClick: () => { }, onDuplicateClick: () => { }, }) expect(wrapper.find('field-project').prop('enum')[1].name).toBe(projects[1].name) expect(wrapper.find('field-project').prop('value')).toBe('project-2') expect(wrapper.find('loading').length).toBe(0) }) it('dispatches duplicate', () => { let onDuplicateClick = sinon.spy() let wrapper = wrap({ projects, selectedProjectId: 'project-2', duplicating: false, onCancelClick: () => { }, onDuplicateClick, }) wrapper.find('duplicateButton').click() expect(onDuplicateClick.args[0][0]).toBe('project-2') }) it('renders loading', () => { let wrapper = wrap({ projects, selectedProjectId: 'project-2', duplicating: true, onCancelClick: () => { }, onDuplicateClick: () => { }, }) expect(wrapper.find('loading').length).toBe(1) }) })