import { expect } from 'chai' import { render, screen, fireEvent } from '@testing-library/react' import fetchMock from 'fetch-mock' import sinon from 'sinon' import RegisterForm from '../../../../frontend/js/components/register-form' describe('RegisterForm', function () { beforeEach(function () { fetchMock.removeRoutes().clearHistory() }) afterEach(function () { fetchMock.removeRoutes().clearHistory() }) it('should render the register form', async function () { const setRegistrationSuccessStub = sinon.stub() const setEmailsStub = sinon.stub() const setRegisterErrorStub = sinon.stub() const setFailedEmailsStub = sinon.stub() render( ) await screen.findByLabelText('Emails to register new users') screen.getByRole('button', { name: /register/i }) }) it('should call the fetch request when register button is pressed', async function () { const email = 'abc@gmail.com' const setRegistrationSuccessStub = sinon.stub() const setEmailsStub = sinon.stub() const setRegisterErrorStub = sinon.stub() const setFailedEmailsStub = sinon.stub() const endPointResponse = { status: 200, body: { email, setNewPasswordUrl: 'SetNewPasswordURL', }, } const registerMock = fetchMock.post('/admin/register', endPointResponse) render( ) const registerInput = screen.getByLabelText('Emails to register new users') const registerButton = screen.getByRole('button', { name: /register/i }) fireEvent.change(registerInput, { target: { value: email } }) fireEvent.click(registerButton) expect(registerMock.callHistory.called()).to.be.true }) })