1
0
mirror of https://github.com/verdaccio/verdaccio.git synced 2024-11-13 03:35:52 +01:00
verdaccio/test/unit/webui/components/header.spec.js

103 lines
2.8 KiB
JavaScript
Raw Normal View History

2017-12-01 20:04:01 +01:00
/**
* @prettier
* @flow
2017-12-01 20:04:01 +01:00
*/
2017-12-01 20:04:01 +01:00
import React from 'react';
import { mount } from 'enzyme';
import Header from '../../../../src/webui/components/Header';
describe('<Header /> component with logged in state', () => {
let wrapper;
let props;
beforeEach(() => {
props = {
username: 'test user',
handleLogout: jest.fn(),
2018-12-15 09:18:26 +01:00
onToggleLoginModal: jest.fn(),
scope: 'test scope',
withoutSearch: true,
};
wrapper = mount(<Header {...props} />);
});
test('should load the component in logged in state', () => {
const state = {
openInfoDialog: false,
packages: undefined,
registryUrl: 'http://localhost',
showMobileNavBar: false,
};
expect(wrapper.state()).toEqual(state);
expect(wrapper.html()).toMatchSnapshot();
});
test('handleLoggedInMenu: set anchorEl to html element value in state', () => {
const { handleLoggedInMenu } = wrapper.instance();
// creates a sample menu
const div = document.createElement('div');
const text = document.createTextNode('sample menu');
div.appendChild(text);
2017-12-01 20:04:01 +01:00
const event = {
currentTarget: div,
};
handleLoggedInMenu(event);
expect(wrapper.state('anchorEl')).toEqual(div);
2017-12-01 20:04:01 +01:00
});
});
describe('<Header /> component with logged out state', () => {
let wrapper;
let props;
2017-12-01 20:04:01 +01:00
beforeEach(() => {
props = {
handleLogout: jest.fn(),
2018-12-15 09:18:26 +01:00
onToggleLoginModal: jest.fn(),
scope: 'test scope',
withoutSearch: true,
};
wrapper = mount(<Header {...props} />);
});
test('should load the component in logged out state', () => {
const state = {
openInfoDialog: false,
packages: undefined,
registryUrl: 'http://localhost',
showMobileNavBar: false,
};
expect(wrapper.state()).toEqual(state);
expect(wrapper.html()).toMatchSnapshot();
});
test('handleLoggedInMenuClose: set anchorEl value to null in state', () => {
const { handleLoggedInMenuClose } = wrapper.instance();
handleLoggedInMenuClose();
expect(wrapper.state('anchorEl')).toBeNull();
});
test('handleOpenRegistryInfoDialog: set openInfoDialog to be truthy in state', () => {
const { handleOpenRegistryInfoDialog } = wrapper.instance();
handleOpenRegistryInfoDialog();
expect(wrapper.state('openInfoDialog')).toBeTruthy();
});
test('handleCloseRegistryInfoDialog: set openInfoDialog to be falsy in state', () => {
const { handleCloseRegistryInfoDialog } = wrapper.instance();
handleCloseRegistryInfoDialog();
expect(wrapper.state('openInfoDialog')).toBeFalsy();
});
test('handleToggleLogin: close/open popover menu', () => {
const { handleToggleLogin } = wrapper.instance();
handleToggleLogin();
expect(wrapper.state('anchorEl')).toBeNull();
2018-12-15 09:18:26 +01:00
expect(props.onToggleLoginModal).toHaveBeenCalled();
});
});