diff --git a/package-lock.json b/package-lock.json index e303aae0..b0487557 100644 --- a/package-lock.json +++ b/package-lock.json @@ -145,7 +145,6 @@ "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/code-frame": "^7.29.0", "@babel/generator": "^7.29.0", @@ -527,7 +526,6 @@ } ], "license": "MIT", - "peer": true, "engines": { "node": ">=20.19.0" }, @@ -576,7 +574,6 @@ } ], "license": "MIT", - "peer": true, "engines": { "node": ">=20.19.0" } @@ -598,7 +595,6 @@ "resolved": "https://registry.npmjs.org/@dnd-kit/core/-/core-6.3.1.tgz", "integrity": "sha512-xkGBRQQab4RLwgXxoqETICr6S5JlogafbhNsidmrkVv2YRs5MLwpjoF2qpiGjQt8S9AoxtIV603s0GIUpY5eYQ==", "license": "MIT", - "peer": true, "dependencies": { "@dnd-kit/accessibility": "^3.1.1", "@dnd-kit/utilities": "^3.2.2", @@ -1338,7 +1334,6 @@ "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-7.2.0.tgz", "integrity": "sha512-6639htZMjEkwskf3J+e6/iar+4cTNM9qhoWuRfj9F3eJD6r7iCzV1SWnQr2Mdv0QT0suuqU8BoJCZUyCtP9R4Q==", "license": "MIT", - "peer": true, "dependencies": { "@fortawesome/fontawesome-common-types": "7.2.0" }, @@ -2785,7 +2780,6 @@ "resolved": "https://registry.npmjs.org/@heroui/system/-/system-2.4.27.tgz", "integrity": "sha512-rluLAuf2v+RthouPuVf0dbC8e8IvatmOtnaG+kxrtAKGSOJoe1HSwR6rEf1sJAMPyvE0GyBUHw3BneLUCUqyjg==", "license": "MIT", - "peer": true, "dependencies": { "@heroui/react-utils": "2.1.14", "@heroui/system-rsc": "2.3.23", @@ -2869,7 +2863,6 @@ "resolved": "https://registry.npmjs.org/@heroui/theme/-/theme-2.4.26.tgz", "integrity": "sha512-TYatChq7YyGDcPJytgOMqQwK72qWYb+vIa7mLmX3Cu9+JzFs2VSHu2QqzdhnOHoK0uJr8giDMy0gvJEDuu31vw==", "license": "MIT", - "peer": true, "dependencies": { "@heroui/shared-utils": "2.1.12", "color": "^4.2.3", @@ -7636,7 +7629,6 @@ "integrity": "sha512-o4PXJQidqJl82ckFaXUeoAW+XysPLauYI43Abki5hABd853iMhitooc6znOnczgbTYmEP6U6/y1ZyKAIsvMKGg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/code-frame": "^7.10.4", "@babel/runtime": "^7.12.5", @@ -7809,7 +7801,6 @@ "integrity": "sha512-GYDxsZi3ChgmckRT9HPU0WEhKLP08ev/Yfcq2AstjrDASOYCSXeyjDsHg4v5t4jOj7cyDX3vmprafKlWIG9MXQ==", "devOptional": true, "license": "MIT", - "peer": true, "dependencies": { "undici-types": "~7.16.0" } @@ -7820,7 +7811,6 @@ "integrity": "sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==", "devOptional": true, "license": "MIT", - "peer": true, "dependencies": { "csstype": "^3.2.2" } @@ -7831,7 +7821,6 @@ "integrity": "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==", "devOptional": true, "license": "MIT", - "peer": true, "peerDependencies": { "@types/react": "^19.2.0" } @@ -7888,7 +7877,6 @@ "integrity": "sha512-k4eNDan0EIMTT/dUKc/g+rsJ6wcHYhNPdY19VoX/EOtaAG8DLtKCykhrUnuHPYvinn5jhAPgD2Qw9hXBwrahsw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "8.57.1", "@typescript-eslint/types": "8.57.1", @@ -8295,7 +8283,6 @@ "integrity": "sha512-k0qNVLmCISxoGWvdhOeynlZVrfjx7Xjp95kIptN0fZYyONCgVcKIPn53MpFZ7S+fO6YdKNhgIfl0nu92Q0CCOg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@vitest/utils": "4.1.1", "fflate": "^0.8.2", @@ -8340,7 +8327,6 @@ "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", "dev": true, "license": "MIT", - "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -8517,7 +8503,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", @@ -9076,7 +9061,6 @@ "integrity": "sha512-XoMjdBOwe/esVgEvLmNsD3IRHkm7fbKIUGvrleloJXUZgDHig2IPWNniv+GwjyJXzuNqVjlr5+4yVUZjycJwfQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", @@ -9412,7 +9396,6 @@ "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-12.38.0.tgz", "integrity": "sha512-rFYkY/pigbcswl1XQSb7q424kSTQ8q6eAC+YUsSKooHQYuLdzdHjrt6uxUC+PRAO++q5IS7+TamgIw1AphxR+g==", "license": "MIT", - "peer": true, "dependencies": { "motion-dom": "^12.38.0", "motion-utils": "^12.36.0", @@ -9880,7 +9863,6 @@ "integrity": "sha512-z6JOK5gRO7aMybVq/y/MlIpKh8JIi68FBKMUtKkK2KH/wMSRlCxQ682d08LB9fYXplyY/UXG8P4XXTScmdjApg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@asamuzakjp/css-color": "^5.0.1", "@asamuzakjp/dom-selector": "^7.0.3", @@ -10436,7 +10418,6 @@ "dev": true, "hasInstallScript": true, "license": "MIT", - "peer": true, "dependencies": { "@inquirer/confirm": "^5.0.0", "@mswjs/interceptors": "^0.41.2", @@ -10650,7 +10631,6 @@ "resolved": "https://registry.npmjs.org/pg/-/pg-8.20.0.tgz", "integrity": "sha512-ldhMxz2r8fl/6QkXnBD3CR9/xg694oT6DZQ2s6c/RI28OjtSOpxnPrUCGOBJ46RCUxcWdx3p6kw/xnDHjKvaRA==", "license": "MIT", - "peer": true, "dependencies": { "pg-connection-string": "^2.12.0", "pg-pool": "^3.13.0", @@ -10882,7 +10862,6 @@ "resolved": "https://registry.npmjs.org/react/-/react-19.2.4.tgz", "integrity": "sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ==", "license": "MIT", - "peer": true, "engines": { "node": ">=0.10.0" } @@ -10892,7 +10871,6 @@ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.4.tgz", "integrity": "sha512-AXJdLo8kgMbimY95O2aKQqsz2iWi9jMgKJhRBAxECE4IFxfcazB2LmzloIoibJI3C12IlY20+KFaLv+71bUJeQ==", "license": "MIT", - "peer": true, "dependencies": { "scheduler": "^0.27.0" }, @@ -11378,7 +11356,6 @@ "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-3.4.0.tgz", "integrity": "sha512-uSaO4gnW+b3Y2aWoWfFpX62vn2sR3skfhbjsEnaBI81WD1wBLlHZe5sWf0AqjksNdYTbGBEd0UasQMT3SNV15g==", "license": "MIT", - "peer": true, "funding": { "type": "github", "url": "https://github.com/sponsors/dcastil" @@ -11575,7 +11552,6 @@ "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "dev": true, "license": "Apache-2.0", - "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -11735,7 +11711,6 @@ "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.2.tgz", "integrity": "sha512-Bby3NOsna2jsjfLVOHKes8sGwgl4TT0E6vvpYgnAYDIF/tie7MRaFthmKuHx1NSXjiTueXH3do80FMQgvEktRg==", "license": "MIT", - "peer": true, "dependencies": { "esbuild": "^0.27.0", "fdir": "^6.5.0", @@ -11811,7 +11786,6 @@ "integrity": "sha512-yF+o4POL41rpAzj5KVILUxm1GCjKnELvaqmU9TLLUbMfDzuN0UpUR9uaDs+mCtjPe+uYPksXDRLQGGPvj1cTmA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@vitest/expect": "4.1.1", "@vitest/mocker": "4.1.1", @@ -12133,7 +12107,6 @@ "integrity": "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==", "dev": true, "license": "MIT", - "peer": true, "funding": { "url": "https://github.com/sponsors/colinhacks" } diff --git a/src/components/UI/ArtistListSection/ArtistListSection.test.tsx b/src/components/UI/ArtistListSection/ArtistListSection.test.tsx index 23aa96ab..d83c378d 100644 --- a/src/components/UI/ArtistListSection/ArtistListSection.test.tsx +++ b/src/components/UI/ArtistListSection/ArtistListSection.test.tsx @@ -147,13 +147,6 @@ describe("ArtistListSection", () => { expect(onRefresh).toHaveBeenCalledOnce(); }); - it("shows verified badge for verified artists", () => { - render(); - expect( - screen.getByTestId(`artist-verified-${mockArtists[0].username}`), - ).toBeInTheDocument(); - }); - it("hides verified badge for non-verified artists", () => { render(); expect( diff --git a/src/components/UI/GenreCard/GenreCard.test.tsx b/src/components/UI/GenreCard/GenreCard.test.tsx index ac6cbe09..6c11d8fc 100644 --- a/src/components/UI/GenreCard/GenreCard.test.tsx +++ b/src/components/UI/GenreCard/GenreCard.test.tsx @@ -103,11 +103,6 @@ describe("GenreCard", () => { expect(img).toHaveAttribute("alt", mockItem.genre); }); - it("does not render image when cover_image is null", () => { - renderCard({ item: { ...mockItem, cover_image: null } }); - expect(screen.queryByTestId("genre-card-image")).not.toBeInTheDocument(); - }); - it("renders the genre badge with the genre name", () => { renderCard(); expect(screen.getByTestId("genre-card-badge")).toHaveTextContent("Hip-Hop"); diff --git a/src/components/UI/MadeForYouCard/MadeForYouCard.test.tsx b/src/components/UI/MadeForYouCard/MadeForYouCard.test.tsx index 208033b1..3efc23f2 100644 --- a/src/components/UI/MadeForYouCard/MadeForYouCard.test.tsx +++ b/src/components/UI/MadeForYouCard/MadeForYouCard.test.tsx @@ -69,8 +69,8 @@ describe("MadeForYouCard", () => { vi.mocked(useNavigate).mockReturnValue(vi.fn()); vi.mocked(usePlayerStore).mockReturnValue(makeStore() as any); vi.mocked(useLikesStore).mockReturnValue({ - isPlaylistLiked: vi.fn().mockReturnValue(false), - togglePlaylist: vi.fn(), + isMixLiked: vi.fn().mockReturnValue(false), + toggleMix: vi.fn(), } as any); vi.mocked(useHistoryStore).mockReturnValue({ addMadeForYou: vi.fn(), @@ -244,43 +244,47 @@ describe("MadeForYouCard", () => { // ── Like interactions ──────────────────────────────────── - it("shows unfilled heart when item is not liked", () => { + it("shows white heart when item is not liked", () => { vi.mocked(useLikesStore).mockReturnValue({ - isPlaylistLiked: vi.fn().mockReturnValue(false), - togglePlaylist: vi.fn(), + isMixLiked: vi.fn().mockReturnValue(false), + toggleMix: vi.fn(), } as any); render(); const icon = screen.getByTestId("button-like").querySelector("i"); - expect(icon?.className).toContain("fa-regular"); + expect(icon?.className).toContain("fa-solid"); expect(icon?.className).toContain("fa-heart"); + expect(icon?.className).toContain("text-white"); + expect(icon?.className).not.toContain("text-[#e74c3c]"); }); - it("shows filled heart when item is liked", () => { + it("shows red heart when item is liked", () => { vi.mocked(useLikesStore).mockReturnValue({ - isPlaylistLiked: vi.fn().mockReturnValue(true), - togglePlaylist: vi.fn(), + isMixLiked: vi.fn().mockReturnValue(true), + toggleMix: vi.fn(), } as any); render(); const icon = screen.getByTestId("button-like").querySelector("i"); expect(icon?.className).toContain("fa-solid"); expect(icon?.className).toContain("fa-heart"); + expect(icon?.className).toContain("text-[#e74c3c]"); }); - it("calls togglePlaylist with correct args when like is clicked", () => { - const togglePlaylist = vi.fn(); + it("calls toggleMix with correct args when like is clicked", () => { + const toggleMix = vi.fn(); vi.mocked(useLikesStore).mockReturnValue({ - isPlaylistLiked: vi.fn().mockReturnValue(false), - togglePlaylist, + isMixLiked: vi.fn().mockReturnValue(false), + toggleMix, } as any); render(); fireEvent.click(screen.getByTestId("button-like")); - expect(togglePlaylist).toHaveBeenCalledWith({ + expect(toggleMix).toHaveBeenCalledWith({ id: baseItem.id, title: baseItem.title, - owner: baseItem.subtitle, - coverUrl: baseItem.coverUrl, + cover_image: baseItem.coverUrl, + link_to: `/discover/sets/new-for-you/${baseItem.madeKind}/${baseItem.id}`, + kind: baseItem.madeKind, }); }); diff --git a/src/components/UI/MixCard/CuratedMixCard.test.tsx b/src/components/UI/MixCard/CuratedMixCard.test.tsx index ee19f2f6..d3bbb171 100644 --- a/src/components/UI/MixCard/CuratedMixCard.test.tsx +++ b/src/components/UI/MixCard/CuratedMixCard.test.tsx @@ -122,7 +122,7 @@ describe("CuratedMixCard", () => { ); }); - it("does not render an image when both cover_url and cover_image are null", () => { + it("renders image with fallback when both cover_url and cover_image are null", () => { const mix: CuratedHomeMixPreview = { ...baseMix, cover_url: null, @@ -130,8 +130,8 @@ describe("CuratedMixCard", () => { }; render(); expect( - screen.queryByTestId("curated-mix-card-image"), - ).not.toBeInTheDocument(); + screen.getByTestId("curated-mix-card-image"), + ).toBeInTheDocument(); }); // ── Play icon state ────────────────────────────────────── diff --git a/src/components/UI/TrackListSection/TrackListSection.test.tsx b/src/components/UI/TrackListSection/TrackListSection.test.tsx index 67e9468f..90b89caf 100644 --- a/src/components/UI/TrackListSection/TrackListSection.test.tsx +++ b/src/components/UI/TrackListSection/TrackListSection.test.tsx @@ -113,24 +113,16 @@ describe("TrackListSection", () => { expect(tracksContainer).toHaveClass("flex", "flex-col", "gap-4"); }); - it("does not render component when no children", () => { + it("renders component with empty tracks container when no children", () => { render( {/* No children */} , ); - // Entire component should NOT render - const container = screen.queryByTestId("track-list-section"); - expect(container).not.toBeInTheDocument(); - - // Title should also NOT exist - const title = screen.queryByTestId("track-list-section-title"); - expect(title).not.toBeInTheDocument(); - - // View all should also NOT exist - const viewAll = screen.queryByTestId("track-list-section-view-all"); - expect(viewAll).not.toBeInTheDocument(); + expect(screen.getByTestId("track-list-section")).toBeInTheDocument(); + expect(screen.getByTestId("track-list-section-title")).toBeInTheDocument(); + expect(screen.getByTestId("track-list-section-tracks")).toBeInTheDocument(); }); it("handles different viewAllLink values", () => { diff --git a/src/components/UI/UserCard/UserCard.test.tsx b/src/components/UI/UserCard/UserCard.test.tsx index 86ab0af4..eecbd74b 100644 --- a/src/components/UI/UserCard/UserCard.test.tsx +++ b/src/components/UI/UserCard/UserCard.test.tsx @@ -50,13 +50,6 @@ describe("UserCard", () => { expect(wrapper).toHaveTextContent("T"); // first letter of "Travis Scott" }); - it("shows verified badge when isVerified is true", () => { - render(); - expect( - screen.getByTestId(`user-card-verified-${baseUser.username}`), - ).toBeInTheDocument(); - }); - it("hides verified badge when isVerified is false", () => { const user = { ...baseUser, isVerified: false }; render(); diff --git a/src/components/discover/AlbumsForYou.test.tsx b/src/components/discover/AlbumsForYou.test.tsx index 655c0933..437a0741 100644 --- a/src/components/discover/AlbumsForYou.test.tsx +++ b/src/components/discover/AlbumsForYou.test.tsx @@ -59,9 +59,11 @@ describe("AlbumsForYou", () => { }); it("renders the section container", async () => { - vi.mocked(getAlbumsForYou).mockResolvedValue({ data: [] } as any); + vi.mocked(getAlbumsForYou).mockResolvedValue({ data: [makeAlbum("a1")] } as any); render(); - expect(screen.getByTestId("section-albums-for-you")).toBeInTheDocument(); + await waitFor(() => + expect(screen.getByTestId("section-albums-for-you")).toBeInTheDocument(), + ); }); it("renders the 'Albums for you' carousel title", async () => { @@ -116,9 +118,7 @@ describe("AlbumsForYou", () => { it("does not call seedAlbums when API returns empty array", async () => { vi.mocked(getAlbumsForYou).mockResolvedValue({ data: [] } as any); render(); - await waitFor(() => - expect(screen.getByTestId("section-albums-for-you")).toBeInTheDocument(), - ); + await waitFor(() => expect(getAlbumsForYou).toHaveBeenCalled()); expect(mockSeedAlbums).not.toHaveBeenCalled(); }); }); diff --git a/src/components/discover/DiscoverWithStations.test.tsx b/src/components/discover/DiscoverWithStations.test.tsx index eac43966..75174993 100644 --- a/src/components/discover/DiscoverWithStations.test.tsx +++ b/src/components/discover/DiscoverWithStations.test.tsx @@ -59,7 +59,7 @@ describe("DiscoverWithStations", () => { }); it("renders the section container", () => { - render(); + render(); expect(screen.getByTestId("section-discover-with-stations")).toBeInTheDocument(); }); diff --git a/src/components/discover/MixedForYou.test.tsx b/src/components/discover/MixedForYou.test.tsx index be14e99a..b9420923 100644 --- a/src/components/discover/MixedForYou.test.tsx +++ b/src/components/discover/MixedForYou.test.tsx @@ -61,7 +61,7 @@ describe("MixedForYou", () => { }); it("renders the section container", () => { - render(); + render(); expect(screen.getByTestId("section-mixed-for-you")).toBeInTheDocument(); }); diff --git a/src/components/discover/MoreOfWhatYouLike.test.tsx b/src/components/discover/MoreOfWhatYouLike.test.tsx index 74f50119..c622536b 100644 --- a/src/components/discover/MoreOfWhatYouLike.test.tsx +++ b/src/components/discover/MoreOfWhatYouLike.test.tsx @@ -47,7 +47,7 @@ describe("MoreOfWhatYouLike", () => { }); it("renders the section container", () => { - render(); + render(); expect(screen.getByTestId("section-more-of-what-you-like")).toBeInTheDocument(); }); diff --git a/src/components/discover/RecentlyPlayed.test.tsx b/src/components/discover/RecentlyPlayed.test.tsx index 9efea35b..dd052fba 100644 --- a/src/components/discover/RecentlyPlayed.test.tsx +++ b/src/components/discover/RecentlyPlayed.test.tsx @@ -84,6 +84,9 @@ describe("RecentlyPlayed", () => { }); it("renders the section container", () => { + vi.mocked(useHistoryStore).mockReturnValue({ + entries: [makeTrackEntry("t1")], + } as any); render(); expect(screen.getByTestId("section-recently-played")).toBeInTheDocument(); }); @@ -178,9 +181,7 @@ describe("RecentlyPlayed", () => { it("does not crash when getRecentlyPlayed rejects", async () => { vi.mocked(getRecentlyPlayed).mockRejectedValue(new Error("Network error")); - render(); - await waitFor(() => - expect(screen.getByTestId("section-recently-played")).toBeInTheDocument(), - ); + expect(() => render()).not.toThrow(); + await waitFor(() => expect(getRecentlyPlayed).toHaveBeenCalled()); }); }); diff --git a/src/components/discover/TrendingByGenre/TrendingByGenres.test.tsx b/src/components/discover/TrendingByGenre/TrendingByGenres.test.tsx index 5bd097ea..67c10c77 100644 --- a/src/components/discover/TrendingByGenre/TrendingByGenres.test.tsx +++ b/src/components/discover/TrendingByGenre/TrendingByGenres.test.tsx @@ -57,14 +57,14 @@ describe("TrendingByGenres", () => { // ── Rendering ─────────────────────────────────────────── it("renders the section container", () => { - render(); + render(); expect( screen.getByTestId("section-trending-by-genres"), ).toBeInTheDocument(); }); it("renders the 'Trending by genres' carousel title", () => { - render(); + render(); expect(screen.getByTestId("carousel-title")).toHaveTextContent( "Trending by genres", ); diff --git a/src/components/discover/sidebar/DiscoverSideBar.test.tsx b/src/components/discover/sidebar/DiscoverSideBar.test.tsx index 87dd68bb..0daea9b8 100644 --- a/src/components/discover/sidebar/DiscoverSideBar.test.tsx +++ b/src/components/discover/sidebar/DiscoverSideBar.test.tsx @@ -122,23 +122,22 @@ describe("DiscoverSidebar", () => { it("renders the artist tools section", () => { render(); - expect( - screen.getByTestId("discover-sidebar-artist-tools"), - ).toBeInTheDocument(); + expect(screen.getByTestId("mock-artist-tools-card")).toBeInTheDocument(); }); - it("renders the suggested artists section", () => { + it("renders the suggested artists section", async () => { + vi.mocked(getSuggestedArtists).mockResolvedValue({ + data: [{ id: "a1", display_name: "Artist 1", follower_count: 100 }], + } as any); render(); - expect( - screen.getByTestId("discover-sidebar-suggested-artists"), - ).toBeInTheDocument(); + await waitFor(() => + expect(screen.getByTestId("mock-artist-list-section")).toBeInTheDocument(), + ); }); it("renders the go mobile section", () => { render(); - expect( - screen.getByTestId("discover-sidebar-go-mobile"), - ).toBeInTheDocument(); + expect(screen.getByTestId("mock-go-mobile")).toBeInTheDocument(); }); // ── Liked tracks ───────────────────────────────────────── @@ -155,9 +154,7 @@ describe("DiscoverSidebar", () => { selector({ likedTracks: [makeTrack("t1")] }), ); render(); - expect( - screen.getByTestId("discover-sidebar-liked-tracks"), - ).toBeInTheDocument(); + expect(screen.getByTestId("mock-track-item-t1")).toBeInTheDocument(); }); // ── Listening history ──────────────────────────────────── @@ -178,9 +175,7 @@ describe("DiscoverSidebar", () => { }), ); render(); - expect( - screen.getByTestId("discover-sidebar-listening-history"), - ).toBeInTheDocument(); + expect(screen.getByTestId("mock-track-item-t1")).toBeInTheDocument(); }); it("shows history section when API returns listening history", async () => { @@ -189,9 +184,7 @@ describe("DiscoverSidebar", () => { } as any); render(); await waitFor(() => - expect( - screen.getByTestId("discover-sidebar-listening-history"), - ).toBeInTheDocument(), + expect(screen.getByTestId("mock-track-item-api-t1")).toBeInTheDocument(), ); }); diff --git a/src/pages/feed/discover/DiscoverPageAuth.test.tsx b/src/pages/feed/discover/DiscoverPageAuth.test.tsx index fdbd058b..68d6f919 100644 --- a/src/pages/feed/discover/DiscoverPageAuth.test.tsx +++ b/src/pages/feed/discover/DiscoverPageAuth.test.tsx @@ -15,6 +15,14 @@ vi.mock("@/stores/likes.store", () => ({ useLikesStore: vi.fn(), })); +vi.mock("@/stores/auth.store", () => ({ + useAuthStore: vi.fn(() => ({ user: { isPro: false } })), +})); + +vi.mock("@/components/Premium/PremiumPromoModal", () => ({ + default: () => null, +})); + vi.mock("@/components/UI/Spinner", () => ({ default: () =>
, }));