/**
* Copyright (c) 2023 Google LLC
* SPDX-License-Identifier: MIT
*/
import React from 'react';
import { composeStories } from '@storybook/react';
import { fireEvent, screen } from '@testing-library/react';
import { renderWithTheme } from '@looker/components-test-utils';
import { i18nInit } from '../utils';
import * as stories from './FilterToken.stories';
const { Basic, Expression, Error, Inline } = composeStories(stories);
describe('FilterToken', () => {
i18nInit();
it('shows the filter summary', () => {
renderWithTheme();
const token = screen.getByRole('button');
expect(token).toHaveTextContent('is foo or bar');
});
it('opens a popover with filter UI', () => {
renderWithTheme();
const token = screen.getByRole('button', { name: 'is any time' });
fireEvent.click(token);
// the popover
expect(screen.getByRole('dialog')).toBeVisible();
// the filter dropdown
expect(screen.getByDisplayValue('is any time')).toBeVisible();
fireEvent.click(document);
});
it('shows error validation', () => {
renderWithTheme();
const token = screen.getByRole('button', { name: 'Value required' });
fireEvent.click(token);
expect(screen.getByDisplayValue('is any time')).toBeInvalid();
expect(screen.getByText('Selection required')).toBeVisible();
fireEvent.click(document);
});
it('renders filter UI inline', () => {
renderWithTheme();
expect(screen.getByDisplayValue('is any time')).toBeVisible();
});
});