From 442002c3e49fbb590e492f9a47da5257a7408a32 Mon Sep 17 00:00:00 2001
From: Beowulf <beowulf@beocode.eu>
Date: Wed, 26 Jun 2024 22:05:18 +0200
Subject: [PATCH] Fixed link to commit status and tooltip on dashboard

Regression introduced by https://codeberg.org/forgejo/forgejo/commit/5a18b7463255e5d1aefdacaeae9b7d0459b34286

(cherry picked from commit 1088c057e042d2c007b18dcb8d53e454f462b335)
---
 models/fixtures/commit_status.yml           | 11 +++++++++++
 tests/e2e/dashboard-ci-status.test.e2e.js   | 21 +++++++++++++++++++++
 web_src/js/components/DashboardRepoList.vue |  2 +-
 3 files changed, 33 insertions(+), 1 deletion(-)
 create mode 100644 tests/e2e/dashboard-ci-status.test.e2e.js

diff --git a/models/fixtures/commit_status.yml b/models/fixtures/commit_status.yml
index 20d57975ef..b318ad6f12 100644
--- a/models/fixtures/commit_status.yml
+++ b/models/fixtures/commit_status.yml
@@ -52,3 +52,14 @@
   description: My awesome deploy service
   context: deploy/awesomeness
   creator_id: 2
+
+-
+  id: 6
+  index: 6
+  repo_id: 62
+  state: "failure"
+  sha: "774f93df12d14931ea93259ae93418da4482fcc1"
+  target_url: "/user2/test_workflows/actions"
+  description: My awesome deploy service
+  context: deploy/awesomeness
+  creator_id: 2
diff --git a/tests/e2e/dashboard-ci-status.test.e2e.js b/tests/e2e/dashboard-ci-status.test.e2e.js
new file mode 100644
index 0000000000..fdf868f083
--- /dev/null
+++ b/tests/e2e/dashboard-ci-status.test.e2e.js
@@ -0,0 +1,21 @@
+// @ts-check
+import {test, expect} from '@playwright/test';
+import {login_user, load_logged_in_context} from './utils_e2e.js';
+
+test.beforeAll(async ({browser}, workerInfo) => {
+  await login_user(browser, workerInfo, 'user2');
+});
+
+test('Correct link and tooltip', async ({browser}, workerInfo) => {
+  const context = await load_logged_in_context(browser, workerInfo, 'user2');
+  const page = await context.newPage();
+  const response = await page.goto('/?repo-search-query=test_workflows');
+  await expect(response?.status()).toBe(200);
+
+  await page.waitForLoadState('networkidle');
+
+  const repoStatus = page.locator('.dashboard-repos .repo-owner-name-list > li:nth-child(1) > a:nth-child(2)');
+
+  await expect(repoStatus).toHaveAttribute('href', '/user2/test_workflows/actions');
+  await expect(repoStatus).toHaveAttribute('data-tooltip-content', 'Failure');
+});
diff --git a/web_src/js/components/DashboardRepoList.vue b/web_src/js/components/DashboardRepoList.vue
index db8e5f7e1f..361482ed3a 100644
--- a/web_src/js/components/DashboardRepoList.vue
+++ b/web_src/js/components/DashboardRepoList.vue
@@ -415,7 +415,7 @@ export default sfc; // activate the IDE's Vue plugin
                 <svg-icon name="octicon-archive" :size="16"/>
               </div>
             </a>
-            <a class="tw-flex tw-items-center" v-if="repo.latest_commit_status" :href="repo.latest_commit_status.TargetLink" :data-tooltip-content="repo.locale_latest_commit_status.State">
+            <a class="tw-flex tw-items-center" v-if="repo.latest_commit_status" :href="repo.latest_commit_status.TargetURL" :data-tooltip-content="repo.locale_latest_commit_status">
               <!-- the commit status icon logic is taken from templates/repo/commit_status.tmpl -->
               <svg-icon :name="statusIcon(repo.latest_commit_status.State)" :class-name="'tw-ml-2 commit-status icon text ' + statusColor(repo.latest_commit_status.State)" :size="16"/>
             </a>