123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 |
- import { render } from '@testing-library/vue'
- import CalDavSettings from './CalDavSettings'
- // eslint-disable-next-line no-unused-vars
- import { generateUrl } from '@nextcloud/router'
- jest.mock('@nextcloud/axios')
- jest.mock('@nextcloud/router', () => {
- return {
- generateUrl(url) {
- return url
- },
- }
- })
- jest.mock('@nextcloud/initial-state', () => {
- return {
- loadState: jest.fn(() => 'https://docs.nextcloud.com/server/23/go.php?to=user-sync-calendars'),
- }
- })
- describe('CalDavSettings', () => {
- const originalOC = global.OC
- const originalOCP = global.OCP
- beforeEach(() => {
- global.OC = { requestToken: 'secret' }
- global.OCP = {
- AppConfig: {
- setValue: jest.fn(),
- },
- }
- })
- afterAll(() => {
- global.OC = originalOC
- global.OCP = originalOCP
- })
- test('interactions', async () => {
- const TLUtils = render(
- CalDavSettings,
- {
- data() {
- return {
- sendInvitations: true,
- generateBirthdayCalendar: true,
- sendEventReminders: true,
- sendEventRemindersToSharedGroupMembers: true,
- sendEventRemindersPush: true,
- }
- },
- },
- Vue => {
- Vue.prototype.$t = jest.fn((app, text) => text)
- }
- )
- expect(TLUtils.container).toMatchSnapshot()
- const sendInvitations = TLUtils.getByLabelText(
- 'Send invitations to attendees'
- )
- expect(sendInvitations).toBeChecked()
- const generateBirthdayCalendar = TLUtils.getByLabelText(
- 'Automatically generate a birthday calendar'
- )
- expect(generateBirthdayCalendar).toBeChecked()
- const sendEventReminders = TLUtils.getByLabelText(
- 'Send notifications for events'
- )
- expect(sendEventReminders).toBeChecked()
- const sendEventRemindersToSharedGroupMembers = TLUtils.getByLabelText(
- 'Send reminder notifications to calendar sharees as well'
- )
- expect(sendEventRemindersToSharedGroupMembers).toBeChecked()
- const sendEventRemindersPush = TLUtils.getByLabelText(
- 'Enable notifications for events via push'
- )
- expect(sendEventRemindersPush).toBeChecked()
- /*
- FIXME userEvent.click is broken with nextcloud-vue/Button
- await userEvent.click(sendInvitations)
- expect(sendInvitations).not.toBeChecked()
- expect(OCP.AppConfig.setValue).toHaveBeenCalledWith(
- 'dav',
- 'sendInvitations',
- 'no'
- )
- OCP.AppConfig.setValue.mockClear()
- await userEvent.click(sendInvitations)
- expect(sendInvitations).toBeChecked()
- expect(OCP.AppConfig.setValue).toHaveBeenCalledWith(
- 'dav',
- 'sendInvitations',
- 'yes'
- )
- axios.post.mockImplementationOnce((uri) => {
- expect(uri).toBe('/apps/dav/disableBirthdayCalendar')
- return Promise.resolve()
- })
- await userEvent.click(generateBirthdayCalendar)
- axios.post.mockImplementationOnce((uri) => {
- expect(uri).toBe('/apps/dav/enableBirthdayCalendar')
- return Promise.resolve()
- })
- await userEvent.click(generateBirthdayCalendar)
- expect(generateBirthdayCalendar).toBeEnabled()
- OCP.AppConfig.setValue.mockClear()
- await userEvent.click(sendEventReminders)
- expect(sendEventReminders).not.toBeChecked()
- expect(OCP.AppConfig.setValue).toHaveBeenCalledWith(
- 'dav',
- 'sendEventReminders',
- 'no'
- )
- expect(sendEventRemindersToSharedGroupMembers).toBeDisabled()
- expect(sendEventRemindersPush).toBeDisabled()
- OCP.AppConfig.setValue.mockClear()
- await userEvent.click(sendEventReminders)
- expect(sendEventReminders).toBeChecked()
- expect(OCP.AppConfig.setValue).toHaveBeenCalledWith(
- 'dav',
- 'sendEventReminders',
- 'yes'
- )
- expect(sendEventRemindersToSharedGroupMembers).toBeEnabled()
- expect(sendEventRemindersPush).toBeEnabled()
- */
- })
- })
|