AddPermissions.test.tsx 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. import React from 'react';
  2. import { shallow } from 'enzyme';
  3. import AddPermissions from './AddPermissions';
  4. import { RootStore } from 'app/stores/RootStore/RootStore';
  5. import { getBackendSrv } from 'app/core/services/backend_srv';
  6. jest.mock('app/core/services/backend_srv', () => ({
  7. getBackendSrv: () => {
  8. return {
  9. get: () => {
  10. return Promise.resolve([
  11. { id: 2, dashboardId: 1, role: 'Viewer', permission: 1, permissionName: 'View' },
  12. { id: 3, dashboardId: 1, role: 'Editor', permission: 1, permissionName: 'Edit' },
  13. ]);
  14. },
  15. post: jest.fn(() => Promise.resolve({})),
  16. };
  17. },
  18. }));
  19. describe('AddPermissions', () => {
  20. let wrapper;
  21. let store;
  22. let instance;
  23. let backendSrv: any = getBackendSrv();
  24. beforeAll(() => {
  25. store = RootStore.create({}, { backendSrv: backendSrv });
  26. wrapper = shallow(<AddPermissions permissions={store.permissions} />);
  27. instance = wrapper.instance();
  28. return store.permissions.load(1, true, false);
  29. });
  30. describe('when permission for a user is added', () => {
  31. it('should save permission to db', () => {
  32. const evt = {
  33. target: {
  34. value: 'User',
  35. },
  36. };
  37. const userItem = {
  38. id: 2,
  39. login: 'user2',
  40. };
  41. instance.onTypeChanged(evt);
  42. instance.onUserSelected(userItem);
  43. wrapper.update();
  44. expect(wrapper.find('[data-save-permission]').prop('disabled')).toBe(false);
  45. wrapper.find('form').simulate('submit', { preventDefault() {} });
  46. expect(backendSrv.post.mock.calls.length).toBe(1);
  47. expect(backendSrv.post.mock.calls[0][0]).toBe('/api/dashboards/id/1/permissions');
  48. });
  49. });
  50. describe('when permission for team is added', () => {
  51. it('should save permission to db', () => {
  52. const evt = {
  53. target: {
  54. value: 'Group',
  55. },
  56. };
  57. const teamItem = {
  58. id: 2,
  59. name: 'ug1',
  60. };
  61. instance.onTypeChanged(evt);
  62. instance.onTeamSelected(teamItem);
  63. wrapper.update();
  64. expect(wrapper.find('[data-save-permission]').prop('disabled')).toBe(false);
  65. wrapper.find('form').simulate('submit', { preventDefault() {} });
  66. expect(backendSrv.post.mock.calls.length).toBe(1);
  67. expect(backendSrv.post.mock.calls[0][0]).toBe('/api/dashboards/id/1/permissions');
  68. });
  69. });
  70. afterEach(() => {
  71. backendSrv.post.mockClear();
  72. });
  73. });