diff --git a/src/pages/Settings.spec.ts b/src/pages/Settings.spec.ts index b081212..f96a9ce 100644 --- a/src/pages/Settings.spec.ts +++ b/src/pages/Settings.spec.ts @@ -1,3 +1,4 @@ +import userEvent from '@testing-library/user-event' import { fireEvent, render, waitFor } from '@testing-library/vue' import { describe, expect, it, vi } from 'vitest' import { router } from 'src/router.ts' @@ -80,4 +81,16 @@ describe('# Settings Page', () => { } `) }) + + it('should display error message when api returned some errors', async () => { + server.use(['PUT', '/api/user', 400, { errors: { username: ['has already been taken'] } }]) + const { getByRole, getByPlaceholderText, getByText } = render(Settings, renderOptions({ + initialState: { user: { user: fixtures.user } }, + })) + + await userEvent.type(getByPlaceholderText('Your name'), 'new username') + await userEvent.click(getByRole('button', { name: 'Update Settings' })) + + expect(getByText('username has already been taken')).toBeInTheDocument() + }) }) diff --git a/src/pages/Settings.vue b/src/pages/Settings.vue index 68201e6..cccda4b 100644 --- a/src/pages/Settings.vue +++ b/src/pages/Settings.vue @@ -7,6 +7,12 @@ Your Settings + +
@@ -75,22 +81,31 @@