Browse Source

refactor(test-utils): extract createTableMock for multi-delete dialog tests

Add shared TanStack Table mock in test-utils/tanstack-table; use it from
tasks and users multi-delete dialog tests.
satnaing 2 tháng trước cách đây
mục cha
commit
d49dec2c74

+ 1 - 11
src/features/tasks/components/tasks-multi-delete-dialog.test.tsx

@@ -1,8 +1,8 @@
 import { useState } from 'react'
-import { type Table } from '@tanstack/react-table'
 import { beforeEach, describe, expect, it, vi } from 'vitest'
 import { render } from 'vitest-browser-react'
 import { userEvent } from 'vitest/browser'
+import { createTableMock } from '@/test-utils/tanstack-table'
 import { TasksMultiDeleteDialog } from './tasks-multi-delete-dialog'
 
 vi.mock('@/lib/utils', async (orig) => ({
@@ -10,16 +10,6 @@ vi.mock('@/lib/utils', async (orig) => ({
   sleep: vi.fn(() => Promise.resolve()),
 }))
 
-function createTableMock(rowCount = 2) {
-  const rows = Array.from({ length: rowCount }, () => ({}))
-  const resetRowSelection = vi.fn()
-  const table = {
-    getFilteredSelectedRowModel: () => ({ rows }),
-    resetRowSelection,
-  } as unknown as Table<Record<string, unknown>>
-  return { table, resetRowSelection }
-}
-
 describe('TasksMultiDeleteDialog', () => {
   beforeEach(() => vi.clearAllMocks())
 

+ 1 - 11
src/features/users/components/users-multi-delete-dialog.test.tsx

@@ -1,8 +1,8 @@
 import { useState } from 'react'
-import { type Table } from '@tanstack/react-table'
 import { beforeEach, describe, expect, it, vi } from 'vitest'
 import { render } from 'vitest-browser-react'
 import { userEvent } from 'vitest/browser'
+import { createTableMock } from '@/test-utils/tanstack-table'
 import { UsersMultiDeleteDialog } from './users-multi-delete-dialog'
 
 vi.mock('@/lib/utils', async (orig) => ({
@@ -10,16 +10,6 @@ vi.mock('@/lib/utils', async (orig) => ({
   sleep: vi.fn(() => Promise.resolve()),
 }))
 
-function createTableMock(rowCount = 2) {
-  const rows = Array.from({ length: rowCount }, () => ({}))
-  const resetRowSelection = vi.fn()
-  const table = {
-    getFilteredSelectedRowModel: () => ({ rows }),
-    resetRowSelection,
-  } as unknown as Table<Record<string, unknown>>
-  return { table, resetRowSelection }
-}
-
 describe('UsersMultiDeleteDialog', () => {
   beforeEach(() => vi.clearAllMocks())
 

+ 16 - 0
src/test-utils/tanstack-table.ts

@@ -0,0 +1,16 @@
+import { type Table } from '@tanstack/react-table'
+import { vi } from 'vitest'
+
+/**
+ * Minimal TanStack Table mock for tests that only need selected row count and
+ * `resetRowSelection` (e.g. multi-delete dialogs).
+ */
+export function createTableMock(rowCount = 2) {
+  const rows = Array.from({ length: rowCount }, () => ({}))
+  const resetRowSelection = vi.fn()
+  const table = {
+    getFilteredSelectedRowModel: () => ({ rows }),
+    resetRowSelection,
+  } as unknown as Table<Record<string, unknown>>
+  return { table, resetRowSelection }
+}