Anvil/tests/components/atoms/SettingsSidebar.test.ts
André Jaenisch ead9d281d0
feat: extract SettingsSidebar into component
This is in need of at least one refactoring. Skeleton is redesigning
the AppRail we are using here. The layout is hard to style.
This implementation interacts with a drawer, but it will likely be
dropped in the final version.

Signed-off-by: André Jaenisch <andre.jaenisch@posteo.de>
2024-07-22 09:34:27 +02:00

125 lines
3.9 KiB
TypeScript

/* Component test for SettingsSidebar atom.
* Copyright (C) 2024 André Jaenisch
* SPDX-FileCopyrightText: 2024 André Jaenisch
* SPDX-License-Identifier: AGPL-3.0-or-later
*
* This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
import '@testing-library/jest-dom';
import { render, screen } from '@testing-library/svelte';
import { get, readable } from 'svelte/store';
import { init, locale, register } from 'svelte-i18n';
import SettingsSidebar from '../../../src/lib/components/atoms/SettingsSidebar.svelte';
import enMessages from '../../../src/lib/i18n/locales/en.json';
describe('SettingsSidebar.svelte', () => {
beforeEach(() => {
register('en', () => import('../../../src/lib/i18n/locales/en.json'));
init({ fallbackLocale: 'en', initialLocale: 'en' });
locale.set('en');
});
it('should mount', () => {
// Arrange
// See https://testing-library.com/docs/svelte-testing-library/example#contexts
const drawerStore = readable([]);
// Act
const { container } = render(SettingsSidebar, {
context: new Map([['drawerStore', drawerStore]])
});
// Assert
expect(container).toBeTruthy();
});
it('should have a headline', () => {
// Arrange
// See https://testing-library.com/docs/svelte-testing-library/example#contexts
const drawerStore = readable([]);
// Act
render(SettingsSidebar, {
context: new Map([['drawerStore', drawerStore]])
});
// Assert
expect(screen.getByText(enMessages.settings.headline)).toBeInTheDocument();
});
it('should have a profile tile', () => {
// Arrange
// See https://testing-library.com/docs/svelte-testing-library/example#contexts
const drawerStore = readable([]);
// Act
render(SettingsSidebar, {
context: new Map([['drawerStore', drawerStore]])
});
// Assert
expect(screen.getByText(enMessages.settings.profile.label)).toBeInTheDocument();
});
it('should have an account tile', () => {
// Arrange
// See https://testing-library.com/docs/svelte-testing-library/example#contexts
const drawerStore = readable([]);
// Act
render(SettingsSidebar, {
context: new Map([['drawerStore', drawerStore]])
});
// Assert
expect(screen.getByText(enMessages.settings.account.label)).toBeInTheDocument();
});
it('should have a SSH/GPG keys tile', () => {
// Arrange
// See https://testing-library.com/docs/svelte-testing-library/example#contexts
const drawerStore = readable([]);
// Act
render(SettingsSidebar, {
context: new Map([['drawerStore', drawerStore]])
});
// Assert
expect(screen.getByText(enMessages.settings.ssh_gpg_keys.label)).toBeInTheDocument();
});
it('should have an appearance tile', () => {
// Arrange
// See https://testing-library.com/docs/svelte-testing-library/example#contexts
const drawerStore = readable([]);
// Act
render(SettingsSidebar, {
context: new Map([['drawerStore', drawerStore]])
});
// Assert
expect(screen.getByText(enMessages.settings.appearance.label)).toBeInTheDocument();
});
it('should have a notifications tile', () => {
// Arrange
// See https://testing-library.com/docs/svelte-testing-library/example#contexts
const drawerStore = readable([]);
// Act
render(SettingsSidebar, {
context: new Map([['drawerStore', drawerStore]])
});
// Assert
expect(screen.getByText(enMessages.settings.notifications.label)).toBeInTheDocument();
});
});