// Copyright 2021 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

import React from 'react';
import {render, cleanup} from '@testing-library/react';
import {assert} from 'chai';

import DetailsStep from './DetailsStep.tsx';

describe('DetailsStep', () => {
  afterEach(cleanup);

  it('renders', async () => {
    const textFiled = {
      oneLineSummary: '',
      stepsToReproduce: '',
      describeProblem: '',
    };
    const {container} = render(<DetailsStep textValues={textFiled} setIsRegression={() => {}}/>);

    // this is checking for the first question
    const input = container.querySelector('input');
    assert.isNotNull(input)

    // this is checking for the rest
    const count = document.querySelectorAll('textarea').length;
    assert.equal(count, 4)
  });

  it('renders category in title', async () => {
    const textFiled = {
      oneLineSummary: '',
      stepsToReproduce: '',
      describeProblem: '',
    };

    const {container} = render(<DetailsStep category='UI' textValues={textFiled} setIsRegression={() => {}}/>);

    // this is checking the title contains our category
    const title = container.querySelector('h2');
    assert.include(title?.innerText, 'Details for problems with UI');
  });

});
