/**
* PackageList component
*/
import React from 'react';
import { mount } from 'enzyme';
import PackageList from '../../../src/webui/src/components/PackageList';
import Help from '../../../src/webui/src/components/Help';
import NoItems from '../../../src/webui/src/components/NoItems';
import { BrowserRouter } from 'react-router-dom';
describe(' component', () => {
it('should load the component with no packages', () => {
const props = {
packages: [],
help: true
};
const wrapper = mount(
);
const instance = wrapper.instance();
expect(instance.isTherePackages()).toBeFalsy();
expect(instance.renderHelp()).toBeTruthy();
expect(instance.renderOptions()).toEqual();
expect(instance.renderTitle()).toBeUndefined();
});
it('should load the component with packages', () => {
const props = {
packages: [
{
name: 'verdaccio',
version: '1.0.0',
time: new Date(),
description: 'Private NPM repository',
author: { name: 'Sam' }
},
{
name: 'abc',
version: '1.0.1',
time: new Date(),
description: 'abc description',
author: { name: 'Rose' }
},
{
name: 'xyz',
version: '1.1.0',
description: 'xyz description',
author: { name: 'Martin' }
}
],
help: false
};
const wrapper = mount(
);
const instance = wrapper.find(PackageList).instance();
expect(instance.isTherePackages()).toBeTruthy();
expect(instance.renderHelp()).toBeUndefined();
expect(instance.renderTitle().props.children).toEqual('Available Packages');
expect(instance.renderNoItems()).toEqual(
);
expect(instance.renderOptions()).toEqual(
);
// package count
expect(wrapper.find('Package')).toHaveLength(3);
// match snapshot
expect(wrapper.html()).toMatchSnapshot();
});
});