Skip to content

Commit

Permalink
routing-api simulation status change from string to enum (#757)
Browse files Browse the repository at this point in the history
* routing-api simulation status change from string to enum

* fix prettier

* fix unit test
  • Loading branch information
jsy1218 committed Jun 20, 2024
1 parent a73af7c commit c24e025
Show file tree
Hide file tree
Showing 4 changed files with 63 additions and 11 deletions.
4 changes: 2 additions & 2 deletions lib/handlers/quote/quote.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ import {
QUOTE_SPEED_CONFIG,
} from '../shared'
import { QuoteQueryParams, QuoteQueryParamsJoi, TradeTypeParam } from './schema/quote-schema'
import { simulationStatusToString } from './util/simulation'
import { simulationStatusTranslation } from './util/simulation'
import Logger from 'bunyan'
import { PAIRS_TO_TRACK } from './util/pairs-to-track'
import { measureDistributionPercentChangeImpact } from '../../util/alpha-config-measurement'
Expand Down Expand Up @@ -614,7 +614,7 @@ export class QuoteHandler extends APIGLambdaHandler<
gasUseEstimateGasTokenDecimals: estimatedGasUsedGasToken?.toExact(),
gasUseEstimate: estimatedGasUsed.toString(),
gasUseEstimateUSD: estimatedGasUsedUSD.toExact(),
simulationStatus: simulationStatusToString(simulationStatus, log),
simulationStatus: simulationStatusTranslation(simulationStatus, log),
simulationError: simulationStatus == SimulationStatus.Failed,
gasPriceWei: gasPriceWei.toString(),
route: routeResponse,
Expand Down
29 changes: 21 additions & 8 deletions lib/handlers/quote/util/simulation.ts
Original file line number Diff line number Diff line change
@@ -1,22 +1,35 @@
import { SimulationStatus } from '@uniswap/smart-order-router'
import Logger from 'bunyan'

export const simulationStatusToString = (simulationStatus: SimulationStatus | undefined, log: Logger) => {
export enum RoutingApiSimulationStatus {
UNATTEMPTED = 'UNATTEMPTED',
SUCCESS = 'SUCCESS',
FAILED = 'FAILED',
INSUFFICIENT_BALANCE = 'INSUFFICIENT_BALANCE',
NOT_SUPPORTED = 'NOT_SUPPORTED',
NOT_APPROVED = 'NOT_APPROVED',
UNKNOWN = '',
}

export const simulationStatusTranslation = (
simulationStatus: SimulationStatus | undefined,
log: Logger
): RoutingApiSimulationStatus => {
switch (simulationStatus) {
case undefined:
return 'UNATTEMPTED'
return RoutingApiSimulationStatus.UNATTEMPTED
case SimulationStatus.Succeeded:
return 'SUCCESS'
return RoutingApiSimulationStatus.SUCCESS
case SimulationStatus.Failed:
return 'FAILED'
return RoutingApiSimulationStatus.FAILED
case SimulationStatus.InsufficientBalance:
return 'INSUFFICIENT_BALANCE'
return RoutingApiSimulationStatus.INSUFFICIENT_BALANCE
case SimulationStatus.NotSupported:
return 'NOT_SUPPORTED'
return RoutingApiSimulationStatus.NOT_SUPPORTED
case SimulationStatus.NotApproved:
return 'NOT_APPROVED'
return RoutingApiSimulationStatus.NOT_APPROVED
default:
log.error(`Unknown simulation status ${simulationStatus}`)
return ''
return RoutingApiSimulationStatus.UNKNOWN
}
}
3 changes: 2 additions & 1 deletion lib/handlers/schema.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import Joi from '@hapi/joi'
import { MethodParameters } from '@uniswap/smart-order-router'
import { RoutingApiSimulationStatus } from './quote/util/simulation'

export type TokenInRoute = {
address: string
Expand Down Expand Up @@ -90,7 +91,7 @@ export type QuoteResponse = {
gasUseEstimateGasTokenDecimals?: string
gasUseEstimateUSD: string
simulationError?: boolean
simulationStatus: string
simulationStatus: RoutingApiSimulationStatus
gasPriceWei: string
blockNumber: string
route: Array<(V3PoolInRoute | V2PoolInRoute)[]>
Expand Down
38 changes: 38 additions & 0 deletions test/jest/unit/handlers/util/simulation.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
import { describe, expect, it } from '@jest/globals'
import { log, SimulationStatus } from '@uniswap/smart-order-router'
import {
RoutingApiSimulationStatus,
simulationStatusTranslation,
} from '../../../../../lib/handlers/quote/util/simulation'

describe('simulation', () => {
it('returns unattempted for undefined simulation status', () => {
const status = simulationStatusTranslation(undefined, log)
expect(status).toStrictEqual(RoutingApiSimulationStatus.UNATTEMPTED)
})

it('returns success for succeeded simulation status', () => {
const status = simulationStatusTranslation(SimulationStatus.Succeeded, log)
expect(status).toStrictEqual(RoutingApiSimulationStatus.SUCCESS)
})

it('returns failed for failed simulation status', () => {
const status = simulationStatusTranslation(SimulationStatus.Failed, log)
expect(status).toStrictEqual(RoutingApiSimulationStatus.FAILED)
})

it('returns insufficient balance for insufficient balance simulation status', () => {
const status = simulationStatusTranslation(SimulationStatus.InsufficientBalance, log)
expect(status).toStrictEqual(RoutingApiSimulationStatus.INSUFFICIENT_BALANCE)
})

it('returns not supported for not supported simulation status', () => {
const status = simulationStatusTranslation(SimulationStatus.NotSupported, log)
expect(status).toStrictEqual(RoutingApiSimulationStatus.NOT_SUPPORTED)
})

it('returns not approved for not approved simulation status', () => {
const status = simulationStatusTranslation(SimulationStatus.NotApproved, log)
expect(status).toStrictEqual(RoutingApiSimulationStatus.NOT_APPROVED)
})
})

0 comments on commit c24e025

Please sign in to comment.