BrowserCog.test.tsx 1.82 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
/**
 * See the NOTICE file distributed with this work for additional information
 * regarding copyright ownership.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

17
import React from 'react';
18 19
import { render } from '@testing-library/react';
import userEvent from '@testing-library/user-event';
20 21 22 23 24
import faker from 'faker';

import BrowserCog, { BrowserCogProps } from './BrowserCog';

jest.mock('../browser-track-config/BrowserTrackConfig', () => () => (
25
  <div id="browserTrackConfig">BrowserTrackConfig</div>
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
));

describe('<BrowserCog />', () => {
  afterEach(() => {
    jest.resetAllMocks();
  });

  const defaultProps: BrowserCogProps = {
    cogActivated: true,
    trackId: faker.lorem.words(),
    updateSelectedCog: jest.fn()
  };

  describe('rendering', () => {
    test('renders browser track config', () => {
41 42
      const { container } = render(<BrowserCog {...defaultProps} />);
      expect(container.querySelector('#browserTrackConfig')).toBeTruthy();
43 44 45 46
    });
  });

  describe('behaviour', () => {
Jyothish's avatar
Jyothish committed
47
    test('renders close button when track config is open', () => {
48
      const { container } = render(<BrowserCog {...defaultProps} />);
Jyothish's avatar
Jyothish committed
49
      const cogButton = container.querySelector('.closeButton');
50 51
      userEvent.click(cogButton as HTMLButtonElement);
      expect(defaultProps.updateSelectedCog).toHaveBeenCalledTimes(1);
52 53 54
    });
  });
});