diff --git a/src/lib/components/atoms/CommitDate.svelte b/src/lib/components/atoms/CommitDate.svelte
new file mode 100644
index 0000000..c1e90dc
--- /dev/null
+++ b/src/lib/components/atoms/CommitDate.svelte
@@ -0,0 +1,52 @@
+
+
+
+
+
+
+
+
+
+
+ {$date(new Date(commitDate))} - {$_(i18n.numberOfCommits, {
+ values: { number: numberOfCommits }
+ })}
+
+
+ {repoName}
+
+
+
diff --git a/src/lib/components/molecules/History.svelte b/src/lib/components/molecules/History.svelte
index bb038a0..38fa214 100644
--- a/src/lib/components/molecules/History.svelte
+++ b/src/lib/components/molecules/History.svelte
@@ -12,10 +12,8 @@ You should have received a copy of the GNU Affero General Public License along w
-->
{#each Object.entries(groupCommitsByDateAndProject(commitsMap)) as commitsByDateAndProject}
{#each Object.entries(commitsByDateAndProject[1]) as commitsByProject}
-
-
-
-
-
-
-
-
-
-
- {$date(new Date(commitsByDateAndProject[0]))} - {$_(
- 'page.profile.history.activities.commits.number',
- { values: { number: commitsByProject[1].length } }
- )}
-
-
- {followingsMap.find((following) => following.id === commitsByProject[0]).name}
-
-
-
-
+
{#each commitsByProject[1] as commit}
-
diff --git a/tests/components/atoms/CommitDate.test.ts b/tests/components/atoms/CommitDate.test.ts
new file mode 100644
index 0000000..f78f688
--- /dev/null
+++ b/tests/components/atoms/CommitDate.test.ts
@@ -0,0 +1,97 @@
+/* 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 .
+ */
+
+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();
+ });
+});
diff --git a/tests/components/molecules/History.test.ts b/tests/components/molecules/History.test.ts
index 155dbe5..340e194 100644
--- a/tests/components/molecules/History.test.ts
+++ b/tests/components/molecules/History.test.ts
@@ -114,366 +114,6 @@ describe('History.svelte', () => {
// One listitem because of date and one for the commit
expect(listItems).toHaveLength(1 + 1);
});
-
- it('should list 1 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 commitsMap = [
- {
- '@context': ['https://www.w3.org/ns/activitystreams', 'https://forgefed.org/ns'],
- id: 'https://fig.fr33domlover.site/repos/9nOkn/commits/36e1bb146fa3a6fb5c8d490f76ff4cca5f8f2e78',
- type: 'Commit',
- context: 'https://fig.fr33domlover.site/repos/9nOkn',
- attributedTo: 'https://fig.fr33domlover.site/people/qn870',
- committedBy: {
- name: 'vervis',
- mbox: 'mailto:vervis@vervis.vervis'
- },
- name: 'Best commit ever',
- hash: '36e1bb146fa3a6fb5c8d490f76ff4cca5f8f2e78',
- created: '2022-09-28T16:01:30Z',
- committed: '2022-09-28T16:06:36Z'
- }
- ];
-
- const followingsMap = [
- {
- '@context': [
- 'https://www.w3.org/ns/activitystreams',
- 'https://w3id.org/security/v2',
- 'https://forgefed.org/ns'
- ],
- id: 'https://fig.fr33domlover.site/repos/9nOkn',
- inbox: 'https://fig.fr33domlover.site/repos/9nOkn/inbox',
- outbox: 'https://fig.fr33domlover.site/repos/9nOkn/outbox',
- followers: 'https://fig.fr33domlover.site/repos/9nOkn/followers',
- publicKey: [
- 'https://fig.fr33domlover.site/akey1',
- 'https://fig.fr33domlover.site/akey2'
- ],
- type: 'Repository',
- name: 'Very fun demo',
- summary: 'Testing MR demo',
- team: null,
- versionControlSystem: 'https://forgefed.org/ns#git',
- sendPatchesTo: 'https://fig.fr33domlover.site/looms/9nOkn',
- cloneUri: 'https://fig.fr33domlover.site/repos/9nOkn',
- collaborators: 'https://fig.fr33domlover.site/repos/9nOkn/collabs',
- context: 'https://fig.fr33domlover.site/repos/9nOkn/projects'
- }
- ];
-
- // Act
- render(History, { commitsMap, followingsMap });
- const numberOfCommits = screen.getByText(/1 commit/);
-
- // Assert
- expect(numberOfCommits).toBeInTheDocument();
- });
-
- it('should list the project', () => {
- // 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 commitsMap = [
- {
- '@context': ['https://www.w3.org/ns/activitystreams', 'https://forgefed.org/ns'],
- id: 'https://fig.fr33domlover.site/repos/9nOkn/commits/36e1bb146fa3a6fb5c8d490f76ff4cca5f8f2e78',
- type: 'Commit',
- context: 'https://fig.fr33domlover.site/repos/9nOkn',
- attributedTo: 'https://fig.fr33domlover.site/people/qn870',
- committedBy: {
- name: 'vervis',
- mbox: 'mailto:vervis@vervis.vervis'
- },
- name: 'Best commit ever',
- hash: '36e1bb146fa3a6fb5c8d490f76ff4cca5f8f2e78',
- created: '2022-09-28T16:01:30Z',
- committed: '2022-09-28T16:06:36Z'
- }
- ];
-
- const followingsMap = [
- {
- '@context': [
- 'https://www.w3.org/ns/activitystreams',
- 'https://w3id.org/security/v2',
- 'https://forgefed.org/ns'
- ],
- id: 'https://fig.fr33domlover.site/repos/9nOkn',
- inbox: 'https://fig.fr33domlover.site/repos/9nOkn/inbox',
- outbox: 'https://fig.fr33domlover.site/repos/9nOkn/outbox',
- followers: 'https://fig.fr33domlover.site/repos/9nOkn/followers',
- publicKey: [
- 'https://fig.fr33domlover.site/akey1',
- 'https://fig.fr33domlover.site/akey2'
- ],
- type: 'Repository',
- name: 'Very fun demo',
- summary: 'Testing MR demo',
- team: null,
- versionControlSystem: 'https://forgefed.org/ns#git',
- sendPatchesTo: 'https://fig.fr33domlover.site/looms/9nOkn',
- cloneUri: 'https://fig.fr33domlover.site/repos/9nOkn',
- collaborators: 'https://fig.fr33domlover.site/repos/9nOkn/collabs',
- context: 'https://fig.fr33domlover.site/repos/9nOkn/projects'
- }
- ];
-
- // Act
- render(History, { commitsMap, followingsMap });
- const numberOfCommits = screen.getByText(followingsMap[0].name);
-
- // Assert
- expect(numberOfCommits).toBeInTheDocument();
- });
-
- it('should list the commit 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 commitsMap = [
- {
- '@context': ['https://www.w3.org/ns/activitystreams', 'https://forgefed.org/ns'],
- id: 'https://fig.fr33domlover.site/repos/9nOkn/commits/36e1bb146fa3a6fb5c8d490f76ff4cca5f8f2e78',
- type: 'Commit',
- context: 'https://fig.fr33domlover.site/repos/9nOkn',
- attributedTo: 'https://fig.fr33domlover.site/people/qn870',
- committedBy: {
- name: 'vervis',
- mbox: 'mailto:vervis@vervis.vervis'
- },
- name: 'Best commit ever',
- hash: '36e1bb146fa3a6fb5c8d490f76ff4cca5f8f2e78',
- created: '2022-09-28T16:01:30Z',
- committed: '2022-09-28T16:06:36Z'
- }
- ];
-
- const followingsMap = [
- {
- '@context': [
- 'https://www.w3.org/ns/activitystreams',
- 'https://w3id.org/security/v2',
- 'https://forgefed.org/ns'
- ],
- id: 'https://fig.fr33domlover.site/repos/9nOkn',
- inbox: 'https://fig.fr33domlover.site/repos/9nOkn/inbox',
- outbox: 'https://fig.fr33domlover.site/repos/9nOkn/outbox',
- followers: 'https://fig.fr33domlover.site/repos/9nOkn/followers',
- publicKey: [
- 'https://fig.fr33domlover.site/akey1',
- 'https://fig.fr33domlover.site/akey2'
- ],
- type: 'Repository',
- name: 'Very fun demo',
- summary: 'Testing MR demo',
- team: null,
- versionControlSystem: 'https://forgefed.org/ns#git',
- sendPatchesTo: 'https://fig.fr33domlover.site/looms/9nOkn',
- cloneUri: 'https://fig.fr33domlover.site/repos/9nOkn',
- collaborators: 'https://fig.fr33domlover.site/repos/9nOkn/collabs',
- context: 'https://fig.fr33domlover.site/repos/9nOkn/projects'
- }
- ];
-
- // Act
- render(History, { commitsMap, followingsMap });
- const numberOfCommits = screen.getByText(commitsMap[0].name);
-
- // Assert
- expect(numberOfCommits).toBeInTheDocument();
- });
-
- it('should have a button to copy the SHA', () => {
- // 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 commitsMap = [
- {
- '@context': ['https://www.w3.org/ns/activitystreams', 'https://forgefed.org/ns'],
- id: 'https://fig.fr33domlover.site/repos/9nOkn/commits/36e1bb146fa3a6fb5c8d490f76ff4cca5f8f2e78',
- type: 'Commit',
- context: 'https://fig.fr33domlover.site/repos/9nOkn',
- attributedTo: 'https://fig.fr33domlover.site/people/qn870',
- committedBy: {
- name: 'vervis',
- mbox: 'mailto:vervis@vervis.vervis'
- },
- name: 'Best commit ever',
- hash: '36e1bb146fa3a6fb5c8d490f76ff4cca5f8f2e78',
- created: '2022-09-28T16:01:30Z',
- committed: '2022-09-28T16:06:36Z'
- }
- ];
-
- const followingsMap = [
- {
- '@context': [
- 'https://www.w3.org/ns/activitystreams',
- 'https://w3id.org/security/v2',
- 'https://forgefed.org/ns'
- ],
- id: 'https://fig.fr33domlover.site/repos/9nOkn',
- inbox: 'https://fig.fr33domlover.site/repos/9nOkn/inbox',
- outbox: 'https://fig.fr33domlover.site/repos/9nOkn/outbox',
- followers: 'https://fig.fr33domlover.site/repos/9nOkn/followers',
- publicKey: [
- 'https://fig.fr33domlover.site/akey1',
- 'https://fig.fr33domlover.site/akey2'
- ],
- type: 'Repository',
- name: 'Very fun demo',
- summary: 'Testing MR demo',
- team: null,
- versionControlSystem: 'https://forgefed.org/ns#git',
- sendPatchesTo: 'https://fig.fr33domlover.site/looms/9nOkn',
- cloneUri: 'https://fig.fr33domlover.site/repos/9nOkn',
- collaborators: 'https://fig.fr33domlover.site/repos/9nOkn/collabs',
- context: 'https://fig.fr33domlover.site/repos/9nOkn/projects'
- }
- ];
-
- // Act
- render(History, { commitsMap, followingsMap });
- const copyButton = screen.getByRole('button', { name: 'Copy' });
-
- // Assert
- expect(copyButton).toBeInTheDocument();
- });
-
- it('should have a button with the commit SHA', () => {
- // 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 commitsMap = [
- {
- '@context': ['https://www.w3.org/ns/activitystreams', 'https://forgefed.org/ns'],
- id: 'https://fig.fr33domlover.site/repos/9nOkn/commits/36e1bb146fa3a6fb5c8d490f76ff4cca5f8f2e78',
- type: 'Commit',
- context: 'https://fig.fr33domlover.site/repos/9nOkn',
- attributedTo: 'https://fig.fr33domlover.site/people/qn870',
- committedBy: {
- name: 'vervis',
- mbox: 'mailto:vervis@vervis.vervis'
- },
- name: 'Best commit ever',
- hash: '36e1bb146fa3a6fb5c8d490f76ff4cca5f8f2e78',
- created: '2022-09-28T16:01:30Z',
- committed: '2022-09-28T16:06:36Z'
- }
- ];
-
- const followingsMap = [
- {
- '@context': [
- 'https://www.w3.org/ns/activitystreams',
- 'https://w3id.org/security/v2',
- 'https://forgefed.org/ns'
- ],
- id: 'https://fig.fr33domlover.site/repos/9nOkn',
- inbox: 'https://fig.fr33domlover.site/repos/9nOkn/inbox',
- outbox: 'https://fig.fr33domlover.site/repos/9nOkn/outbox',
- followers: 'https://fig.fr33domlover.site/repos/9nOkn/followers',
- publicKey: [
- 'https://fig.fr33domlover.site/akey1',
- 'https://fig.fr33domlover.site/akey2'
- ],
- type: 'Repository',
- name: 'Very fun demo',
- summary: 'Testing MR demo',
- team: null,
- versionControlSystem: 'https://forgefed.org/ns#git',
- sendPatchesTo: 'https://fig.fr33domlover.site/looms/9nOkn',
- cloneUri: 'https://fig.fr33domlover.site/repos/9nOkn',
- collaborators: 'https://fig.fr33domlover.site/repos/9nOkn/collabs',
- context: 'https://fig.fr33domlover.site/repos/9nOkn/projects'
- }
- ];
-
- // Act
- render(History, { commitsMap, followingsMap });
- const shaButton = screen.getByRole('button', { name: commitsMap[0].hash.slice(0, 8) });
-
- // Assert
- expect(shaButton).toBeInTheDocument();
- });
-
- it('should have a button to browse the 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 commitsMap = [
- {
- '@context': ['https://www.w3.org/ns/activitystreams', 'https://forgefed.org/ns'],
- id: 'https://fig.fr33domlover.site/repos/9nOkn/commits/36e1bb146fa3a6fb5c8d490f76ff4cca5f8f2e78',
- type: 'Commit',
- context: 'https://fig.fr33domlover.site/repos/9nOkn',
- attributedTo: 'https://fig.fr33domlover.site/people/qn870',
- committedBy: {
- name: 'vervis',
- mbox: 'mailto:vervis@vervis.vervis'
- },
- name: 'Best commit ever',
- hash: '36e1bb146fa3a6fb5c8d490f76ff4cca5f8f2e78',
- created: '2022-09-28T16:01:30Z',
- committed: '2022-09-28T16:06:36Z'
- }
- ];
-
- const followingsMap = [
- {
- '@context': [
- 'https://www.w3.org/ns/activitystreams',
- 'https://w3id.org/security/v2',
- 'https://forgefed.org/ns'
- ],
- id: 'https://fig.fr33domlover.site/repos/9nOkn',
- inbox: 'https://fig.fr33domlover.site/repos/9nOkn/inbox',
- outbox: 'https://fig.fr33domlover.site/repos/9nOkn/outbox',
- followers: 'https://fig.fr33domlover.site/repos/9nOkn/followers',
- publicKey: [
- 'https://fig.fr33domlover.site/akey1',
- 'https://fig.fr33domlover.site/akey2'
- ],
- type: 'Repository',
- name: 'Very fun demo',
- summary: 'Testing MR demo',
- team: null,
- versionControlSystem: 'https://forgefed.org/ns#git',
- sendPatchesTo: 'https://fig.fr33domlover.site/looms/9nOkn',
- cloneUri: 'https://fig.fr33domlover.site/repos/9nOkn',
- collaborators: 'https://fig.fr33domlover.site/repos/9nOkn/collabs',
- context: 'https://fig.fr33domlover.site/repos/9nOkn/projects'
- }
- ];
-
- // Act
- render(History, { commitsMap, followingsMap });
- const browseButton = screen.getByRole('button', { name: 'Browse' });
-
- // Assert
- expect(browseButton).toBeInTheDocument();
- });
});
describe('when there are multiple commits', () => {