Skip to content

Commit 8c034ac

Browse files
committed
[TILES-V2-11]: add unit and integration tests for tiles v2 (#1033)
# Tests for Tiles v2 ## Changes 1. Added a PostgreSQL container for integration tests 2. Extending existing mutation tests to work with both DynamoDB and PostgreSQL 3. Adding unit tests for PostgreSQL table functions 4. Implementing proper database type switching in mutations
1 parent 6b9fa1d commit 8c034ac

38 files changed

+3255
-1737
lines changed

packages/backend/src/apps/tiles/__tests__/actions/create-row.itest.ts

Lines changed: 74 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -10,87 +10,93 @@ import {
1010
generateMockTableRowData,
1111
} from '@/graphql/__tests__/mutations/tiles/table.mock'
1212
import TableMetadata from '@/models/table-metadata'
13+
import { DatabaseType } from '@/models/tiles/types'
1314
import User from '@/models/user'
1415
import Context from '@/types/express/context'
1516

1617
import tiles from '../..'
1718
import createRowAction from '../../actions/create-row'
1819

19-
describe('tiles create row action', () => {
20-
let context: Context
21-
let dummyTable: TableMetadata
22-
let dummyColumnIds: string[]
23-
let editor: User
24-
let viewer: User
25-
let $: IGlobalVariable
20+
describe.each([['ddb'], ['pg']])(
21+
'tiles create row action: %s',
22+
(databaseType: DatabaseType) => {
23+
let context: Context
24+
let dummyTable: TableMetadata
25+
let dummyColumnIds: string[]
26+
let editor: User
27+
let viewer: User
28+
let $: IGlobalVariable
2629

27-
beforeEach(async () => {
28-
context = await generateMockContext()
30+
beforeEach(async () => {
31+
context = await generateMockContext()
2932

30-
const mockTable = await generateMockTable({
31-
userId: context.currentUser.id,
32-
})
33-
dummyTable = mockTable.table
34-
editor = mockTable.editor
35-
viewer = mockTable.viewer
33+
const mockTable = await generateMockTable({
34+
userId: context.currentUser.id,
35+
databaseType,
36+
})
37+
dummyTable = mockTable.table
38+
editor = mockTable.editor
39+
viewer = mockTable.viewer
3640

37-
dummyColumnIds = await generateMockTableColumns({
38-
tableId: dummyTable.id,
39-
numColumns: 5,
40-
})
41+
dummyColumnIds = await generateMockTableColumns({
42+
tableId: dummyTable.id,
43+
numColumns: 5,
44+
databaseType,
45+
})
4146

42-
const validData = generateMockTableRowData({ columnIds: dummyColumnIds })
43-
const rowData = Object.keys(validData).map((columnId) => ({
44-
columnId,
45-
cellValue: validData[columnId],
46-
}))
47+
const validData = generateMockTableRowData({ columnIds: dummyColumnIds })
48+
const rowData = Object.keys(validData).map((columnId) => ({
49+
columnId,
50+
cellValue: validData[columnId],
51+
}))
4752

48-
$ = {
49-
user: context.currentUser,
50-
flow: {
51-
id: '123',
52-
userId: context.currentUser.id,
53-
},
54-
step: {
55-
id: '456',
56-
appKey: tiles.name,
57-
key: createRowAction.key,
58-
position: 2,
59-
parameters: {
60-
tableId: dummyTable.id,
61-
rowData,
53+
$ = {
54+
user: context.currentUser,
55+
flow: {
56+
id: '123',
57+
userId: context.currentUser.id,
58+
},
59+
step: {
60+
id: '456',
61+
appKey: tiles.name,
62+
key: createRowAction.key,
63+
position: 2,
64+
parameters: {
65+
tableId: dummyTable.id,
66+
rowData,
67+
},
6268
},
63-
},
64-
app: {
65-
name: tiles.name,
66-
},
67-
setActionItem: vi.fn(),
68-
} as unknown as IGlobalVariable
69-
})
69+
app: {
70+
name: tiles.name,
71+
},
72+
setActionItem: vi.fn(),
73+
} as unknown as IGlobalVariable
74+
})
7075

71-
it('should allow owners to create row', async () => {
72-
await expect(createRowAction.run($)).resolves.toBeUndefined()
73-
expect($.setActionItem).toBeCalled()
74-
})
76+
it('should allow owners to create row', async () => {
77+
await expect(createRowAction.run($)).resolves.toBeUndefined()
78+
expect($.setActionItem).toBeCalled()
79+
})
7580

76-
it('should allow editors to create row', async () => {
77-
$.user = editor
78-
await expect(createRowAction.run($)).resolves.toBeUndefined()
79-
expect($.setActionItem).toBeCalled()
80-
})
81+
it('should allow editors to create row', async () => {
82+
$.user = editor
83+
await expect(createRowAction.run($)).resolves.toBeUndefined()
84+
expect($.setActionItem).toBeCalled()
85+
})
8186

82-
it('should not allow viewers to create row', async () => {
83-
$.user = viewer
84-
await expect(createRowAction.run($)).rejects.toThrow(StepError)
85-
})
87+
it('should not allow viewers to create row', async () => {
88+
$.user = viewer
89+
await expect(createRowAction.run($)).rejects.toThrow(StepError)
90+
})
8691

87-
it('should throw correct error if Tile deleted', async () => {
88-
$.user = editor
89-
await TableMetadata.query()
90-
.patch({
91-
deletedAt: new Date().toISOString(),
92-
})
93-
.where({ id: $.step.parameters.tableId })
94-
await expect(createRowAction.run($)).rejects.toThrow(StepError)
95-
})
96-
})
92+
it('should throw correct error if Tile deleted', async () => {
93+
$.user = editor
94+
await TableMetadata.query()
95+
.patch({
96+
deletedAt: new Date().toISOString(),
97+
})
98+
.where({ id: $.step.parameters.tableId })
99+
await expect(createRowAction.run($)).rejects.toThrow(StepError)
100+
})
101+
},
102+
)

0 commit comments

Comments
 (0)