CalDavSettings.spec.js 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. import { render } from '@testing-library/vue'
  2. import CalDavSettings from './CalDavSettings'
  3. // eslint-disable-next-line no-unused-vars
  4. import { generateUrl } from '@nextcloud/router'
  5. jest.mock('@nextcloud/axios')
  6. jest.mock('@nextcloud/router', () => {
  7. return {
  8. generateUrl(url) {
  9. return url
  10. },
  11. }
  12. })
  13. jest.mock('@nextcloud/initial-state', () => {
  14. return {
  15. loadState: jest.fn(() => 'https://docs.nextcloud.com/server/23/go.php?to=user-sync-calendars'),
  16. }
  17. })
  18. describe('CalDavSettings', () => {
  19. const originalOC = global.OC
  20. const originalOCP = global.OCP
  21. beforeEach(() => {
  22. global.OC = { requestToken: 'secret' }
  23. global.OCP = {
  24. AppConfig: {
  25. setValue: jest.fn(),
  26. },
  27. }
  28. })
  29. afterAll(() => {
  30. global.OC = originalOC
  31. global.OCP = originalOCP
  32. })
  33. test('interactions', async () => {
  34. const TLUtils = render(
  35. CalDavSettings,
  36. {
  37. data() {
  38. return {
  39. sendInvitations: true,
  40. generateBirthdayCalendar: true,
  41. sendEventReminders: true,
  42. sendEventRemindersToSharedGroupMembers: true,
  43. sendEventRemindersPush: true,
  44. }
  45. },
  46. },
  47. Vue => {
  48. Vue.prototype.$t = jest.fn((app, text) => text)
  49. }
  50. )
  51. expect(TLUtils.container).toMatchSnapshot()
  52. const sendInvitations = TLUtils.getByLabelText(
  53. 'Send invitations to attendees'
  54. )
  55. expect(sendInvitations).toBeChecked()
  56. const generateBirthdayCalendar = TLUtils.getByLabelText(
  57. 'Automatically generate a birthday calendar'
  58. )
  59. expect(generateBirthdayCalendar).toBeChecked()
  60. const sendEventReminders = TLUtils.getByLabelText(
  61. 'Send notifications for events'
  62. )
  63. expect(sendEventReminders).toBeChecked()
  64. const sendEventRemindersToSharedGroupMembers = TLUtils.getByLabelText(
  65. 'Send reminder notifications to calendar sharees as well'
  66. )
  67. expect(sendEventRemindersToSharedGroupMembers).toBeChecked()
  68. const sendEventRemindersPush = TLUtils.getByLabelText(
  69. 'Enable notifications for events via push'
  70. )
  71. expect(sendEventRemindersPush).toBeChecked()
  72. /*
  73. FIXME userEvent.click is broken with nextcloud-vue/Button
  74. await userEvent.click(sendInvitations)
  75. expect(sendInvitations).not.toBeChecked()
  76. expect(OCP.AppConfig.setValue).toHaveBeenCalledWith(
  77. 'dav',
  78. 'sendInvitations',
  79. 'no'
  80. )
  81. OCP.AppConfig.setValue.mockClear()
  82. await userEvent.click(sendInvitations)
  83. expect(sendInvitations).toBeChecked()
  84. expect(OCP.AppConfig.setValue).toHaveBeenCalledWith(
  85. 'dav',
  86. 'sendInvitations',
  87. 'yes'
  88. )
  89. axios.post.mockImplementationOnce((uri) => {
  90. expect(uri).toBe('/apps/dav/disableBirthdayCalendar')
  91. return Promise.resolve()
  92. })
  93. await userEvent.click(generateBirthdayCalendar)
  94. axios.post.mockImplementationOnce((uri) => {
  95. expect(uri).toBe('/apps/dav/enableBirthdayCalendar')
  96. return Promise.resolve()
  97. })
  98. await userEvent.click(generateBirthdayCalendar)
  99. expect(generateBirthdayCalendar).toBeEnabled()
  100. OCP.AppConfig.setValue.mockClear()
  101. await userEvent.click(sendEventReminders)
  102. expect(sendEventReminders).not.toBeChecked()
  103. expect(OCP.AppConfig.setValue).toHaveBeenCalledWith(
  104. 'dav',
  105. 'sendEventReminders',
  106. 'no'
  107. )
  108. expect(sendEventRemindersToSharedGroupMembers).toBeDisabled()
  109. expect(sendEventRemindersPush).toBeDisabled()
  110. OCP.AppConfig.setValue.mockClear()
  111. await userEvent.click(sendEventReminders)
  112. expect(sendEventReminders).toBeChecked()
  113. expect(OCP.AppConfig.setValue).toHaveBeenCalledWith(
  114. 'dav',
  115. 'sendEventReminders',
  116. 'yes'
  117. )
  118. expect(sendEventRemindersToSharedGroupMembers).toBeEnabled()
  119. expect(sendEventRemindersPush).toBeEnabled()
  120. */
  121. })
  122. })