diff --git a/packages/core/table-core/scripts/smoke.mjs b/packages/core/table-core/scripts/smoke.mjs index 0faebbf..3360965 100644 --- a/packages/core/table-core/scripts/smoke.mjs +++ b/packages/core/table-core/scripts/smoke.mjs @@ -119,4 +119,39 @@ toggle.dispatch({ type: 'toggleSort', key: 'age' }); toggle.dispatch({ type: 'toggleSort', key: 'age' }); assert(toggle.getState().sorting.length === 0, '同一列连点三次回到无序(asc → desc → 取消)'); +const multi = createTable({ + data: users, + columns: [{ key: 'city', header: 'City' }, { key: 'age', header: 'Age', sortable: true }], + rowKey: 'id', + plugins: [sortPlugin({ multi: true })], +}); +multi.dispatch({ type: 'toggleSort', key: 'city', multi: true }); +multi.dispatch({ type: 'toggleSort', key: 'age', multi: true }); +assert(multi.getState().sorting.length === 2, 'multi 排序保留两列规则'); +assert( + JSON.stringify(multi.getVisibleRows().rows.map((r) => r.id)) === JSON.stringify([4, 2, 5, 3, 1]), + '多列排序按规则顺序生效(city 升序,同城内 age 升序:Beijing 4→2、Shanghai 5→3)', +); + +const sizing = createTable({ + data: users, + columns: [{ key: 'name', header: 'Name' }], + rowKey: 'id', + plugins: [paginationPlugin()], + initialState: { pagination: { page: 1, pageSize: 2 } }, +}); +sizing.dispatch({ type: 'setPage', page: 2 }); +sizing.dispatch({ type: 'setPageSize', pageSize: 3 }); +assert(sizing.getPageInfo().page === 1 && sizing.getPageInfo().pageSize === 3, '改页大小回到第 1 页'); + +sizing.dispatch({ type: 'toggleSort', key: 'name' }); +sizing.dispatch({ type: 'reset' }); +assert( + sizing.getState().sorting.length === 0 && + sizing.getState().filters.length === 0 && + sizing.getState().pagination.page === 1 && + sizing.getState().pagination.pageSize === 20, + 'reset 回到默认态(排序/筛选清空,分页回 1/20)', +); + console.log('SMOKE OK');