3 Commits
Author SHA1 Message Date
jakob.scheid afd0c47b63 test(legal): add test for the legal notice view
Added tests for the legal notice view (LegalNoticeView.vue).
2026-08-05 15:58:40 +02:00
jakob.scheid fbb8e028fb test(legal): add tests for getLegalNotice 2026-08-05 15:54:21 +02:00
jakob.scheid 6a0c41bb0b feat(legal): add legal notice loading indicator 2026-08-05 15:54:13 +02:00
3 changed files with 84 additions and 5 deletions
@@ -14,8 +14,8 @@ See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
*/ */
import { FetchError } from '../errors'; import { FetchError } from '../../errors';
import { getLegalNotice } from './fetchLegalContent'; import { getLegalNotice } from '../fetchLegalContent';
import { afterEach, beforeEach, describe, expect, test, vi } from 'vitest'; import { afterEach, beforeEach, describe, expect, test, vi } from 'vitest';
let fetchSpy; let fetchSpy;
+3 -2
View File
@@ -27,9 +27,10 @@ const legalNoticeHtml = ref(null);
onMounted(async () => { onMounted(async () => {
try { try {
legalNoticeHtml.value = await getLegalNotice(); legalNoticeHtml.value = await getLegalNotice();
loading.value = false;
} catch { } catch {
legalNoticeError.value = 'legal.notice.loadError'; legalNoticeError.value = 'legal.notice.loadError';
} finally {
loading.value = false;
} }
}); });
</script> </script>
@@ -42,7 +43,7 @@ onMounted(async () => {
</h1> </h1>
</header> </header>
<main> <main>
<div v-if="loading"> <div class="legal-notice-loading" v-if="loading">
{{ t('loading') }} {{ t('loading') }}
</div> </div>
<div class="error" v-else-if="legalNoticeError"> <div class="error" v-else-if="legalNoticeError">
@@ -0,0 +1,78 @@
/*
Copyright 2026 Seekra
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
import { FetchError } from '../../errors.js';
import LegalNoticeView from '../LegalNoticeView.vue';
import { mountComponent } from '@/test-utils/mountComponent';
import { flushPromises } from '@vue/test-utils';
import { afterEach, describe, expect, test, vi } from 'vitest';
const getLegalNotice = vi.hoisted(() => vi.fn().mockResolvedValue('legal notice'));
vi.mock('../../services/fetchLegalContent', async (importOriginal) => {
const actual = await importOriginal();
return {
...actual,
getLegalNotice
};
});
afterEach(() => getLegalNotice.mockRestore());
describe('LegalNoticeView', () => {
test('shows loading indicator', () => {
const wrapper = mountComponent(LegalNoticeView);
const legalNoticeLoading = wrapper.find('.legal-notice-loading');
const legalNoticeError = wrapper.find('.error');
const legalNotice = wrapper.find('.legal-notice');
expect(legalNoticeLoading.exists()).toBe(true);
expect(legalNoticeError.exists()).toBe(false);
expect(legalNotice.exists()).toBe(false);
});
test('shows error', async () => {
getLegalNotice.mockRejectedValue(new FetchError());
const wrapper = mountComponent(LegalNoticeView);
await flushPromises();
await wrapper.vm.$nextTick();
const legalNoticeLoading = wrapper.find('.legal-notice-loading');
const legalNoticeError = wrapper.find('.error');
const legalNotice = wrapper.find('.legal-notice');
expect(legalNoticeLoading.exists()).toBe(false);
expect(legalNoticeError.exists()).toBe(true);
expect(legalNotice.exists()).toBe(false);
});
test('shows legal notice', async () => {
const wrapper = mountComponent(LegalNoticeView);
await flushPromises();
await wrapper.vm.$nextTick();
const legalNoticeLoading = wrapper.find('.legal-notice-loading');
const legalNoticeError = wrapper.find('.error');
const legalNotice = wrapper.find('.legal-notice');
expect(legalNoticeLoading.exists()).toBe(false);
expect(legalNoticeError.exists()).toBe(false);
expect(legalNotice.exists()).toBe(true);
});
});