From c8fa3f5de28260fbc4a7fb87dc6983e850b87b9c Mon Sep 17 00:00:00 2001 From: Santese Smith <43831817+santese@users.noreply.github.com> Date: Wed, 25 Jan 2023 23:13:11 -0800 Subject: [PATCH] feat: add additonal methods --- README.md | 4 +++- src/lib/accounts/accounts.spec.ts | 22 +++++++++++++++++++++- src/lib/accounts/accounts.ts | 17 +++++++++++++---- src/lib/accounts/accounts.types.ts | 4 ++++ 4 files changed, 41 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 003c084..79808b4 100755 --- a/README.md +++ b/README.md @@ -13,7 +13,9 @@ const duo = new Duo({ const accounts = await duo.accounts.getAll() -const account = await duo.accounts.create('New Account') +const account = await duo.accounts.create({ + name: 'Account Name' +}) ``` ## Test diff --git a/src/lib/accounts/accounts.spec.ts b/src/lib/accounts/accounts.spec.ts index 1704d7c..280d11d 100644 --- a/src/lib/accounts/accounts.spec.ts +++ b/src/lib/accounts/accounts.spec.ts @@ -28,12 +28,32 @@ describe('Accounts', () => { expect(mockAxios.post).toHaveBeenCalledWith('/accounts/v1/account/list') }) + it('gets an account by id', async () => { + const data = { + response: [account], + } + jest.spyOn(mockAxios, 'post').mockResolvedValue({ data }) + const res = await accounts.getById('1') + expect(res).toEqual(account) + expect(mockAxios.post).toHaveBeenCalledWith('/accounts/v1/account/list') + }) + + it('gets an account by name', async () => { + const data = { + response: [account], + } + jest.spyOn(mockAxios, 'post').mockResolvedValue({ data }) + const res = await accounts.getByName('Account') + expect(res).toEqual(account) + expect(mockAxios.post).toHaveBeenCalledWith('/accounts/v1/account/list') + }) + it('creates an account', async () => { const data = { response: account, } jest.spyOn(mockAxios, 'post').mockResolvedValue({ data }) - const res = await accounts.create('Account') + const res = await accounts.create({ name: 'Account' }) expect(res).toEqual(account) expect(mockAxios.post).toHaveBeenCalledWith( '/accounts/v1/account/create', diff --git a/src/lib/accounts/accounts.ts b/src/lib/accounts/accounts.ts index 504587d..299b36a 100644 --- a/src/lib/accounts/accounts.ts +++ b/src/lib/accounts/accounts.ts @@ -1,22 +1,31 @@ import { AxiosInstance } from 'axios' -import { Account } from './accounts.types' +import { Account, CreateAccount } from './accounts.types' export class Accounts { constructor(private readonly httpAgent: AxiosInstance) {} async getAll(): Promise { const { data: res } = await this.httpAgent.post('/accounts/v1/account/list') - return res.response } - async create(name: string): Promise { + async getById(accountId: string) { + const accounts = await this.getAll() + return accounts.find((account) => account.account_id === accountId) + } + + async getByName(name: string) { + const accounts = await this.getAll() + return accounts.find((account) => account.name === name) + } + + async create(account: CreateAccount): Promise { const { data: res } = await this.httpAgent.post( '/accounts/v1/account/create', {}, { params: { - name, + ...account, }, }, ) diff --git a/src/lib/accounts/accounts.types.ts b/src/lib/accounts/accounts.types.ts index 6b69015..c219e9d 100644 --- a/src/lib/accounts/accounts.types.ts +++ b/src/lib/accounts/accounts.types.ts @@ -3,3 +3,7 @@ export interface Account { api_hostname: string name: string } + +export interface CreateAccount { + name: string +}