import React from 'react'; import { mount } from 'enzyme'; import { DateUtils } from 'mailspring-exports'; import { DatePickerPopover } from 'mailspring-component-kit'; const makePopover = (props = {}) => { return mount( my header} onSelectDate={() => {}} {...props} /> ); }; describe('DatePickerPopover', function sendLaterPopover() { beforeEach(() => { spyOn(DateUtils, 'format').andReturn('formatted'); }); describe('selectDate', () => { it('calls props.onSelectDate', () => { const onSelectDate = jasmine.createSpy('onSelectDate'); const popover = makePopover({ onSelectDate }); const fakeDate = new Date(); popover.instance().selectDate(fakeDate, 'Custom'); expect(onSelectDate).toHaveBeenCalledWith(fakeDate, 'Custom'); }); }); describe('onSelectMenuOption', () => {}); describe('onCustomDateSelected', () => { it('selects date', () => { const popover = makePopover(); const instance = popover.instance(); spyOn(instance, 'selectDate'); const fakeDate = new Date(); instance.onCustomDateSelected(fakeDate, 'abc'); expect(instance.selectDate).toHaveBeenCalledWith(fakeDate, 'Custom'); }); it('throws error if date is invalid', () => { spyOn(AppEnv, 'showErrorDialog'); const popover = makePopover(); popover.instance().onCustomDateSelected(null, 'abc'); expect(AppEnv.showErrorDialog).toHaveBeenCalled(); }); }); describe('render', () => { it('renders the provided dateOptions', () => { const popover = makePopover({ dateOptions: { 'label 1-': () => {}, 'label 2-': () => {}, }, }); const items = popover.find('.item'); expect(items.at(0).text()).toEqual('label 1-formatted'); expect(items.at(1).text()).toEqual('label 2-formatted'); }); it('renders header components', () => { const popover = makePopover(); expect(popover.find('.header').text()).toEqual('my header'); }); it('renders footer components', () => { const popover = makePopover({ footer: ( footer ), }); expect(popover.find('.footer').text()).toEqual('footer'); expect(popover.find('.date-input-section').exists()).toBe(true); }); }); });