blob: 72ac69d6eacf1c55df6cf7742e6f4fcad3378e28 [file] [log] [blame]
// Licensed under the Apache License, Version 2.0 (the "License"); you may not
// use this file except in compliance with the License. You may obtain a copy of
// the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
// License for the specific language governing permissions and limitations under
// the License.
import React from 'react';
import ReactDOM from 'react-dom';
import { shallow } from 'enzyme';
import IndexResults from '../index-results/components/results/IndexResults';
import sinon from 'sinon';
describe('IndexResults', () => {
it('calls fetchDocs on mount only when fetchAtStartup is set to true', () => {
const spy = sinon.spy();
shallow(<IndexResults
fetchParams={{}}
selectedDocs={[]}
queryOptionsParams={{}}
fetchDocs={spy}
results={[]}
fetchAtStartup={true}
/>);
expect(spy.calledOnce).toBe(true);
spy.resetHistory();
const wrapperDontFetch = shallow(<IndexResults
fetchParams={{}}
selectedDocs={[]}
queryOptionsParams={{}}
fetchDocs={spy}
results={[]}
fetchAtStartup={false}
/>);
wrapperDontFetch.instance().componentDidMount();
expect(spy.notCalled).toBe(true);
});
it('calls fetchDocs on update if ddocsOnly switches', () => {
const spy = sinon.spy();
const wrapper = shallow(<IndexResults
fetchParams={{}}
selectedDocs={[]}
queryOptionsParams={{}}
fetchDocs={() => { }}
resetState={() => { }}
results={[]}
ddocsOnly={false}
fetchAtStartup={true}
fetchUrl={''}
/>);
wrapper.instance().UNSAFE_componentWillUpdate({
ddocsOnly: true,
fetchParams: {},
queryOptionsParams: {},
fetchDocs: spy,
resetState: () => { },
});
expect(spy.calledOnce).toBe(true);
});
it('calls fetchDocs on update if fetchUrl switches', () => {
const spy = sinon.spy();
const wrapper = shallow(<IndexResults
fetchParams={{}}
selectedDocs={[]}
queryOptionsParams={{}}
fetchDocs={() => { }}
resetState={() => { }}
results={[]}
ddocsOnly={false}
fetchAtStartup={true}
fetchUrl={'view1'}
/>);
wrapper.instance().UNSAFE_componentWillUpdate({
fetchParams: {},
queryOptionsParams: {},
fetchDocs: spy,
resetState: () => { },
fetchUrl: 'view2'
});
expect(spy.calledOnce).toBe(true);
});
it('deleteSelectedDocs calls bulkDeleteDocs', () => {
const spy = sinon.spy();
const wrapper = shallow(<IndexResults
bulkDeleteDocs={spy}
fetchParams={{}}
selectedDocs={[]}
queryOptionsParams={{}}
fetchDocs={() => { }}
results={[]}
fetchAtStartup={true}
/>);
wrapper.instance().deleteSelectedDocs();
expect(spy.calledOnce).toBe(true);
});
it('isSelected returns true when id is in selectedDocs', () => {
const selectedDocs = [{
_id: 'foo'
}];
const wrapper = shallow(<IndexResults
selectedDocs={selectedDocs}
fetchDocs={() => { }}
results={[]}
fetchAtStartup={true}
/>);
expect(wrapper.instance().isSelected('foo')).toBe(true);
});
it('isSelected returns false when id is not in selectedDocs', () => {
const selectedDocs = [{
_id: 'bar'
}];
const wrapper = shallow(<IndexResults
selectedDocs={selectedDocs}
fetchDocs={() => { }}
results={[]}
fetchAtStartup={true}
/>);
expect(wrapper.instance().isSelected('foo')).toBe(false);
});
it('docChecked calls selectDoc', () => {
const spy = sinon.spy();
const wrapper = shallow(<IndexResults
selectedDocs={[]}
fetchDocs={() => { }}
results={[]}
selectDoc={spy}
fetchAtStartup={true}
/>);
wrapper.instance().docChecked('foo', '1-123324345');
expect(spy.calledOnce).toBe(true);
});
it('toggleSelectAll calls bulkCheckOrUncheck', () => {
const spy = sinon.spy();
const wrapper = shallow(<IndexResults
selectedDocs={[]}
fetchDocs={() => { }}
results={[]}
docs={[]}
allDocumentsSelected={false}
bulkCheckOrUncheck={spy}
fetchAtStartup={true}
/>);
wrapper.instance().toggleSelectAll();
expect(spy.calledOnce).toBe(true);
});
});