Skip to content

Commit 2ba50dd

Browse files
authored
Remove fallback in finage (#4456)
1 parent 2abe81e commit 2ba50dd

File tree

5 files changed

+38
-10
lines changed

5 files changed

+38
-10
lines changed

.changeset/pretty-nails-invent.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@chainlink/finage-adapter': minor
3+
---
4+
5+
Do not fallback on (bid+ask)/2 when last trade price is missing

packages/sources/finage/src/transport/stock-ws.ts

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,16 +21,11 @@ export const wsTransport = new WebSocketTransport<WsTransportTypes>({
2121
},
2222
handlers: {
2323
message(message) {
24-
if (!message.p && !message.a && !message.b) {
24+
if (!message.p) {
2525
return []
2626
}
2727

28-
let result
29-
if (message.p) {
30-
result = Number(message.p)
31-
} else {
32-
result = (Number(message.a) + Number(message.b)) / 2
33-
}
28+
const result = Number(message.p)
3429

3530
return [
3631
{

packages/sources/finage/test/integration/__snapshots__/adapter-ws.test.ts.snap

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,17 @@ exports[`websocket forex endpoint should return success 1`] = `
4545
}
4646
`;
4747

48+
exports[`websocket stock endpoint missing price - should return error 1`] = `
49+
{
50+
"error": {
51+
"message": "The EA has not received any values from the Data Provider for the requested data yet. Retry after a short delay, and if the problem persists raise this issue in the relevant channels.",
52+
"name": "AdapterError",
53+
},
54+
"status": "errored",
55+
"statusCode": 504,
56+
}
57+
`;
58+
4859
exports[`websocket stock endpoint should return success 1`] = `
4960
{
5061
"data": {

packages/sources/finage/test/integration/adapter-ws.test.ts

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
1+
import { WebSocketClassProvider } from '@chainlink/external-adapter-framework/transports'
12
import {
2-
TestAdapter,
3-
setEnvVariables,
43
mockWebSocketProvider,
54
MockWebsocketServer,
5+
setEnvVariables,
6+
TestAdapter,
67
} from '@chainlink/external-adapter-framework/util/testing-utils'
78
import FakeTimers from '@sinonjs/fake-timers'
89
import {
@@ -11,7 +12,6 @@ import {
1112
mockForexWebSocketServer,
1213
mockStockWebSocketServer,
1314
} from './fixtures'
14-
import { WebSocketClassProvider } from '@chainlink/external-adapter-framework/transports'
1515
describe('websocket', () => {
1616
let mockWsServerStock: MockWebsocketServer | undefined
1717
let mockWsServerForex: MockWebsocketServer | undefined
@@ -97,6 +97,14 @@ describe('websocket', () => {
9797
const response = await testAdapter.request(stockData)
9898
expect(response.json()).toMatchSnapshot()
9999
})
100+
101+
it('missing price - should return error', async () => {
102+
const response = await testAdapter.request({
103+
base: 'MISSING_PRICE',
104+
transport: 'ws',
105+
})
106+
expect(response.json()).toMatchSnapshot()
107+
})
100108
})
101109

102110
describe('forex endpoint', () => {

packages/sources/finage/test/integration/fixtures.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,15 @@ export const mockStockWebSocketServer = (URL: string): MockWebsocketServer => {
126126
dp: false,
127127
t: 1646154954689,
128128
},
129+
{
130+
s: 'MISSING_PRICE',
131+
a: 163.58,
132+
b: 163.2,
133+
c: [37],
134+
v: 50,
135+
dp: false,
136+
t: 1646154954689,
137+
},
129138
]
130139
const mockWsServer = new MockWebsocketServer(URL, { mock: false })
131140
mockWsServer.on('connection', (socket) => {

0 commit comments

Comments
 (0)