import React from 'react';
import { expect, test } from 'vitest';
import { render, waitFor } from '@testing-library/react';
import { defaultProps } from '../mocks';
import { AddToCalendarButton, atcb_action, AddToCalendarButtonType, AddToCalendarActionType } from '../../src/index';
test('is imported and mounted', () => {
expect(AddToCalendarButton).toBeTruthy();
const component = render();
expect(component).toBeTruthy();
expect(component.container.querySelector('add-to-calendar-button')).toBeTruthy();
});
test('is rerendered based on prop', async () => {
const { rerender } = render();
await waitFor(() => {
expect(document.querySelector('.atcb-dark')).toBeTruthy();
expect(document.querySelector('.atcb-light')).toBeFalsy();
});
rerender();
await waitFor(() => {
expect(document.querySelector('.atcb-dark')).toBeFalsy();
expect(document.querySelector('.atcb-light')).toBeTruthy();
});
});
test('is rendered via atcb_action', async () => {
// create container div
const wrapper = render(
,
);
// ... and test for it
const buttonElement = wrapper.container.querySelector('#my-default-button');
expect(buttonElement).toBeTruthy();
// test atcb_action
if (buttonElement) atcb_action(defaultProps as AddToCalendarActionType, buttonElement as HTMLElement);
await waitFor(() => {
expect(wrapper.container.querySelector('[atcb-button-id="my-default-button"]')).toBeTruthy();
});
});