diff --git a/apps/studio/components/interfaces/Database/Tests/TestRow.tsx b/apps/studio/components/interfaces/Database/Tests/TestRow.tsx index b0d2c11c7ac..94e7347386b 100644 --- a/apps/studio/components/interfaces/Database/Tests/TestRow.tsx +++ b/apps/studio/components/interfaces/Database/Tests/TestRow.tsx @@ -31,6 +31,7 @@ interface TestRowProps { prependQuery?: DatabaseTest | null canRun?: boolean onSelectTest: (test: DatabaseTest) => void + index: number } // Utility function to validate test query format @@ -40,7 +41,7 @@ const isValidTestQuery = (query: string): boolean => { } const TestRow = forwardRef( - ({ test, prependQuery, canRun = false, onSelectTest }, ref) => { + ({ test, prependQuery, canRun = false, onSelectTest, index }, ref) => { const project = useSelectedProject() const [isRunning, setIsRunning] = useState(false) const [status, setStatus] = useState<'queued' | 'passed' | 'failed' | undefined>() @@ -126,52 +127,58 @@ const TestRow = forwardRef( if (status === 'failed') { return Failed } - return Not run + return null } return ( <> - - -

onSelectTest(test)}> - {test.name} -

-
- {getStatusBadge()} - {lastRun ? dayjs(lastRun).fromNow() : 'Never'} - -
- {canRun && ( - } - loading={isRunning} - disabled={isRunning || status === 'queued' || !isTestQueryValid} - onClick={handleRunTest} - tooltip={{ - content: { - side: 'bottom', - text: !isTestQueryValid - ? 'Test query must start with BEGIN; and end with ROLLBACK;' - : undefined, - }, - }} - /> - )} - - -
+ { // Simple component for setup test rows - just name and actions interface SetupTestRowProps { test: DatabaseTest + index: number onSelectTest: (test: DatabaseTest) => void } -const SetupTestRow = ({ test, onSelectTest }: SetupTestRowProps) => { +const SetupTestRow = ({ test, index, onSelectTest }: SetupTestRowProps) => { const project = useSelectedProject() const [isDeleteModalOpen, setIsDeleteModalOpen] = useState(false) @@ -58,7 +59,10 @@ const SetupTestRow = ({ test, onSelectTest }: SetupTestRowProps) => { } return ( -
+
+ + {index + 1} +

onSelectTest(test)}> {test.name}

@@ -230,8 +234,8 @@ const DatabaseTestsList = forwardRef( environment.

) : ( - tests.map((test) => ( - + tests.map((test, index) => ( + )) )}
@@ -240,28 +244,19 @@ const DatabaseTestsList = forwardRef( // Regular tests view with full TestRow component return ( - - - - Name - Status - Last Run - - - - - {tests.map((test) => ( - (testRowRefs.current[test.id] = el)} - key={test.id} - test={test} - prependQuery={setupTest} - canRun={true} - onSelectTest={onSelectTest} - /> - ))} - -
+
+ {tests.map((test, index) => ( + (testRowRefs.current[test.id] = el)} + key={test.id} + index={index} + test={test} + prependQuery={setupTest} + canRun={true} + onSelectTest={onSelectTest} + /> + ))} +
) } @@ -286,7 +281,10 @@ const DatabaseTestsList = forwardRef( {/* Setup Tests Group - Always show */} - Before Tests +
+ + Before Tests +
{renderTestTable(filteredSetupTests, true)}
@@ -295,7 +293,10 @@ const DatabaseTestsList = forwardRef( {filteredRegularTests.length > 0 && ( - Tests +
+ + Tests +
{renderTestTable(filteredRegularTests, false)}
diff --git a/apps/studio/data/database-tests/database-test-create-mutation.ts b/apps/studio/data/database-tests/database-test-create-mutation.ts index 73eb9958639..eae7cc90cac 100644 --- a/apps/studio/data/database-tests/database-test-create-mutation.ts +++ b/apps/studio/data/database-tests/database-test-create-mutation.ts @@ -1,7 +1,6 @@ import { useMutation, useQueryClient } from '@tanstack/react-query' import { toast } from 'sonner' -import { useSqlTitleGenerateMutation } from 'data/ai/sql-title-mutation' import { uuidv4 } from 'lib/helpers' import { databaseTestsKeys } from './database-tests-key' import { DatabaseTest } from './database-tests-query' @@ -18,20 +17,16 @@ export const useDatabaseTestCreateMutation = ({ onSuccess?: () => void } = {}) => { const queryClient = useQueryClient() - const { mutateAsync: generateSqlTitle } = useSqlTitleGenerateMutation() return useMutation({ - mutationFn: async ({ projectRef, query }: DatabaseTestCreateVariables) => { - // AI title generation - const { title } = await generateSqlTitle({ sql: query }) - + mutationFn: async ({ projectRef, query, name }: DatabaseTestCreateVariables) => { // This is a mock implementation. // In a real scenario, you would save the test to a file or a database table. const key = databaseTestsKeys.list(projectRef) const currentTests = queryClient.getQueryData(key) ?? [] const newTest: DatabaseTest = { id: uuidv4(), - name: title, + name, query, } queryClient.setQueryData(key, [...currentTests, newTest]) diff --git a/apps/studio/data/database-tests/database-test-update-mutation.ts b/apps/studio/data/database-tests/database-test-update-mutation.ts index eada746ba4d..a690a531ac6 100644 --- a/apps/studio/data/database-tests/database-test-update-mutation.ts +++ b/apps/studio/data/database-tests/database-test-update-mutation.ts @@ -1,7 +1,6 @@ import { useMutation, useQueryClient } from '@tanstack/react-query' import { toast } from 'sonner' -import { useSqlTitleGenerateMutation } from 'data/ai/sql-title-mutation' import { databaseTestsKeys } from './database-tests-key' import { DatabaseTest } from './database-tests-query' @@ -18,19 +17,13 @@ export const useDatabaseTestUpdateMutation = ({ onSuccess?: () => void } = {}) => { const queryClient = useQueryClient() - const { mutateAsync: generateSqlTitle } = useSqlTitleGenerateMutation() return useMutation({ mutationFn: async ({ projectRef, id, query, name }: DatabaseTestUpdateVariables) => { - // Generate AI title if name is not provided - const finalName = name ?? (await generateSqlTitle({ sql: query })).title - - // This is a mock implementation. - // In a real scenario, you would update the test in a file or a database table. const key = databaseTestsKeys.list(projectRef) const currentTests = queryClient.getQueryData(key) ?? [] const updatedTests = currentTests.map((test) => - test.id === id ? { ...test, name: finalName, query } : test + test.id === id ? { ...test, name, query } : test ) queryClient.setQueryData(key, updatedTests) diff --git a/apps/studio/pages/project/[ref]/database/tests.tsx b/apps/studio/pages/project/[ref]/database/tests.tsx index 4e1f1528064..d158557a92c 100644 --- a/apps/studio/pages/project/[ref]/database/tests.tsx +++ b/apps/studio/pages/project/[ref]/database/tests.tsx @@ -63,8 +63,10 @@ const DatabaseTestsPage: NextPageWithLayout = () => { updateTest({ projectRef: project?.ref!, id: test.id, + name: test.name, query, }) + setEditorPanel({ open: false }) }, }) } @@ -84,6 +86,7 @@ ROLLBACK; onSave: (query) => { createTest({ projectRef: project?.ref!, + name: 'New test', connectionString: project?.connectionString, query, })