diff --git a/.changeset/light-suns-appear.md b/.changeset/light-suns-appear.md new file mode 100644 index 0000000000..ea5dd11376 --- /dev/null +++ b/.changeset/light-suns-appear.md @@ -0,0 +1,5 @@ +--- +'@chainlink/ftse-sftp-adapter': patch +--- + +Change interface of parser that isn't used yet diff --git a/packages/sources/ftse-sftp/src/parsing/base-parser.ts b/packages/sources/ftse-sftp/src/parsing/base-parser.ts index 8c638fa2be..7a1c40f1f0 100644 --- a/packages/sources/ftse-sftp/src/parsing/base-parser.ts +++ b/packages/sources/ftse-sftp/src/parsing/base-parser.ts @@ -15,7 +15,10 @@ export abstract class BaseCSVParser implement /** * Abstract method that must be implemented by concrete classes */ - abstract parse(csvContent: string): Promise + abstract parse(csvContent: string): Promise<{ + result: number + parsedData: T + }> /** * Helper method to parse CSV content as records with column headers diff --git a/packages/sources/ftse-sftp/src/parsing/ftse100.ts b/packages/sources/ftse-sftp/src/parsing/ftse100.ts index 8df16247f9..c70b73708e 100644 --- a/packages/sources/ftse-sftp/src/parsing/ftse100.ts +++ b/packages/sources/ftse-sftp/src/parsing/ftse100.ts @@ -29,9 +29,9 @@ export { EXPECTED_HEADERS, HEADER_ROW_NUMBER } export interface FTSE100Data extends ParsedData { indexCode: string indexSectorName: string - numberOfConstituents: number | null + numberOfConstituents: number indexBaseCurrency: string - gbpIndex: number | null + gbpIndex: number } /** @@ -51,7 +51,10 @@ export class FTSE100Parser extends BaseCSVParser { }) } - async parse(csvContent: string): Promise { + async parse(csvContent: string): Promise<{ + result: number + parsedData: FTSE100Data + }> { const parsed = this.parseCSVRecords(csvContent, { from_line: HEADER_ROW_NUMBER, }) @@ -68,7 +71,11 @@ export class FTSE100Parser extends BaseCSVParser { throw new Error('No FTSE 100 index record found') } - return results[0] + const parsedData = results[0] + return { + result: parsedData.gbpIndex, + parsedData, + } } /** diff --git a/packages/sources/ftse-sftp/src/parsing/interfaces.ts b/packages/sources/ftse-sftp/src/parsing/interfaces.ts index fe376fbdf2..c89090fe10 100644 --- a/packages/sources/ftse-sftp/src/parsing/interfaces.ts +++ b/packages/sources/ftse-sftp/src/parsing/interfaces.ts @@ -7,7 +7,10 @@ export interface CSVParser { * @param csvContent - Raw CSV content as string * @returns Promise of parsed data */ - parse(csvContent: string): Promise + parse(csvContent: string): Promise<{ + result: number + parsedData: T + }> } /** diff --git a/packages/sources/ftse-sftp/src/parsing/russell.ts b/packages/sources/ftse-sftp/src/parsing/russell.ts index f001600644..efa354d982 100644 --- a/packages/sources/ftse-sftp/src/parsing/russell.ts +++ b/packages/sources/ftse-sftp/src/parsing/russell.ts @@ -37,7 +37,10 @@ export class RussellDailyValuesParser extends BaseCSVParser { this.instrument = instrument } - async parse(csvContent: string): Promise { + async parse(csvContent: string): Promise<{ + result: number + parsedData: RussellDailyValuesData + }> { this.validateCloseColumn(csvContent) const parsed = this.parseCSVArrays(csvContent, { @@ -56,7 +59,11 @@ export class RussellDailyValuesParser extends BaseCSVParser { throw new Error('Multiple matching Russell index records found, expected only one') } - return results[0] + const parsedData = results[0] + return { + result: parsedData.close, + parsedData, + } } /** diff --git a/packages/sources/ftse-sftp/test/unit/parsing/ftse100.test.ts b/packages/sources/ftse-sftp/test/unit/parsing/ftse100.test.ts index 8be296045a..d1731bf75d 100644 --- a/packages/sources/ftse-sftp/test/unit/parsing/ftse100.test.ts +++ b/packages/sources/ftse-sftp/test/unit/parsing/ftse100.test.ts @@ -10,9 +10,9 @@ describe('FTSE100Parser', () => { describe('parse', () => { it('should parse the actual FTSE CSV file correctly', async () => { - const result = await parser.parse(ftseCsvFixture) - expect(result).toBeDefined() - expect(result).toEqual(expectedFtseData) + const { parsedData, result } = await parser.parse(ftseCsvFixture) + expect(parsedData).toEqual(expectedFtseData) + expect(result).toBe(expectedFtseData.gbpIndex) }) it('should throw error for invalid CSV format', async () => { @@ -76,13 +76,12 @@ UKX,FTSE 100 Index,100,GBP,4659.89,4926.97,4523.90 AS0,FTSE All-Small Index,234,GBP,4535.81973790,4918.68240124,4401.18006784 XXXXXXXX` - const result = await parser.parse(csvWithInconsistentColumns) - expect(result).toBeDefined() - expect(result.indexCode).toBe('UKX') - expect(result.indexSectorName).toBe('FTSE 100 Index') - expect(result.numberOfConstituents).toBe(100) - expect(result.indexBaseCurrency).toBe('GBP') - expect(result.gbpIndex).toBe(4926.97) + const { parsedData } = await parser.parse(csvWithInconsistentColumns) + expect(parsedData.indexCode).toBe('UKX') + expect(parsedData.indexSectorName).toBe('FTSE 100 Index') + expect(parsedData.numberOfConstituents).toBe(100) + expect(parsedData.indexBaseCurrency).toBe('GBP') + expect(parsedData.gbpIndex).toBe(4926.97) }) }) }) diff --git a/packages/sources/ftse-sftp/test/unit/parsing/russell.test.ts b/packages/sources/ftse-sftp/test/unit/parsing/russell.test.ts index 01ac524231..f823971b6b 100644 --- a/packages/sources/ftse-sftp/test/unit/parsing/russell.test.ts +++ b/packages/sources/ftse-sftp/test/unit/parsing/russell.test.ts @@ -10,9 +10,9 @@ describe('RussellDailyValuesParser', () => { describe('parse', () => { it('should parse the actual Russell CSV file correctly', async () => { - const result = await parser.parse(russellCsvFixture) - expect(result).toBeDefined() - expect(result).toEqual(expectedRussellData) + const { parsedData, result } = await parser.parse(russellCsvFixture) + expect(parsedData).toEqual(expectedRussellData) + expect(result).toBe(expectedRussellData.close) }) it('should throw error for invalid CSV format', async () => { @@ -87,10 +87,9 @@ Russell 1000� Index,3538.25,3550.79,3534.60,3547.40,9.16,0.26,3547.40,3483.25, Russell 2000® Index,1234.56,1245.67,1230.45,1240.00,5.44,0.44 XXXXXXXX` - const result = await parser.parse(csvWithInconsistentColumns) - expect(result).toBeDefined() - expect(result.indexName).toBe('Russell 1000� Index') - expect(result.close).toBe(3547.4) + const { parsedData } = await parser.parse(csvWithInconsistentColumns) + expect(parsedData.indexName).toBe('Russell 1000� Index') + expect(parsedData.close).toBe(3547.4) }) }) })