DataSourcePermissions.test.tsx 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. import React from 'react';
  2. import { shallow } from 'enzyme';
  3. import { DataSourcePermissions, Props } from './DataSourcePermissions';
  4. import { DataSourcePermission, DataSourcePermissionDTO } from 'app/types';
  5. import { AclTarget, dashboardPermissionLevels } from '../../types/acl';
  6. const setup = (propOverrides?: object) => {
  7. const props: Props = {
  8. dataSourcePermission: {} as DataSourcePermissionDTO,
  9. pageId: 1,
  10. addDataSourcePermission: jest.fn(),
  11. enableDataSourcePermissions: jest.fn(),
  12. disableDataSourcePermissions: jest.fn(),
  13. loadDataSourcePermissions: jest.fn(),
  14. removeDataSourcePermission: jest.fn(),
  15. };
  16. Object.assign(props, propOverrides);
  17. const wrapper = shallow(<DataSourcePermissions {...props} />);
  18. const instance = wrapper.instance() as DataSourcePermissions;
  19. return {
  20. wrapper,
  21. instance,
  22. };
  23. };
  24. describe('Render', () => {
  25. it('should render component', () => {
  26. const { wrapper } = setup();
  27. expect(wrapper).toMatchSnapshot();
  28. });
  29. it('should render permissions enabled', () => {
  30. const { wrapper } = setup({
  31. dataSourcePermission: {
  32. enabled: true,
  33. datasourceId: 1,
  34. permissions: [] as DataSourcePermission[],
  35. },
  36. });
  37. expect(wrapper).toMatchSnapshot();
  38. });
  39. });
  40. describe('Functions', () => {
  41. describe('on add permissions', () => {
  42. const { instance } = setup();
  43. it('should add permissions for team', () => {
  44. const mockState = {
  45. permission: dashboardPermissionLevels[0].value,
  46. teamId: 1,
  47. type: AclTarget.Team,
  48. };
  49. instance.onAddPermission(mockState);
  50. expect(instance.props.addDataSourcePermission).toHaveBeenCalledWith(1, { teamId: 1, permission: 1 });
  51. });
  52. it('should add permissions for user', () => {
  53. const mockState = {
  54. permission: dashboardPermissionLevels[0].value,
  55. userId: 1,
  56. type: AclTarget.User,
  57. };
  58. instance.onAddPermission(mockState);
  59. expect(instance.props.addDataSourcePermission).toHaveBeenCalledWith(1, { userId: 1, permission: 1 });
  60. });
  61. });
  62. });