(
options: CreateMockDbOptions = {},
)
| 141 | * ``` |
| 142 | */ |
| 143 | export function createMockDbOperations( |
| 144 | options: CreateMockDbOptions = {}, |
| 145 | ): MockDbOperations { |
| 146 | const { defaultSelectData = [], defaultInsertId = 'mock-id' } = options |
| 147 | |
| 148 | const createMockSelectWhereResult = <T>( |
| 149 | data: T[] = defaultSelectData as T[], |
| 150 | ): MockSelectWhereResult<T> => { |
| 151 | const result: MockSelectWhereResult<T> = { |
| 152 | then: mock((resolve) => { |
| 153 | resolve(data) |
| 154 | return Promise.resolve(data) |
| 155 | }), |
| 156 | leftJoin: mock(() => result), |
| 157 | innerJoin: mock(() => result), |
| 158 | orderBy: mock(() => result), |
| 159 | limit: mock(() => result), |
| 160 | offset: mock(() => result), |
| 161 | } |
| 162 | return result |
| 163 | } |
| 164 | |
| 165 | const createMockSelectFromResult = <T>( |
| 166 | data: T[] = defaultSelectData as T[], |
| 167 | ): MockSelectFromResult<T> => { |
| 168 | const whereResult = createMockSelectWhereResult(data) |
| 169 | const result: MockSelectFromResult<T> = { |
| 170 | where: mock(() => whereResult), |
| 171 | leftJoin: mock(() => result), |
| 172 | innerJoin: mock(() => result), |
| 173 | orderBy: mock(() => result), |
| 174 | limit: mock(() => result), |
| 175 | offset: mock(() => result), |
| 176 | then: mock((resolve) => { |
| 177 | resolve(data) |
| 178 | return Promise.resolve(data) |
| 179 | }), |
| 180 | } |
| 181 | return result |
| 182 | } |
| 183 | |
| 184 | const createMockInsertResult = <T>(): MockInsertResult<T> => { |
| 185 | const result: MockInsertResult<T> = { |
| 186 | values: mock(() => Promise.resolve({ id: defaultInsertId })), |
| 187 | returning: mock(() => Promise.resolve([])), |
| 188 | onConflictDoNothing: mock(() => result), |
| 189 | onConflictDoUpdate: mock(() => result), |
| 190 | } |
| 191 | return result |
| 192 | } |
| 193 | |
| 194 | const createMockUpdateSetResult = (): MockUpdateSetResult => ({ |
| 195 | where: mock(() => Promise.resolve()), |
| 196 | returning: mock(() => Promise.resolve([])), |
| 197 | }) |
| 198 | |
| 199 | const createMockUpdateResult = <T>(): MockUpdateResult<T> => ({ |
| 200 | set: mock(() => createMockUpdateSetResult()), |
no test coverage detected