Skip to content

Commit d5859e9

Browse files
committed
test: trim down overly verbose tests
1 parent 6190224 commit d5859e9

5 files changed

Lines changed: 160 additions & 283 deletions

File tree

test/fixtures/likes-leaderboard.ts

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import type { LikesLeaderboardEntry } from '#shared/types/social'
2+
3+
export function createLikesLeaderboardEntry(
4+
packageName: string,
5+
overrides: Partial<LikesLeaderboardEntry> = {},
6+
): LikesLeaderboardEntry {
7+
return {
8+
rank: 1,
9+
packageName,
10+
subjectRef: `https://npmx.dev/package/${packageName}`,
11+
totalLikes: 0,
12+
packageDescription: null,
13+
weeklyDownloads: null,
14+
repositoryStars: null,
15+
homepagePreviewUrl: null,
16+
homepagePreviewWidth: null,
17+
homepagePreviewHeight: null,
18+
homepageLogoUrl: null,
19+
homepageLogoWidth: null,
20+
homepageLogoHeight: null,
21+
...overrides,
22+
}
23+
}

test/nuxt/a11y.spec.ts

Lines changed: 3 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import type { VueWrapper } from '@vue/test-utils'
44
import 'axe-core'
55
import type { AxeResults, RunOptions } from 'axe-core'
66
import { afterEach, beforeEach, describe, expect, it, type MockInstance, vi } from 'vitest'
7+
import { createLikesLeaderboardEntry } from '~~/test/fixtures/likes-leaderboard'
78

89
// axe-core is a UMD module that exposes itself as window.axe in the browser
910
declare const axe: {
@@ -709,40 +710,15 @@ describe('component accessibility audits', () => {
709710

710711
describe('LikesLeaderboardPage', () => {
711712
it('should have no accessibility violations when data is available', async () => {
712-
// This page remounts the same useFetch source with different mocked responses
713-
// across tests, so reset Nuxt's async-data store between cases.
714713
clearNuxtData()
715714
registerEndpoint('/api/leaderboard/likes', () => [
716-
{
715+
createLikesLeaderboardEntry('vue', {
717716
rank: 1,
718-
packageName: 'vue',
719-
subjectRef: 'https://npmx.dev/package/vue',
720717
totalLikes: 120,
721-
packageDescription: 'The Progressive JavaScript Framework.',
722-
weeklyDownloads: 1200,
723-
repositoryStars: 208000,
724718
homepagePreviewUrl: 'https://images.example.com/vue-home.png',
725719
homepagePreviewWidth: 1200,
726720
homepagePreviewHeight: 630,
727-
homepageLogoUrl: 'https://images.example.com/vue-logo.svg',
728-
homepageLogoWidth: 256,
729-
homepageLogoHeight: 256,
730-
},
731-
{
732-
rank: 2,
733-
packageName: '@nuxt/kit',
734-
subjectRef: 'https://npmx.dev/package/@nuxt/kit',
735-
totalLikes: 90,
736-
packageDescription: 'Nuxt internals for module authors.',
737-
weeklyDownloads: 900,
738-
repositoryStars: 59000,
739-
homepagePreviewUrl: null,
740-
homepagePreviewWidth: null,
741-
homepagePreviewHeight: null,
742-
homepageLogoUrl: 'https://images.example.com/nuxt-logo.svg',
743-
homepageLogoWidth: 256,
744-
homepageLogoHeight: 256,
745-
},
721+
}),
746722
])
747723

748724
const component = await mountSuspended(LikesLeaderboardPage, {

test/nuxt/pages/LikesLeaderboardPage.spec.ts

Lines changed: 9 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
22
import { mountSuspended, registerEndpoint } from '@nuxt/test-utils/runtime'
33
import type { VueWrapper } from '@vue/test-utils'
4+
import { createLikesLeaderboardEntry } from '~~/test/fixtures/likes-leaderboard'
45
import LikesLeaderboardPage from '~/pages/leaderboard/likes.vue'
56

67
describe('likes leaderboard page', () => {
@@ -18,66 +19,30 @@ describe('likes leaderboard page', () => {
1819

1920
it('renders ranked rows from the local leaderboard API', async () => {
2021
registerEndpoint('/api/leaderboard/likes', () => [
21-
{
22+
createLikesLeaderboardEntry('vue', {
2223
rank: 1,
23-
packageName: 'vue',
24-
subjectRef: 'https://npmx.dev/package/vue',
2524
totalLikes: 120,
26-
packageDescription: 'The Progressive JavaScript Framework.',
27-
weeklyDownloads: 1200,
28-
repositoryStars: 208000,
2925
homepagePreviewUrl: 'https://images.example.com/vue-home.png',
3026
homepagePreviewWidth: 1200,
3127
homepagePreviewHeight: 630,
32-
homepageLogoUrl: 'https://images.example.com/vue-logo.svg',
33-
homepageLogoWidth: 256,
34-
homepageLogoHeight: 256,
35-
},
36-
{
28+
}),
29+
createLikesLeaderboardEntry('@nuxt/kit', {
3730
rank: 2,
38-
packageName: '@nuxt/kit',
39-
subjectRef: 'https://npmx.dev/package/@nuxt/kit',
4031
totalLikes: 90,
41-
packageDescription: 'Nuxt internals for module authors.',
42-
weeklyDownloads: 900,
43-
repositoryStars: 59000,
44-
homepagePreviewUrl: null,
45-
homepagePreviewWidth: null,
46-
homepagePreviewHeight: null,
47-
homepageLogoUrl: 'https://images.example.com/nuxt-logo.svg',
48-
homepageLogoWidth: 256,
49-
homepageLogoHeight: 256,
50-
},
51-
{
32+
}),
33+
createLikesLeaderboardEntry('react', {
5234
rank: 3,
53-
packageName: 'react',
54-
subjectRef: 'https://npmx.dev/package/react',
5535
totalLikes: 80,
56-
packageDescription: 'The library for web and native user interfaces.',
57-
weeklyDownloads: 800,
58-
repositoryStars: 230000,
59-
homepagePreviewUrl: null,
60-
homepagePreviewWidth: null,
61-
homepagePreviewHeight: null,
62-
homepageLogoUrl: null,
63-
homepageLogoWidth: null,
64-
homepageLogoHeight: null,
65-
},
66-
{
36+
}),
37+
createLikesLeaderboardEntry('svelte', {
6738
rank: 4,
68-
packageName: 'svelte',
69-
subjectRef: 'https://npmx.dev/package/svelte',
7039
totalLikes: 70,
7140
packageDescription: 'Cybernetically enhanced web apps.',
7241
weeklyDownloads: 700,
73-
repositoryStars: 82000,
74-
homepagePreviewUrl: null,
75-
homepagePreviewWidth: null,
76-
homepagePreviewHeight: null,
7742
homepageLogoUrl: 'https://images.example.com/svelte-logo.svg',
7843
homepageLogoWidth: 256,
7944
homepageLogoHeight: 256,
80-
},
45+
}),
8146
])
8247

8348
wrapper = await mountSuspended(LikesLeaderboardPage, {

0 commit comments

Comments
 (0)