Skip to content

Commit

Permalink
chore: add speedy jest compilation (#341)
Browse files Browse the repository at this point in the history
  • Loading branch information
rileydcampbell committed Dec 19, 2023
1 parent 3fc04f3 commit 30e8636
Show file tree
Hide file tree
Showing 5 changed files with 150 additions and 16 deletions.
15 changes: 12 additions & 3 deletions jest.config.js
Expand Up @@ -12,7 +12,16 @@ module.exports = {
statements: 80,
branches: 80,
functions: 80,
lines: 80
}
}
lines: 80,
},
},
transform: {
// Use swc to speed up ts-jest's sluggish compilation times.
// Using this cuts the initial time to compile from 6-12 seconds to
// ~1 second consistently.
// Inspiration from: https://github.com/kulshekhar/ts-jest/issues/259#issuecomment-1332269911
//
// https://swc.rs/docs/usage/jest#usage
'^.+\\.(t|j)s?$': '@swc/jest',
},
}
2 changes: 2 additions & 0 deletions package.json
Expand Up @@ -51,6 +51,8 @@
"dependencies": {
"@aws-sdk/client-s3": "^3.341.0",
"@aws-sdk/client-sfn": "^3.341.0",
"@swc/core": "^1.3.101",
"@swc/jest": "^0.2.29",
"@types/sinon": "^10.0.13",
"@uniswap/uniswapx-sdk": "^1.4.0",
"aws-cdk-lib": "2.85.0",
Expand Down
18 changes: 8 additions & 10 deletions test/handlers/post-order.test.ts
@@ -1,7 +1,7 @@
const parserMock = jest.fn()

/* eslint-disable @typescript-eslint/ban-ts-comment */
// @ts-nocheck
import { SFNClient, StartExecutionCommand } from '@aws-sdk/client-sfn'
import { OrderType, OrderValidation, REACTOR_ADDRESS_MAPPING } from '@uniswap/uniswapx-sdk'
import { DutchOrder, OrderType, OrderValidation, REACTOR_ADDRESS_MAPPING } from '@uniswap/uniswapx-sdk'
import { mockClient } from 'aws-sdk-client-mock'
import { ORDER_STATUS } from '../../lib/entities'
import { ErrorCode } from '../../lib/handlers/base'
Expand Down Expand Up @@ -45,9 +45,7 @@ jest.mock('@uniswap/uniswapx-sdk', () => {
const originalSdk = jest.requireActual('@uniswap/uniswapx-sdk')
return {
...originalSdk,
DutchOrder: {
parse: parserMock,
},
DutchOrder: { parse: jest.fn() },
OrderType: { Dutch: 'Dutch' },
}
})
Expand Down Expand Up @@ -140,7 +138,7 @@ describe('Testing post order handler.', () => {
process.env['STATE_MACHINE_ARN_1'] = MOCK_ARN_1
process.env['STATE_MACHINE_ARN_5'] = MOCK_ARN_5
process.env['REGION'] = 'region'
parserMock.mockImplementation((_order: any, chainId: number) => ({ ...DECODED_ORDER, chainId }))
DutchOrder.parse.mockImplementation((_order: any, chainId: number) => ({ ...DECODED_ORDER, chainId }))
})

afterEach(() => {
Expand Down Expand Up @@ -223,7 +221,7 @@ describe('Testing post order handler.', () => {
it('should allow more orders if in the high list', async () => {
countOrdersByOffererAndStatusMock.mockReturnValueOnce(100)
validatorMock.mockReturnValue({ valid: true })
parserMock.mockReturnValueOnce(
DutchOrder.parse.mockReturnValueOnce(
Object.assign({}, DECODED_ORDER, {
info: Object.assign({}, ORDER_INFO, {
swapper: '0xa7152fad7467857dc2d4060fecaadf9f6b8227d3',
Expand All @@ -241,7 +239,7 @@ describe('Testing post order handler.', () => {
it('should reject order submission for offerer in high list at higher order count', async () => {
countOrdersByOffererAndStatusMock.mockReturnValueOnce(201)
validatorMock.mockReturnValue({ valid: true })
parserMock.mockReturnValueOnce(
DutchOrder.parse.mockReturnValueOnce(
Object.assign({}, DECODED_ORDER, {
info: Object.assign({}, ORDER_INFO, {
offerer: '0xa7152fad7467857dc2d4060fecaadf9f6b8227d3',
Expand Down Expand Up @@ -363,7 +361,7 @@ describe('Testing post order handler.', () => {
})

it('on-chain validation failed; throws 400', async () => {
parserMock.mockReturnValue({
DutchOrder.parse.mockReturnValue({
...DECODED_ORDER,
chainId: 137,
})
Expand Down
14 changes: 11 additions & 3 deletions test/repositories/dynamo-repository.test.ts
Expand Up @@ -3,11 +3,20 @@
import { DocumentClient } from 'aws-sdk/clients/dynamodb'
import { ORDER_STATUS, SORT_FIELDS } from '../../lib/entities/Order'
import { DynamoOrdersRepository } from '../../lib/repositories/orders-repository'
import * as nonceUtil from '../../lib/util/nonce'
import { generateRandomNonce } from '../../lib/util/nonce'
import { currentTimestampInSeconds } from '../../lib/util/time'

jest.mock('../../lib/util/time')

jest.mock('../../lib/util/nonce', () => {
const originalModule = jest.requireActual('../../lib/util/nonce')

return {
...originalModule,
generateRandomNonce: jest.fn(originalModule.generateRandomNonce),
}
})

const dynamoConfig = {
convertEmptyValues: true,
endpoint: 'localhost:8000',
Expand Down Expand Up @@ -486,10 +495,9 @@ describe('OrdersRepository get nonce test', () => {
})

it('should generate random nonce for new address', async () => {
const spy = jest.spyOn(nonceUtil, 'generateRandomNonce')
const res = await ordersRepository.getNonceByAddressAndChain('random.eth')
expect(res).not.toBeUndefined()
expect(spy).toHaveBeenCalled()
expect(generateRandomNonce).toHaveBeenCalled()
})

it('should track nonce for the same address on different chains separately', async () => {
Expand Down
117 changes: 117 additions & 0 deletions yarn.lock
Expand Up @@ -2452,6 +2452,13 @@
slash "^3.0.0"
strip-ansi "^6.0.0"

"@jest/create-cache-key-function@^27.4.2":
version "27.5.1"
resolved "https://registry.yarnpkg.com/@jest/create-cache-key-function/-/create-cache-key-function-27.5.1.tgz#7448fae15602ea95c828f5eceed35c202a820b31"
integrity sha512-dmH1yW+makpTSURTy8VzdUwFnfQh1G8R+DxO2Ho2FFmBbKFEVm+3jWdvFhE2VqB/LATCTokkP0dotjyQyw5/AQ==
dependencies:
"@jest/types" "^27.5.1"

"@jest/environment@^29.5.0":
version "29.5.0"
resolved "https://registry.npmjs.org/@jest/environment/-/environment-29.5.0.tgz"
Expand Down Expand Up @@ -2586,6 +2593,17 @@
slash "^3.0.0"
write-file-atomic "^4.0.2"

"@jest/types@^27.5.1":
version "27.5.1"
resolved "https://registry.yarnpkg.com/@jest/types/-/types-27.5.1.tgz#3c79ec4a8ba61c170bf937bcf9e98a9df175ec80"
integrity sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==
dependencies:
"@types/istanbul-lib-coverage" "^2.0.0"
"@types/istanbul-reports" "^3.0.0"
"@types/node" "*"
"@types/yargs" "^16.0.0"
chalk "^4.0.0"

"@jest/types@^29.5.0":
version "29.5.0"
resolved "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz"
Expand Down Expand Up @@ -2764,6 +2782,93 @@
dependencies:
tslib "^2.5.0"

"@swc/core-darwin-arm64@1.3.101":
version "1.3.101"
resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.101.tgz#9ffdc0e77c31b20877fa7405c82905e0c76738d0"
integrity sha512-mNFK+uHNPRXSnfTOG34zJOeMl2waM4hF4a2NY7dkMXrPqw9CoJn4MwTXJcyMiSz1/BnNjjTCHF3Yhj0jPxmkzQ==

"@swc/core-darwin-x64@1.3.101":
version "1.3.101"
resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.3.101.tgz#e50130e21e3cfd3029fd6cea43e8309b58ad9fa6"
integrity sha512-B085j8XOx73Fg15KsHvzYWG262bRweGr3JooO1aW5ec5pYbz5Ew9VS5JKYS03w2UBSxf2maWdbPz2UFAxg0whw==

"@swc/core-linux-arm-gnueabihf@1.3.101":
version "1.3.101"
resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.101.tgz#8cd36328e794b3c42b6c8e578bb1f42e59ba0231"
integrity sha512-9xLKRb6zSzRGPqdz52Hy5GuB1lSjmLqa0lST6MTFads3apmx4Vgs8Y5NuGhx/h2I8QM4jXdLbpqQlifpzTlSSw==

"@swc/core-linux-arm64-gnu@1.3.101":
version "1.3.101"
resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.101.tgz#d15e3885eb13a1512ba62f00ce4f5bb19f710a0c"
integrity sha512-oE+r1lo7g/vs96Weh2R5l971dt+ZLuhaUX+n3BfDdPxNHfObXgKMjO7E+QS5RbGjv/AwiPCxQmbdCp/xN5ICJA==

"@swc/core-linux-arm64-musl@1.3.101":
version "1.3.101"
resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.101.tgz#851d4cc1079b091fee36f5f64335232210749d7a"
integrity sha512-OGjYG3H4BMOTnJWJyBIovCez6KiHF30zMIu4+lGJTCrxRI2fAjGLml3PEXj8tC3FMcud7U2WUn6TdG0/te2k6g==

"@swc/core-linux-x64-gnu@1.3.101":
version "1.3.101"
resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.101.tgz#3a2a7c584db2e05a798e28361440424914563fa3"
integrity sha512-/kBMcoF12PRO/lwa8Z7w4YyiKDcXQEiLvM+S3G9EvkoKYGgkkz4Q6PSNhF5rwg/E3+Hq5/9D2R+6nrkF287ihg==

"@swc/core-linux-x64-musl@1.3.101":
version "1.3.101"
resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.101.tgz#45d1d53945994f08e93703b8de24ccac88538d0c"
integrity sha512-kDN8lm4Eew0u1p+h1l3JzoeGgZPQ05qDE0czngnjmfpsH2sOZxVj1hdiCwS5lArpy7ktaLu5JdRnx70MkUzhXw==

"@swc/core-win32-arm64-msvc@1.3.101":
version "1.3.101"
resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.101.tgz#b2610b8354e5fbca7cc5be3f728e61b046227fa8"
integrity sha512-9Wn8TTLWwJKw63K/S+jjrZb9yoJfJwCE2RV5vPCCWmlMf3U1AXj5XuWOLUX+Rp2sGKau7wZKsvywhheWm+qndQ==

"@swc/core-win32-ia32-msvc@1.3.101":
version "1.3.101"
resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.101.tgz#c919175bb4cd5e9fcfa56fbd3708167c1d445c68"
integrity sha512-onO5KvICRVlu2xmr4//V2je9O2XgS1SGKpbX206KmmjcJhXN5EYLSxW9qgg+kgV5mip+sKTHTAu7IkzkAtElYA==

"@swc/core-win32-x64-msvc@1.3.101":
version "1.3.101"
resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.101.tgz#17743fe425caffc596fde5965c9c4cf9a48aa26a"
integrity sha512-T3GeJtNQV00YmiVw/88/nxJ/H43CJvFnpvBHCVn17xbahiVUOPOduh3rc9LgAkKiNt/aV8vU3OJR+6PhfMR7UQ==

"@swc/core@^1.3.101":
version "1.3.101"
resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.3.101.tgz#4e8f1583094a73c410e48a0bebdeccdc6c66d4a5"
integrity sha512-w5aQ9qYsd/IYmXADAnkXPGDMTqkQalIi+kfFf/MHRKTpaOL7DHjMXwPp/n8hJ0qNjRvchzmPtOqtPBiER50d8A==
dependencies:
"@swc/counter" "^0.1.1"
"@swc/types" "^0.1.5"
optionalDependencies:
"@swc/core-darwin-arm64" "1.3.101"
"@swc/core-darwin-x64" "1.3.101"
"@swc/core-linux-arm-gnueabihf" "1.3.101"
"@swc/core-linux-arm64-gnu" "1.3.101"
"@swc/core-linux-arm64-musl" "1.3.101"
"@swc/core-linux-x64-gnu" "1.3.101"
"@swc/core-linux-x64-musl" "1.3.101"
"@swc/core-win32-arm64-msvc" "1.3.101"
"@swc/core-win32-ia32-msvc" "1.3.101"
"@swc/core-win32-x64-msvc" "1.3.101"

"@swc/counter@^0.1.1":
version "0.1.2"
resolved "https://registry.yarnpkg.com/@swc/counter/-/counter-0.1.2.tgz#bf06d0770e47c6f1102270b744e17b934586985e"
integrity sha512-9F4ys4C74eSTEUNndnER3VJ15oru2NumfQxS8geE+f3eB5xvfxpWyqE5XlVnxb/R14uoXi6SLbBwwiDSkv+XEw==

"@swc/jest@^0.2.29":
version "0.2.29"
resolved "https://registry.yarnpkg.com/@swc/jest/-/jest-0.2.29.tgz#b27d647ec430c909f9bb567d1df2a47eaa3841f4"
integrity sha512-8reh5RvHBsSikDC3WGCd5ZTd2BXKkyOdK7QwynrCH58jk2cQFhhHhFBg/jvnWZehUQe/EoOImLENc9/DwbBFow==
dependencies:
"@jest/create-cache-key-function" "^27.4.2"
jsonc-parser "^3.2.0"

"@swc/types@^0.1.5":
version "0.1.5"
resolved "https://registry.yarnpkg.com/@swc/types/-/types-0.1.5.tgz#043b731d4f56a79b4897a3de1af35e75d56bc63a"
integrity sha512-myfUej5naTBWnqOCc/MdVOLVjXUXtIA+NpDrDBKJtLLg2shUjBu3cZmB/85RyitKc55+lUUyl7oRfLOvkr2hsw==

"@tsconfig/node10@^1.0.7":
version "1.0.9"
resolved "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz"
Expand Down Expand Up @@ -2956,6 +3061,13 @@
resolved "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz"
integrity sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==

"@types/yargs@^16.0.0":
version "16.0.9"
resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-16.0.9.tgz#ba506215e45f7707e6cbcaf386981155b7ab956e"
integrity sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==
dependencies:
"@types/yargs-parser" "*"

"@types/yargs@^17.0.8":
version "17.0.24"
resolved "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz"
Expand Down Expand Up @@ -5467,6 +5579,11 @@ json5@^2.2.1, json5@^2.2.2:
resolved "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz"
integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==

jsonc-parser@^3.2.0:
version "3.2.0"
resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.2.0.tgz#31ff3f4c2b9793f89c67212627c51c6394f88e76"
integrity sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==

jsonfile@^4.0.0:
version "4.0.0"
resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz"
Expand Down

0 comments on commit 30e8636

Please sign in to comment.