From 6e559ef90e26058051c485fca28e0270cf920533 Mon Sep 17 00:00:00 2001 From: Pig Fang Date: Thu, 6 Feb 2020 09:27:27 +0800 Subject: [PATCH] tweak tests --- .../tests/views/user/Dashboard.test.tsx | 12 +-- .../assets/tests/views/user/OAuth.test.tsx | 74 +++++++++++++------ 2 files changed, 57 insertions(+), 29 deletions(-) diff --git a/resources/assets/tests/views/user/Dashboard.test.tsx b/resources/assets/tests/views/user/Dashboard.test.tsx index d82e786a..a39824db 100644 --- a/resources/assets/tests/views/user/Dashboard.test.tsx +++ b/resources/assets/tests/views/user/Dashboard.test.tsx @@ -2,11 +2,9 @@ import React from 'react' import { render, fireEvent, wait } from '@testing-library/react' import * as fetch from '@/scripts/net' import { trans } from '@/scripts/i18n' -import { toast } from '@/scripts/notify' import Dashboard from '@/views/user/Dashboard' jest.mock('@/scripts/net') -jest.mock('@/scripts/notify') function scoreInfo(data = {}, user = {}, stats = {}) { return { @@ -75,7 +73,7 @@ describe('sign', () => { data: { score: 900, storage: { used: 5, total: 25 } }, }) - const { getByRole, queryByText } = render() + const { getByRole, getByText, queryByText } = render() await wait() const button = getByRole('button') @@ -83,7 +81,8 @@ describe('sign', () => { await wait() expect(fetch.post).toBeCalledWith('/user/sign') - expect(toast.success).toBeCalledWith('ok') + expect(getByText('ok')).toBeInTheDocument() + expect(getByRole('status')).toHaveClass('alert-success') expect(button).toBeDisabled() expect(queryByText(/25/)).toBeInTheDocument() }) @@ -91,14 +90,15 @@ describe('sign', () => { it('should fail', async () => { fetch.post.mockResolvedValue({ code: 1, message: 'f', data: {} }) - const { getByRole } = render() + const { getByRole, getByText } = render() await wait() fireEvent.click(getByRole('button')) await wait() expect(fetch.post).toBeCalledWith('/user/sign') - expect(toast.warning).toBeCalledWith('f') + expect(getByText('f')).toBeInTheDocument() + expect(getByRole('alert')).toHaveClass('alert-warning') }) }) diff --git a/resources/assets/tests/views/user/OAuth.test.tsx b/resources/assets/tests/views/user/OAuth.test.tsx index 9154ddd5..0fabba03 100644 --- a/resources/assets/tests/views/user/OAuth.test.tsx +++ b/resources/assets/tests/views/user/OAuth.test.tsx @@ -2,12 +2,10 @@ import React from 'react' import { render, fireEvent, wait } from '@testing-library/react' import * as fetch from '@/scripts/net' import { trans } from '@/scripts/i18n' -import { toast, showModal } from '@/scripts/notify' import OAuth from '@/views/user/OAuth' import { App } from '@/views/user/OAuth/types' jest.mock('@/scripts/net') -jest.mock('@/scripts/notify') const example: App = { id: 1, @@ -54,7 +52,9 @@ describe('create app', () => { it('failed', async () => { fetch.post.mockResolvedValue({ message: 'exception' }) - const { getByPlaceholderText, getByText, queryByText } = render() + const { getByPlaceholderText, getByText, getByRole, queryByText } = render( + , + ) await wait() fireEvent.click(getByText(trans('user.oauth.create'))) @@ -71,9 +71,10 @@ describe('create app', () => { name: 'My App', redirect: 'http://url.test/', }) - expect(toast.error).toBeCalledWith('exception') expect(queryByText(example.name)).not.toBeInTheDocument() expect(queryByText(example.redirect)).not.toBeInTheDocument() + expect(queryByText('exception')).toBeInTheDocument() + expect(getByRole('alert')).toHaveClass('alert-danger') }) it('cancel dialog', async () => { @@ -106,12 +107,17 @@ describe('edit app', () => { describe('edit name', () => { it('succeeded', async () => { fetch.put.mockResolvedValue({ ...example, name: 'new name' }) - showModal.mockResolvedValue({ value: 'new name' }) - const { getByTitle, queryByText } = render() + const { getByTitle, getByText, getByDisplayValue, queryByText } = render( + , + ) await wait() fireEvent.click(getByTitle(trans('user.oauth.modifyName'))) + fireEvent.input(getByDisplayValue(example.name), { + target: { value: 'new name' }, + }) + fireEvent.click(getByText(trans('general.confirm'))) await wait() expect(fetch.put).toBeCalledWith(`/oauth/clients/${example.id}`, { @@ -123,12 +129,21 @@ describe('edit app', () => { it('failed', async () => { fetch.put.mockResolvedValue({ message: 'exception' }) - showModal.mockResolvedValue({ value: 'new name' }) - const { getByTitle, queryByText } = render() + const { + getByTitle, + getByText, + getByDisplayValue, + getByRole, + queryByText, + } = render() await wait() fireEvent.click(getByTitle(trans('user.oauth.modifyName'))) + fireEvent.input(getByDisplayValue(example.name), { + target: { value: 'new name' }, + }) + fireEvent.click(getByText(trans('general.confirm'))) await wait() expect(fetch.put).toBeCalledWith(`/oauth/clients/${example.id}`, { @@ -136,15 +151,16 @@ describe('edit app', () => { name: 'new name', }) expect(queryByText(example.name)).toBeInTheDocument() + expect(queryByText('exception')).toBeInTheDocument() + expect(getByRole('alert')).toHaveClass('alert-danger') }) it('cancel dialog', async () => { - showModal.mockRejectedValue(null) - - const { getByTitle, queryByText } = render() + const { getByTitle, getByText, queryByText } = render() await wait() fireEvent.click(getByTitle(trans('user.oauth.modifyName'))) + fireEvent.click(getByText(trans('general.cancel'))) await wait() expect(fetch.put).not.toBeCalled() @@ -155,12 +171,17 @@ describe('edit app', () => { describe('edit redirect url', () => { it('succeeded', async () => { fetch.put.mockResolvedValue({ ...example, redirect: 'http://new.test/' }) - showModal.mockResolvedValue({ value: 'http://new.test/' }) - const { getByTitle, queryByText } = render() + const { getByTitle, getByDisplayValue, getByText, queryByText } = render( + , + ) await wait() fireEvent.click(getByTitle(trans('user.oauth.modifyUrl'))) + fireEvent.input(getByDisplayValue(example.redirect), { + target: { value: 'http://new.test/' }, + }) + fireEvent.click(getByText(trans('general.confirm'))) await wait() expect(fetch.put).toBeCalledWith(`/oauth/clients/${example.id}`, { @@ -172,29 +193,38 @@ describe('edit app', () => { it('failed', async () => { fetch.put.mockResolvedValue({ message: 'exception' }) - showModal.mockResolvedValue({ value: 'http://new.test/' }) - const { getByTitle, queryByText } = render() + const { + getByTitle, + getByDisplayValue, + getByText, + getByRole, + queryByText, + } = render() await wait() fireEvent.click(getByTitle(trans('user.oauth.modifyUrl'))) + fireEvent.input(getByDisplayValue(example.redirect), { + target: { value: 'http://new.test/' }, + }) + fireEvent.click(getByText(trans('general.confirm'))) await wait() expect(fetch.put).toBeCalledWith(`/oauth/clients/${example.id}`, { ...example, redirect: 'http://new.test/', }) - expect(toast.error).toBeCalledWith('exception') expect(queryByText(example.redirect)).toBeInTheDocument() + expect(queryByText('exception')).toBeInTheDocument() + expect(getByRole('alert')).toHaveClass('alert-danger') }) it('cancel dialog', async () => { - showModal.mockRejectedValue(null) - - const { getByTitle, queryByText } = render() + const { getByTitle, getByText, queryByText } = render() await wait() fireEvent.click(getByTitle(trans('user.oauth.modifyUrl'))) + fireEvent.click(getByText(trans('general.cancel'))) await wait() expect(fetch.put).not.toBeCalled() @@ -209,12 +239,11 @@ describe('delete app', () => { }) it('succeeded', async () => { - showModal.mockResolvedValue({ value: '' }) - const { getByText, queryByText } = render() await wait() fireEvent.click(getByText(trans('report.delete'))) + fireEvent.click(getByText(trans('general.confirm'))) await wait() expect(fetch.del).toBeCalledWith(`/oauth/clients/${example.id}`) @@ -223,12 +252,11 @@ describe('delete app', () => { }) it('cancel dialog', async () => { - showModal.mockRejectedValue(null) - const { getByText, queryByText } = render() await wait() fireEvent.click(getByText(trans('report.delete'))) + fireEvent.click(getByText(trans('general.cancel'))) await wait() expect(fetch.post).not.toBeCalled()