Skip to content

Commit 2cdce99

Browse files
authored
feat: migrations find endpoint (#485)
1 parent 41f78dd commit 2cdce99

File tree

4 files changed

+109
-0
lines changed

4 files changed

+109
-0
lines changed

resources/migrations.ts

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
import { UnitResponse, UnitConfig, QueryParameters } from "../types/common"
2+
import { Migration, MigrationStatus } from "../types/migration"
3+
import { BaseResource } from "./baseResource"
4+
5+
export class Migrations extends BaseResource {
6+
constructor(token: string, basePath: string, config?: UnitConfig) {
7+
super(token, basePath + "/migrations", config)
8+
}
9+
10+
public async find(
11+
params?: MigrationsFindParams
12+
): Promise<UnitResponse<Migration[]>> {
13+
const parameters: QueryParameters = {
14+
...(params?.customerId && { "filter[customerId]": params.customerId }),
15+
}
16+
17+
if (params?.status)
18+
params.status.forEach((s, idx) => {
19+
parameters[`filter[status][${idx}]`] = s
20+
})
21+
22+
return this.httpGet<UnitResponse<Migration[]>>("", {
23+
params: parameters,
24+
})
25+
}
26+
}
27+
28+
export interface MigrationsFindParams {
29+
status?: MigrationStatus[]
30+
customerId?: string
31+
}

tests/migrations.spec.ts

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import { Unit } from "../unit"
2+
3+
import dotenv from "dotenv"
4+
dotenv.config()
5+
const unit = new Unit(
6+
process.env.UNIT_TOKEN || "test",
7+
process.env.UNIT_API_URL || "test"
8+
)
9+
10+
describe("Find Migrations", () => {
11+
test("Find Migrations", async () => {
12+
const res = await unit.migrations.find()
13+
expect(res.data.length > 0).toBeTruthy()
14+
res.data.forEach((migration) =>
15+
expect(migration.type === "customerBankMigration").toBeTruthy()
16+
)
17+
})
18+
})

types/migration.ts

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
export enum MigrationStatus {
2+
MigrationStarted = "MigrationStarted",
3+
CollectingAccountsConsent = "CollectingAccountsConsent",
4+
MigratingAccounts = "MigratingAccounts",
5+
CollectingMoneyMovementConsent = "CollectingMoneyMovementConsent",
6+
ExecutingMoneyMovement = "ExecutingMoneyMovement",
7+
PendingMigrationDeadline = "PendingMigrationDeadline",
8+
PendingMoneyMovementOnDeadline = "PendingMoneyMovementOnDeadline",
9+
ClosingAccounts = "ClosingAccounts",
10+
Completed = "Completed",
11+
Cancelled = "Cancelled",
12+
}
13+
14+
export enum BalanceTransferTiming {
15+
NewAccountCreation = "NewAccountCreation",
16+
MigrationDeadline = "MigrationDeadline",
17+
}
18+
19+
export interface Migration {
20+
id: string
21+
type: "customerBankMigration"
22+
attributes: {
23+
migrationStatus: MigrationStatus
24+
deadLine: string
25+
fromBank: string
26+
toBank: string
27+
orgName: string
28+
supportEmail: string
29+
supportPhone: string
30+
migrationUrl: string
31+
createdAt: string
32+
updatedAt: string
33+
supressInvitationEmail: boolean
34+
digitallyActivatePhysicalCards: boolean
35+
balanceTransferTiming: BalanceTransferTiming
36+
}
37+
relationships: {
38+
org: {
39+
data: {
40+
type: "org"
41+
id: string
42+
}
43+
}
44+
customer: {
45+
data: {
46+
type: "customer"
47+
id: string
48+
}
49+
}
50+
whiteLabelTheme: {
51+
data: {
52+
type: "whiteLabelTheme"
53+
id: string
54+
}
55+
}
56+
}
57+
}

unit.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ import { Chargebacks } from "./resources/chargeback"
3333
import { CashDeposits } from "./resources/cashDeposits"
3434
import { CreditApplications } from "./resources/creditApplication"
3535
import { RecurringRepayments } from "./resources/recurringRepayments"
36+
import { Migrations } from "./resources/migrations"
3637

3738
export class Unit {
3839
public applications: Applications
@@ -71,6 +72,7 @@ export class Unit {
7172
public cashDeposits: CashDeposits
7273
public creditApplications: CreditApplications
7374
public recurringRepayments: RecurringRepayments
75+
public migrations: Migrations;
7476

7577
constructor(token: string, basePath: string, config?: UnitConfig) {
7678
// remove all trailing slashes from user-provided basePath
@@ -111,6 +113,7 @@ export class Unit {
111113
this.cashDeposits = new CashDeposits(token, basePath, config)
112114
this.creditApplications = new CreditApplications(token, basePath, config)
113115
this.recurringRepayments = new RecurringRepayments(token, basePath, config)
116+
this.migrations = new Migrations(token, basePath, config)
114117
this.helpers = helpers
115118
}
116119

0 commit comments

Comments
 (0)