TeamPages.test.tsx 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. import React from 'react';
  2. import { shallow } from 'enzyme';
  3. import { TeamPages, Props } from './TeamPages';
  4. import { NavModel, Team, TeamMember, OrgRole } from '../../types';
  5. import { getMockTeam } from './__mocks__/teamMocks';
  6. import { User } from 'app/core/services/context_srv';
  7. jest.mock('app/core/config', () => ({
  8. buildInfo: { isEnterprise: true },
  9. }));
  10. const setup = (propOverrides?: object) => {
  11. const props: Props = {
  12. navModel: {} as NavModel,
  13. teamId: 1,
  14. loadTeam: jest.fn(),
  15. loadTeamMembers: jest.fn(),
  16. pageName: 'members',
  17. team: {} as Team,
  18. members: [] as TeamMember[],
  19. editorsCanAdmin: false,
  20. signedInUser: {
  21. id: 1,
  22. isGrafanaAdmin: false,
  23. orgRole: OrgRole.Viewer,
  24. } as User,
  25. };
  26. Object.assign(props, propOverrides);
  27. const wrapper = shallow(<TeamPages {...props} />);
  28. const instance = wrapper.instance();
  29. return {
  30. wrapper,
  31. instance,
  32. };
  33. };
  34. describe('Render', () => {
  35. it('should render component', () => {
  36. const { wrapper } = setup();
  37. expect(wrapper).toMatchSnapshot();
  38. });
  39. it('should render member page if team not empty', () => {
  40. const { wrapper } = setup({
  41. team: getMockTeam(),
  42. });
  43. expect(wrapper).toMatchSnapshot();
  44. });
  45. it('should render settings and preferences page', () => {
  46. const { wrapper } = setup({
  47. team: getMockTeam(),
  48. pageName: 'settings',
  49. preferences: {
  50. homeDashboardId: 1,
  51. theme: 'Default',
  52. timezone: 'Default',
  53. },
  54. });
  55. expect(wrapper).toMatchSnapshot();
  56. });
  57. it('should render group sync page', () => {
  58. const { wrapper } = setup({
  59. team: getMockTeam(),
  60. pageName: 'groupsync',
  61. });
  62. expect(wrapper).toMatchSnapshot();
  63. });
  64. describe('when feature toggle editorsCanAdmin is turned on', () => {
  65. it('should render settings page if user is team admin', () => {
  66. const { wrapper } = setup({
  67. team: getMockTeam(),
  68. pageName: 'settings',
  69. preferences: {
  70. homeDashboardId: 1,
  71. theme: 'Default',
  72. timezone: 'Default',
  73. },
  74. editorsCanAdmin: true,
  75. signedInUser: {
  76. id: 1,
  77. isGrafanaAdmin: false,
  78. orgRole: OrgRole.Admin,
  79. } as User,
  80. });
  81. expect(wrapper).toMatchSnapshot();
  82. });
  83. it('should not render settings page if user is team member', () => {
  84. const { wrapper } = setup({
  85. team: getMockTeam(),
  86. pageName: 'settings',
  87. preferences: {
  88. homeDashboardId: 1,
  89. theme: 'Default',
  90. timezone: 'Default',
  91. },
  92. editorsCanAdmin: true,
  93. signedInUser: {
  94. id: 1,
  95. isGrafanaAdmin: false,
  96. orgRole: OrgRole.Viewer,
  97. } as User,
  98. });
  99. expect(wrapper).toMatchSnapshot();
  100. });
  101. });
  102. });