Skip to content

Commit dec2b61

Browse files
committed
ack comments
1 parent 4bbe0b6 commit dec2b61

File tree

3 files changed

+26
-26
lines changed

3 files changed

+26
-26
lines changed

apps/sim/app/api/folders/[id]/duplicate/route.ts

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { db } from '@sim/db'
22
import { workflow, workflowFolder } from '@sim/db/schema'
33
import { createLogger } from '@sim/logger'
4-
import { and, asc, eq, isNull } from 'drizzle-orm'
4+
import { and, eq, isNull, min } from 'drizzle-orm'
55
import { type NextRequest, NextResponse } from 'next/server'
66
import { z } from 'zod'
77
import { AuditAction, AuditResourceType, recordAudit } from '@/lib/audit/log'
@@ -73,20 +73,16 @@ export async function POST(req: NextRequest, { params }: { params: Promise<{ id:
7373

7474
const [[folderResult], [workflowResult]] = await Promise.all([
7575
tx
76-
.select({ sortOrder: workflowFolder.sortOrder })
76+
.select({ minSortOrder: min(workflowFolder.sortOrder) })
7777
.from(workflowFolder)
78-
.where(and(eq(workflowFolder.workspaceId, targetWorkspaceId), folderParentCondition))
79-
.orderBy(asc(workflowFolder.sortOrder))
80-
.limit(1),
78+
.where(and(eq(workflowFolder.workspaceId, targetWorkspaceId), folderParentCondition)),
8179
tx
82-
.select({ sortOrder: workflow.sortOrder })
80+
.select({ minSortOrder: min(workflow.sortOrder) })
8381
.from(workflow)
84-
.where(and(eq(workflow.workspaceId, targetWorkspaceId), workflowParentCondition))
85-
.orderBy(asc(workflow.sortOrder))
86-
.limit(1),
82+
.where(and(eq(workflow.workspaceId, targetWorkspaceId), workflowParentCondition)),
8783
])
8884

89-
const minSortOrder = [folderResult?.sortOrder, workflowResult?.sortOrder].reduce<
85+
const minSortOrder = [folderResult?.minSortOrder, workflowResult?.minSortOrder].reduce<
9086
number | null
9187
>((currentMin, candidate) => {
9288
if (candidate == null) return currentMin

apps/sim/app/api/folders/route.test.ts

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,14 @@ import {
1010
mockConsoleLogger,
1111
setupCommonApiMocks,
1212
} from '@sim/testing'
13+
import { drizzleOrmMock } from '@sim/testing/mocks'
1314
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
1415

1516
vi.mock('@/lib/audit/log', () => auditMock)
17+
vi.mock('drizzle-orm', () => ({
18+
...drizzleOrmMock,
19+
min: vi.fn((field) => ({ type: 'min', field })),
20+
}))
1621

1722
interface CapturedFolderValues {
1823
name?: string
@@ -30,14 +35,11 @@ function createMockTransaction(mockData: {
3035
}) {
3136
const { selectResults = [[], []], insertResult = [], onInsertValues } = mockData
3237
return async (callback: (tx: unknown) => Promise<unknown>) => {
33-
const limit = vi.fn()
38+
const where = vi.fn()
3439
for (const result of selectResults) {
35-
limit.mockReturnValueOnce(result)
40+
where.mockReturnValueOnce(result)
3641
}
37-
limit.mockReturnValue([])
38-
39-
const orderBy = vi.fn().mockReturnValue({ limit })
40-
const where = vi.fn().mockReturnValue({ orderBy })
42+
where.mockReturnValue([])
4143

4244
const tx = {
4345
select: vi.fn().mockReturnValue({
@@ -294,11 +296,15 @@ describe('Folders API Route', () => {
294296

295297
it('should create folder with correct sort order', async () => {
296298
mockAuthenticatedUser()
299+
let capturedValues: CapturedFolderValues | null = null
297300

298301
mockTransaction.mockImplementationOnce(
299302
createMockTransaction({
300303
selectResults: [[{ minSortOrder: 5 }], [{ minSortOrder: 2 }]],
301304
insertResult: [{ ...mockFolders[0], sortOrder: 1 }],
305+
onInsertValues: (values) => {
306+
capturedValues = values
307+
},
302308
})
303309
)
304310

@@ -316,6 +322,8 @@ describe('Folders API Route', () => {
316322
expect(data.folder).toMatchObject({
317323
sortOrder: 1,
318324
})
325+
expect(capturedValues).not.toBeNull()
326+
expect(capturedValues!.sortOrder).toBe(1)
319327
})
320328

321329
it('should create subfolder with parent reference', async () => {

apps/sim/app/api/folders/route.ts

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { db } from '@sim/db'
22
import { workflow, workflowFolder } from '@sim/db/schema'
33
import { createLogger } from '@sim/logger'
4-
import { and, asc, eq, isNull } from 'drizzle-orm'
4+
import { and, asc, eq, isNull, min } from 'drizzle-orm'
55
import { type NextRequest, NextResponse } from 'next/server'
66
import { AuditAction, AuditResourceType, recordAudit } from '@/lib/audit/log'
77
import { getSession } from '@/lib/auth'
@@ -96,20 +96,16 @@ export async function POST(request: NextRequest) {
9696

9797
const [[folderResult], [workflowResult]] = await Promise.all([
9898
tx
99-
.select({ sortOrder: workflowFolder.sortOrder })
99+
.select({ minSortOrder: min(workflowFolder.sortOrder) })
100100
.from(workflowFolder)
101-
.where(and(eq(workflowFolder.workspaceId, workspaceId), folderParentCondition))
102-
.orderBy(asc(workflowFolder.sortOrder))
103-
.limit(1),
101+
.where(and(eq(workflowFolder.workspaceId, workspaceId), folderParentCondition)),
104102
tx
105-
.select({ sortOrder: workflow.sortOrder })
103+
.select({ minSortOrder: min(workflow.sortOrder) })
106104
.from(workflow)
107-
.where(and(eq(workflow.workspaceId, workspaceId), workflowParentCondition))
108-
.orderBy(asc(workflow.sortOrder))
109-
.limit(1),
105+
.where(and(eq(workflow.workspaceId, workspaceId), workflowParentCondition)),
110106
])
111107

112-
const minSortOrder = [folderResult?.sortOrder, workflowResult?.sortOrder].reduce<
108+
const minSortOrder = [folderResult?.minSortOrder, workflowResult?.minSortOrder].reduce<
113109
number | null
114110
>((currentMin, candidate) => {
115111
if (candidate == null) return currentMin

0 commit comments

Comments
 (0)