From 83945763d204c326a81521bcd2503872f0362a30 Mon Sep 17 00:00:00 2001
From: Vitor Mattos <1079143+vitormattos@users.noreply.github.com>
Date: Fri, 20 Mar 2026 13:54:01 -0300
Subject: [PATCH 1/2] chore: use placeholder to star
Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com>
---
src/components/AdminSupportBanner.vue | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/src/components/AdminSupportBanner.vue b/src/components/AdminSupportBanner.vue
index 6f0a30a..cfff7aa 100644
--- a/src/components/AdminSupportBanner.vue
+++ b/src/components/AdminSupportBanner.vue
@@ -23,11 +23,9 @@ SPDX-License-Identifier: AGPL-3.0-or-later
From df1b55ebfc9f6a5f3894cb6ec29b63d1584d60df Mon Sep 17 00:00:00 2001
From: Vitor Mattos <1079143+vitormattos@users.noreply.github.com>
Date: Fri, 20 Mar 2026 14:21:53 -0300
Subject: [PATCH 2/2] fix: update tests after change texts
Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com>
---
.../admin/AdminSupportBanner.spec.ts | 139 +++++++++++-------
1 file changed, 84 insertions(+), 55 deletions(-)
diff --git a/src/tests/components/admin/AdminSupportBanner.spec.ts b/src/tests/components/admin/AdminSupportBanner.spec.ts
index d7f747a..11186e9 100644
--- a/src/tests/components/admin/AdminSupportBanner.spec.ts
+++ b/src/tests/components/admin/AdminSupportBanner.spec.ts
@@ -1,73 +1,102 @@
// SPDX-FileCopyrightText: 2026 LibreCode coop and LibreCode contributors
// SPDX-License-Identifier: AGPL-3.0-or-later
-import { afterEach, describe, expect, it, vi } from 'vitest'
-import { mount } from '@vue/test-utils'
-import { defineComponent, nextTick } from 'vue'
-import AdminSupportBanner from '../../../components/AdminSupportBanner.vue'
+import { afterEach, describe, expect, it, vi } from "vitest";
+import { mount } from "@vue/test-utils";
+import { defineComponent, nextTick } from "vue";
+import AdminSupportBanner from "../../../components/AdminSupportBanner.vue";
-vi.mock('@nextcloud/l10n', () => ({
- t: (_app: string, text: string, parameters?: Record) => {
- if (parameters === undefined) {
- return `tr:${text}`
- }
+vi.mock("@nextcloud/l10n", () => ({
+ t: (_app: string, text: string, parameters?: Record) => {
+ if (parameters === undefined) {
+ return `tr:${text}`;
+ }
- return Object.entries(parameters).reduce((translated, [key, value]) => translated.replace(`{${key}}`, value), `tr:${text}`)
- },
-}))
+ return Object.entries(parameters).reduce(
+ (translated, [key, value]) => translated.replace(`{${key}}`, value),
+ `tr:${text}`,
+ );
+ },
+}));
-vi.mock('@nextcloud/vue', () => ({
- NcButton: defineComponent({
- name: 'NcButton',
- emits: ['click'],
- template: '',
- }),
- NcNoteCard: defineComponent({
- name: 'NcNoteCard',
- template: '
',
- }),
-}))
+vi.mock("@nextcloud/vue", () => ({
+ NcButton: defineComponent({
+ name: "NcButton",
+ emits: ["click"],
+ template:
+ '',
+ }),
+ NcNoteCard: defineComponent({
+ name: "NcNoteCard",
+ template: "
",
+ }),
+}));
afterEach(() => {
- window.localStorage.clear()
- vi.restoreAllMocks()
-})
+ window.localStorage.clear();
+ vi.restoreAllMocks();
+});
-describe('AdminSupportBanner', () => {
- it('renders translated copy and actions', () => {
- const wrapper = mount(AdminSupportBanner)
+describe("AdminSupportBanner", () => {
+ it("renders translated banner copy", () => {
+ const wrapper = mount(AdminSupportBanner);
- expect(wrapper.text()).toContain('tr:Help keep Profile Fields sustainable.')
- expect(wrapper.text()).toContain('tr:Sponsor LibreSign')
- expect(wrapper.text()).toContain('tr:Maybe later')
- expect(wrapper.text()).toContain('tr:Give Profile Fields a star on GitHub')
- })
+ expect(wrapper.text()).toContain(
+ "tr:Help keep Profile Fields sustainable.",
+ );
+ expect(wrapper.text()).toContain(
+ "tr:Profile Fields is open source under the AGPL license and maintained by the LibreCode team, creators of LibreSign.",
+ );
+ expect(wrapper.text()).toContain(
+ "tr:If your organization depends on it, please help us sustain its development and maintenance.",
+ );
+ expect(wrapper.text()).toContain("tr:Sponsor LibreSign");
+ expect(wrapper.text()).toContain("tr:Maybe later");
+ expect(wrapper.text()).toContain("tr:Give Profile Fields a ⭐ on GitHub");
+ expect(wrapper.text()).toContain(
+ "tr:Contact us for support or custom development",
+ );
+ });
- it('opens sponsor page when sponsor button is clicked', async() => {
- const openSpy = vi.spyOn(window, 'open').mockImplementation(() => null)
- const wrapper = mount(AdminSupportBanner)
+ it("opens sponsor page when sponsor button is clicked", async () => {
+ const openSpy = vi.spyOn(window, "open").mockImplementation(() => null);
+ const wrapper = mount(AdminSupportBanner);
- await wrapper.get('button').trigger('click')
+ await wrapper.get("button").trigger("click");
- expect(openSpy).toHaveBeenCalledWith('https://github.com/sponsors/LibreCodeCoop', '_blank', 'noopener,noreferrer')
- })
+ expect(openSpy).toHaveBeenCalledWith(
+ "https://github.com/sponsors/LibreCodeCoop",
+ "_blank",
+ "noopener,noreferrer",
+ );
+ });
- it('hides itself after dismiss and persists state', async() => {
- const wrapper = mount(AdminSupportBanner)
+ it("hides itself after dismiss and persists state", async () => {
+ const wrapper = mount(AdminSupportBanner);
- const buttons = wrapper.findAll('button')
- await buttons[1].trigger('click')
+ const buttons = wrapper.findAll("button");
+ await buttons[1].trigger("click");
- expect(wrapper.find('[data-testid="profile-fields-admin-support-banner"]').exists()).toBe(false)
- expect(window.localStorage.getItem('profile_fields_support_banner_dismissed')).toBe('1')
- })
+ expect(
+ wrapper
+ .find('[data-testid="profile-fields-admin-support-banner"]')
+ .exists(),
+ ).toBe(false);
+ expect(
+ window.localStorage.getItem("profile_fields_support_banner_dismissed"),
+ ).toBe("1");
+ });
- it('starts hidden when dismissal key is already persisted', () => {
- window.localStorage.setItem('profile_fields_support_banner_dismissed', '1')
+ it("starts hidden when dismissal key is already persisted", () => {
+ window.localStorage.setItem("profile_fields_support_banner_dismissed", "1");
- const wrapper = mount(AdminSupportBanner)
- return nextTick().then(() => {
- expect(wrapper.find('[data-testid="profile-fields-admin-support-banner"]').exists()).toBe(false)
- })
- })
-})
+ const wrapper = mount(AdminSupportBanner);
+ return nextTick().then(() => {
+ expect(
+ wrapper
+ .find('[data-testid="profile-fields-admin-support-banner"]')
+ .exists(),
+ ).toBe(false);
+ });
+ });
+});