From b8edeff86f6cfba3d503cd40fabdc42c8089ef4c Mon Sep 17 00:00:00 2001 From: Ilia Mashkov Date: Sun, 31 May 2026 14:08:25 +0300 Subject: [PATCH] refactor(font): move test fixtures into a dedicated testing segment Mock data lived in lib/ and was re-exported through the slice's production index.ts, advertising fixtures as part of the public API. Move it to a testing/ segment and drop it from index.ts; consumers now import explicitly via the $entities/Font/testing subpath. Repoints the four mock consumers (FontApplicator story, sizeResolver and fontCatalogStore specs, comparisonStore test) to the new subpath. --- src/entities/Font/index.ts | 3 ++ src/entities/Font/lib/index.ts | 44 ------------------- .../createFontRowSizeResolver.test.ts | 2 +- .../fontCatalogStore.svelte.spec.ts | 8 ++-- .../{lib/mocks => testing}/filters.mock.ts | 0 .../Font/{lib/mocks => testing}/fonts.mock.ts | 4 +- .../Font/{lib/mocks => testing}/index.ts | 2 +- .../{lib/mocks => testing}/stores.mock.ts | 2 +- .../FontApplicator.stories.svelte | 2 +- .../model/stores/comparisonStore.test.ts | 2 +- 10 files changed, 14 insertions(+), 55 deletions(-) rename src/entities/Font/{lib/mocks => testing}/filters.mock.ts (100%) rename src/entities/Font/{lib/mocks => testing}/fonts.mock.ts (98%) rename src/entities/Font/{lib/mocks => testing}/index.ts (97%) rename src/entities/Font/{lib/mocks => testing}/stores.mock.ts (99%) diff --git a/src/entities/Font/index.ts b/src/entities/Font/index.ts index fe5ee35..a7d69ad 100644 --- a/src/entities/Font/index.ts +++ b/src/entities/Font/index.ts @@ -3,3 +3,6 @@ export * from './domain'; export * from './lib'; export * from './model'; export * from './ui'; + +// `./testing` is intentionally not re-exported: fixtures must not leak into the +// production public API. Import them via `$entities/Font/testing`. diff --git a/src/entities/Font/lib/index.ts b/src/entities/Font/lib/index.ts index 161c396..000c5f7 100644 --- a/src/entities/Font/lib/index.ts +++ b/src/entities/Font/lib/index.ts @@ -1,49 +1,5 @@ export { getFontUrl } from './getFontUrl/getFontUrl'; -// Mock data helpers for Storybook and testing -export { - createCategoriesFilter, - createErrorState, - createGenericFilter, - createLoadingState, - createMockComparisonStore, - // Filter mocks - createMockFilter, - createMockFontApiResponse, - createMockFontStoreState, - // Store mocks - createMockQueryState, - createMockReactiveState, - createMockStore, - createProvidersFilter, - createSubsetsFilter, - createSuccessState, - generateMixedCategoryFonts, - generateMockFonts, - generatePaginatedFonts, - generateSequentialFilter, - GENERIC_FILTERS, - getAllMockFonts, - getFontsByCategory, - getFontsByProvider, - MOCK_FILTERS, - MOCK_FILTERS_ALL_SELECTED, - MOCK_FILTERS_EMPTY, - MOCK_FILTERS_SELECTED, - MOCK_FONT_STORE_STATES, - MOCK_STORES, - type MockFilterOptions, - type MockFilters, - type MockFontStoreState, - // Font mocks - // Types - type MockQueryObserverResult, - type MockQueryState, - mockUnifiedFont, - type MockUnifiedFontOptions, - UNIFIED_FONTS, -} from './mocks'; - export { FontNetworkError, FontResponseError, diff --git a/src/entities/Font/lib/sizeResolver/createFontRowSizeResolver.test.ts b/src/entities/Font/lib/sizeResolver/createFontRowSizeResolver.test.ts index a274b40..9913be1 100644 --- a/src/entities/Font/lib/sizeResolver/createFontRowSizeResolver.test.ts +++ b/src/entities/Font/lib/sizeResolver/createFontRowSizeResolver.test.ts @@ -14,6 +14,7 @@ vi.mock('@chenglou/pretext', async () => { layout: vi.fn(actual.layout), }; }); +import { mockUnifiedFont } from '$entities/Font/testing'; import { beforeEach, describe, @@ -22,7 +23,6 @@ import { vi, } from 'vitest'; import type { FontLoadStatus } from '../../model/types'; -import { mockUnifiedFont } from '../mocks'; import { createFontRowSizeResolver } from './createFontRowSizeResolver'; // Fixed-width canvas mock: every character is 10px wide regardless of font. diff --git a/src/entities/Font/model/store/fontCatalogStore/fontCatalogStore.svelte.spec.ts b/src/entities/Font/model/store/fontCatalogStore/fontCatalogStore.svelte.spec.ts index 07a4edb..912d1d6 100644 --- a/src/entities/Font/model/store/fontCatalogStore/fontCatalogStore.svelte.spec.ts +++ b/src/entities/Font/model/store/fontCatalogStore/fontCatalogStore.svelte.spec.ts @@ -1,3 +1,7 @@ +import { + generateMixedCategoryFonts, + generateMockFonts, +} from '$entities/Font/testing'; import { QueryClient } from '@tanstack/query-core'; import { flushSync } from 'svelte'; import { @@ -12,10 +16,6 @@ import { FontNetworkError, FontResponseError, } from '../../../lib/errors/errors'; -import { - generateMixedCategoryFonts, - generateMockFonts, -} from '../../../lib/mocks/fonts.mock'; import type { UnifiedFont } from '../../types'; import { FontCatalogStore } from './fontCatalogStore.svelte'; diff --git a/src/entities/Font/lib/mocks/filters.mock.ts b/src/entities/Font/testing/filters.mock.ts similarity index 100% rename from src/entities/Font/lib/mocks/filters.mock.ts rename to src/entities/Font/testing/filters.mock.ts diff --git a/src/entities/Font/lib/mocks/fonts.mock.ts b/src/entities/Font/testing/fonts.mock.ts similarity index 98% rename from src/entities/Font/lib/mocks/fonts.mock.ts rename to src/entities/Font/testing/fonts.mock.ts index a691dc7..344c554 100644 --- a/src/entities/Font/lib/mocks/fonts.mock.ts +++ b/src/entities/Font/testing/fonts.mock.ts @@ -16,7 +16,7 @@ * GOOGLE_FONTS, * FONTHARE_FONTS, * UNIFIED_FONTS, - * } from '$entities/Font/lib/mocks'; + * } from '$entities/Font/testing'; * * // Create a mock Google Font * const roboto = mockGoogleFont({ family: 'Roboto', category: 'sans-serif' }); @@ -28,7 +28,7 @@ * const font = mockUnifiedFont({ id: 'roboto', name: 'Roboto' }); * * // Use preset fonts - * import { UNIFIED_FONTS } from '$entities/Font/lib/mocks'; + * import { UNIFIED_FONTS } from '$entities/Font/testing'; * ``` */ diff --git a/src/entities/Font/lib/mocks/index.ts b/src/entities/Font/testing/index.ts similarity index 97% rename from src/entities/Font/lib/mocks/index.ts rename to src/entities/Font/testing/index.ts index a9d5e5d..20219f5 100644 --- a/src/entities/Font/lib/mocks/index.ts +++ b/src/entities/Font/testing/index.ts @@ -13,7 +13,7 @@ * UNIFIED_FONTS, * MOCK_FILTERS, * createMockFontStoreState, - * } from '$entities/Font/lib/mocks'; + * } from '$entities/Font/testing'; * * // Use in stories * const font = mockUnifiedFont({ name: 'My Font', category: 'serif' }); diff --git a/src/entities/Font/lib/mocks/stores.mock.ts b/src/entities/Font/testing/stores.mock.ts similarity index 99% rename from src/entities/Font/lib/mocks/stores.mock.ts rename to src/entities/Font/testing/stores.mock.ts index 030b581..cb10931 100644 --- a/src/entities/Font/lib/mocks/stores.mock.ts +++ b/src/entities/Font/testing/stores.mock.ts @@ -8,7 +8,7 @@ * import { * createMockQueryState, * MOCK_STORES, - * } from '$entities/Font/lib/mocks'; + * } from '$entities/Font/testing'; * * // Create a mock query state * const loadingState = createMockQueryState({ status: 'pending' }); diff --git a/src/entities/Font/ui/FontApplicator/FontApplicator.stories.svelte b/src/entities/Font/ui/FontApplicator/FontApplicator.stories.svelte index 0e370a6..c2f412a 100644 --- a/src/entities/Font/ui/FontApplicator/FontApplicator.stories.svelte +++ b/src/entities/Font/ui/FontApplicator/FontApplicator.stories.svelte @@ -23,7 +23,7 @@ const { Story } = defineMeta({