diff --git a/src/lib/BravoClient.ts b/src/lib/BravoClient.ts index 97ae6b2..071be4c 100644 --- a/src/lib/BravoClient.ts +++ b/src/lib/BravoClient.ts @@ -472,14 +472,32 @@ export class BravoClient extends FavroClient { return await find(await this.listColumns(widgetCommonId), matchFunction); } - async findColumnById(widgetCommonId: string, columnId: string) { - const column = await find( - await this.listColumns(widgetCommonId), - (col) => col.columnId == columnId, - ); + async findColumnById( + columnCommonId: string, + ): Promise; + async findColumnById( + widgetCommonId: string, + columnId: string, + ): Promise; + async findColumnById( + widgetOrColumnId: string, + columnId?: string, + ): Promise { + const column = columnId + ? await find( + await this.listColumns(widgetOrColumnId), + (col) => col.columnId == columnId, + ) + : ((await ( + await this.requestWithReturnedEntities( + `columns/${widgetOrColumnId}`, + { method: 'get' }, + BravoColumn, + ) + ).getFirstEntity()) as BravoColumn); assertBravoClaim( column, - `Column with id ${columnId} does not exist on Widget with id ${widgetCommonId}`, + `Column with id ${columnId} does not exist on Widget with id ${widgetOrColumnId}`, ); return column; } diff --git a/src/test/client.test.ts b/src/test/client.test.ts index 6e94742..7e8348b 100644 --- a/src/test/client.test.ts +++ b/src/test/client.test.ts @@ -347,6 +347,11 @@ describe('BravoClient', function () { const foundColumn = await testWidget.findColumnByName(testColumnName); assertBravoTestClaim(foundColumn); expect(foundColumn!.equals(testColumn)).to.be.true; + + expect( + (await client.findColumnById(testColumn.columnId))?.equals(foundColumn), + 'Should be able to directly find', + ).to.be.true; }); it('can create a webhook', async function () {