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); + }); + }); +});