diff --git a/apps/web/src/modules/analyze/components/TableList.test.tsx b/apps/web/src/modules/analyze/components/TableList.test.tsx new file mode 100644 index 0000000000..f2a82286aa --- /dev/null +++ b/apps/web/src/modules/analyze/components/TableList.test.tsx @@ -0,0 +1,46 @@ +import { render } from '@testing-library/react'; +import TableList from './TableList'; +import { chartUserSettingState } from '@modules/analyze/store'; + +jest.mock('public/images/analyze/number-100.svg', () => ({ + __esModule: true, + default: () => null, +})); +jest.mock('public/images/analyze/number-1.svg', () => ({ + __esModule: true, + default: () => null, +})); + +jest.mock('next-i18next', () => ({ + useTranslation: () => ({ t: (key: string) => key }), +})); +jest.mock('next/link', () => ({ + __esModule: true, + default: ({ children }: { children: React.ReactNode }) => children, +})); +jest.mock('@tanstack/react-query', () => ({ + useQueries: () => [], +})); +jest.mock('@oss-compass/graphql', () => ({ + useMetricModelsOverviewQuery: { getKey: () => ['k'], fetcher: () => () => null }, +})); +jest.mock('@common/gqlClient', () => ({ __esModule: true, default: {} })); +jest.mock('@modules/analyze/hooks/useCompareItems', () => ({ + __esModule: true, + default: () => ({ compareItems: [] }), +})); +jest.mock('@modules/analyze/hooks/useQueryMetricType', () => ({ + __esModule: true, + default: () => 'contributor', +})); + +describe('TableList', () => { + it('initializes the score system from the persisted user setting', () => { + // 用户在导航栏设置过 1 分制并已持久化:概览表格必须与图表一致地以 1 分制 + // 渲染,而不是硬编码百分制再要求用户手动切换。 + chartUserSettingState.onePointSys = true; + const { container } = render(); + expect(container.textContent).toContain('analyze:mark.point'); + expect(container.textContent).not.toContain('analyze:mark.percentage'); + }); +}); diff --git a/apps/web/src/modules/analyze/components/TableList.tsx b/apps/web/src/modules/analyze/components/TableList.tsx index 02f59ab1cb..7686fb3e6d 100644 --- a/apps/web/src/modules/analyze/components/TableList.tsx +++ b/apps/web/src/modules/analyze/components/TableList.tsx @@ -145,7 +145,12 @@ const TrendsList: React.FC = () => { scope: 'contributor', }, ]; - const [onePointSys, setOnePointSys] = useState(false); + // 初值来自持久化的用户设置(导航栏可切换并写入 localStorage):与 + // OverviewSummary/LineChart 的 useState(chartUserSettingState.onePointSys) + // 一致,避免表格以百分制渲染而上方图表以 1 分制渲染的不一致。 + const [onePointSys, setOnePointSys] = useState( + chartUserSettingState.onePointSys + ); const { compareItems } = useCompareItems(); const snap = useSnapshot(chartUserSettingState);