Anvil/tests/components/atoms/CommitDate.test.ts
André Jaenisch 548c05cfda
refactor: extract CommitDate into component
This way the History molecule is only concerned with mapping the list of
commits to the appropriate structure and iterating over it. The markup
is deferred to separate components now.

Signed-off-by: André Jaenisch <andre.jaenisch@posteo.de>
2024-06-23 15:39:51 +02:00

97 lines
3.3 KiB
TypeScript

/* Component test for CommitDate 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 { init, locale, register } from 'svelte-i18n';
import CommitDate from '../../../src/lib/components/atoms/CommitDate.svelte';
import enMessages from '../../../src/lib/i18n/locales/en.json';
describe('CommitDate.svelte', () => {
beforeEach(() => {
register('en', () => import('../../../src/lib/i18n/locales/en.json'));
init({ fallbackLocale: 'en', initialLocale: 'en' });
locale.set('en');
});
it('should mount', () => {
// Arrange
// TODO: Figure out why beforeEach is not executed
register('en', () => import('../../../src/lib/i18n/locales/en.json'));
init({ fallbackLocale: 'en', initialLocale: 'en' });
locale.set('en');
// Act
const { container } = render(CommitDate);
// Assert
expect(container).toBeTruthy();
});
it('should list the date of commit', () => {
// Arrange
// TODO: Figure out why beforeEach is not executed
register('en', () => import('../../../src/lib/i18n/locales/en.json'));
init({ fallbackLocale: 'en', initialLocale: 'en' });
locale.set('en');
const commitDate = new Date('1970-01-01').toISOString();
const numberOfCommits = 1;
const repoName = 'Anvil';
// Act
render(CommitDate, { commitDate, numberOfCommits, repoName });
const dateOfCommit = screen.getByText(new RegExp('1/1/70'));
// Assert
expect(dateOfCommit).toBeInTheDocument();
});
it('should list the number of commits', () => {
// Arrange
// TODO: Figure out why beforeEach is not executed
register('en', () => import('../../../src/lib/i18n/locales/en.json'));
init({ fallbackLocale: 'en', initialLocale: 'en' });
locale.set('en');
const commitDate = new Date().toISOString();
const numberOfCommits = 1;
const repoName = 'Anvil';
// Act
render(CommitDate, { commitDate, numberOfCommits, repoName });
const commitNumber = screen.getByText(/1 commit/);
// Assert
expect(commitNumber).toBeInTheDocument();
});
it('should list the repo name', () => {
// Arrange
// TODO: Figure out why beforeEach is not executed
register('en', () => import('../../../src/lib/i18n/locales/en.json'));
init({ fallbackLocale: 'en', initialLocale: 'en' });
locale.set('en');
const commitDate = new Date().toISOString();
const numberOfCommits = 1;
const repoName = 'Anvil';
// Act
render(CommitDate, { commitDate, numberOfCommits, repoName });
const nameOfRepo = screen.getByText(repoName);
// Assert
expect(nameOfRepo).toBeInTheDocument();
});
});