managed-user-dropdown-button.spec.tsx 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. import ManagedUserDropdownButton from '../../../../../../frontend/js/features/group-management/components/managed-users/managed-user-dropdown-button'
  2. import sinon from 'sinon'
  3. import { GroupMembersProvider } from '../../../../../../frontend/js/features/group-management/context/group-members-context'
  4. describe('ManagedUserDropdownButton', function () {
  5. const subscriptionId = '123abc'
  6. describe('with managed user', function () {
  7. const user = {
  8. _id: 'some-user',
  9. email: 'some.user@example.com',
  10. first_name: 'Some',
  11. last_name: 'User',
  12. invite: true,
  13. last_active_at: new Date(),
  14. enrollment: {
  15. managedBy: 'some-group',
  16. enrolledAt: new Date(),
  17. },
  18. isEntityAdmin: undefined,
  19. }
  20. beforeEach(function () {
  21. cy.window().then(win => {
  22. win.metaAttributesCache.set('ol-users', [user])
  23. })
  24. cy.mount(
  25. <GroupMembersProvider>
  26. <ManagedUserDropdownButton
  27. user={user}
  28. openOffboardingModalForUser={sinon.stub()}
  29. groupId={subscriptionId}
  30. setManagedUserAlert={sinon.stub()}
  31. />
  32. </GroupMembersProvider>
  33. )
  34. })
  35. it('should render the button', function () {
  36. cy.get('#managed-user-dropdown-some\\.user\\@example\\.com').should(
  37. 'exist'
  38. )
  39. cy.get(`.action-btn`).should('exist')
  40. })
  41. it('should show the menu when the button is clicked', function () {
  42. cy.get('.action-btn').click()
  43. cy.findByTestId('delete-user-action').should('exist')
  44. cy.findByTestId('delete-user-action').then($el => {
  45. Cypress.dom.isVisible($el)
  46. })
  47. })
  48. })
  49. describe('with non-managed user', function () {
  50. const user = {
  51. _id: 'some-user',
  52. email: 'some.user@example.com',
  53. first_name: 'Some',
  54. last_name: 'User',
  55. invite: true,
  56. last_active_at: new Date(),
  57. enrollment: {},
  58. isEntityAdmin: undefined,
  59. }
  60. beforeEach(function () {
  61. cy.window().then(win => {
  62. win.metaAttributesCache.set('ol-users', [user])
  63. })
  64. cy.mount(
  65. <GroupMembersProvider>
  66. <ManagedUserDropdownButton
  67. user={user}
  68. openOffboardingModalForUser={sinon.stub()}
  69. groupId={subscriptionId}
  70. setManagedUserAlert={sinon.stub()}
  71. />
  72. </GroupMembersProvider>
  73. )
  74. })
  75. it('should render the button', function () {
  76. cy.get('#managed-user-dropdown-some\\.user\\@example\\.com').should(
  77. 'exist'
  78. )
  79. cy.get(`.action-btn`).should('exist')
  80. })
  81. it('should show the menu when the button is clicked', function () {
  82. cy.get('.action-btn').click()
  83. cy.findByTestId('remove-user-action').should('exist')
  84. cy.findByTestId('remove-user-action').then($el => {
  85. Cypress.dom.isVisible($el)
  86. })
  87. })
  88. })
  89. describe('with group admin user', function () {
  90. const user = {
  91. _id: 'some-user',
  92. email: 'some.user@example.com',
  93. first_name: 'Some',
  94. last_name: 'User',
  95. invite: false,
  96. last_active_at: new Date(),
  97. enrollment: {},
  98. isEntityAdmin: true,
  99. }
  100. beforeEach(function () {
  101. cy.window().then(win => {
  102. win.metaAttributesCache.set('ol-users', [user])
  103. })
  104. cy.mount(
  105. <GroupMembersProvider>
  106. <ManagedUserDropdownButton
  107. user={user}
  108. openOffboardingModalForUser={sinon.stub()}
  109. groupId={subscriptionId}
  110. setManagedUserAlert={sinon.stub()}
  111. />
  112. </GroupMembersProvider>
  113. )
  114. })
  115. it('should render the button', function () {
  116. cy.get('#managed-user-dropdown-some\\.user\\@example\\.com').should(
  117. 'exist'
  118. )
  119. cy.get(`.action-btn`).should('exist')
  120. })
  121. it('should show the (empty) menu when the button is clicked', function () {
  122. cy.get('.action-btn').click()
  123. cy.findByTestId('no-actions-available').should('exist')
  124. })
  125. })
  126. })