|
|
@@ -18,14 +18,14 @@ const it = testEffect(Layer.merge(AccountRepo.layer, truncate))
|
|
|
|
|
|
it.live("list returns empty when no accounts exist", () =>
|
|
|
Effect.gen(function* () {
|
|
|
- const accounts = yield* AccountRepo.use((r) => r.list())
|
|
|
+ const accounts = yield* AccountRepo.Service.use((r) => r.list())
|
|
|
expect(accounts).toEqual([])
|
|
|
}),
|
|
|
)
|
|
|
|
|
|
it.live("active returns none when no accounts exist", () =>
|
|
|
Effect.gen(function* () {
|
|
|
- const active = yield* AccountRepo.use((r) => r.active())
|
|
|
+ const active = yield* AccountRepo.Service.use((r) => r.active())
|
|
|
expect(Option.isNone(active)).toBe(true)
|
|
|
}),
|
|
|
)
|
|
|
@@ -33,7 +33,7 @@ it.live("active returns none when no accounts exist", () =>
|
|
|
it.live("persistAccount inserts and getRow retrieves", () =>
|
|
|
Effect.gen(function* () {
|
|
|
const id = AccountID.make("user-1")
|
|
|
- yield* AccountRepo.use((r) =>
|
|
|
+ yield* AccountRepo.Service.use((r) =>
|
|
|
r.persistAccount({
|
|
|
id,
|
|
|
email: "test@example.com",
|
|
|
@@ -45,13 +45,13 @@ it.live("persistAccount inserts and getRow retrieves", () =>
|
|
|
}),
|
|
|
)
|
|
|
|
|
|
- const row = yield* AccountRepo.use((r) => r.getRow(id))
|
|
|
+ const row = yield* AccountRepo.Service.use((r) => r.getRow(id))
|
|
|
expect(Option.isSome(row)).toBe(true)
|
|
|
const value = Option.getOrThrow(row)
|
|
|
expect(value.id).toBe(AccountID.make("user-1"))
|
|
|
expect(value.email).toBe("test@example.com")
|
|
|
|
|
|
- const active = yield* AccountRepo.use((r) => r.active())
|
|
|
+ const active = yield* AccountRepo.Service.use((r) => r.active())
|
|
|
expect(Option.getOrThrow(active).active_org_id).toBe(OrgID.make("org-1"))
|
|
|
}),
|
|
|
)
|
|
|
@@ -60,7 +60,7 @@ it.live("persistAccount normalizes trailing slashes in stored server URLs", () =
|
|
|
Effect.gen(function* () {
|
|
|
const id = AccountID.make("user-1")
|
|
|
|
|
|
- yield* AccountRepo.use((r) =>
|
|
|
+ yield* AccountRepo.Service.use((r) =>
|
|
|
r.persistAccount({
|
|
|
id,
|
|
|
email: "test@example.com",
|
|
|
@@ -72,9 +72,9 @@ it.live("persistAccount normalizes trailing slashes in stored server URLs", () =
|
|
|
}),
|
|
|
)
|
|
|
|
|
|
- const row = yield* AccountRepo.use((r) => r.getRow(id))
|
|
|
- const active = yield* AccountRepo.use((r) => r.active())
|
|
|
- const list = yield* AccountRepo.use((r) => r.list())
|
|
|
+ const row = yield* AccountRepo.Service.use((r) => r.getRow(id))
|
|
|
+ const active = yield* AccountRepo.Service.use((r) => r.active())
|
|
|
+ const list = yield* AccountRepo.Service.use((r) => r.list())
|
|
|
|
|
|
expect(Option.getOrThrow(row).url).toBe("https://control.example.com")
|
|
|
expect(Option.getOrThrow(active).url).toBe("https://control.example.com")
|
|
|
@@ -87,7 +87,7 @@ it.live("persistAccount sets the active account and org", () =>
|
|
|
const id1 = AccountID.make("user-1")
|
|
|
const id2 = AccountID.make("user-2")
|
|
|
|
|
|
- yield* AccountRepo.use((r) =>
|
|
|
+ yield* AccountRepo.Service.use((r) =>
|
|
|
r.persistAccount({
|
|
|
id: id1,
|
|
|
email: "first@example.com",
|
|
|
@@ -99,7 +99,7 @@ it.live("persistAccount sets the active account and org", () =>
|
|
|
}),
|
|
|
)
|
|
|
|
|
|
- yield* AccountRepo.use((r) =>
|
|
|
+ yield* AccountRepo.Service.use((r) =>
|
|
|
r.persistAccount({
|
|
|
id: id2,
|
|
|
email: "second@example.com",
|
|
|
@@ -112,7 +112,7 @@ it.live("persistAccount sets the active account and org", () =>
|
|
|
)
|
|
|
|
|
|
// Last persisted account is active with its org
|
|
|
- const active = yield* AccountRepo.use((r) => r.active())
|
|
|
+ const active = yield* AccountRepo.Service.use((r) => r.active())
|
|
|
expect(Option.isSome(active)).toBe(true)
|
|
|
expect(Option.getOrThrow(active).id).toBe(AccountID.make("user-2"))
|
|
|
expect(Option.getOrThrow(active).active_org_id).toBe(OrgID.make("org-2"))
|
|
|
@@ -124,7 +124,7 @@ it.live("list returns all accounts", () =>
|
|
|
const id1 = AccountID.make("user-1")
|
|
|
const id2 = AccountID.make("user-2")
|
|
|
|
|
|
- yield* AccountRepo.use((r) =>
|
|
|
+ yield* AccountRepo.Service.use((r) =>
|
|
|
r.persistAccount({
|
|
|
id: id1,
|
|
|
email: "a@example.com",
|
|
|
@@ -136,7 +136,7 @@ it.live("list returns all accounts", () =>
|
|
|
}),
|
|
|
)
|
|
|
|
|
|
- yield* AccountRepo.use((r) =>
|
|
|
+ yield* AccountRepo.Service.use((r) =>
|
|
|
r.persistAccount({
|
|
|
id: id2,
|
|
|
email: "b@example.com",
|
|
|
@@ -148,7 +148,7 @@ it.live("list returns all accounts", () =>
|
|
|
}),
|
|
|
)
|
|
|
|
|
|
- const accounts = yield* AccountRepo.use((r) => r.list())
|
|
|
+ const accounts = yield* AccountRepo.Service.use((r) => r.list())
|
|
|
expect(accounts.length).toBe(2)
|
|
|
expect(accounts.map((a) => a.email).sort()).toEqual(["a@example.com", "b@example.com"])
|
|
|
}),
|
|
|
@@ -158,7 +158,7 @@ it.live("remove deletes an account", () =>
|
|
|
Effect.gen(function* () {
|
|
|
const id = AccountID.make("user-1")
|
|
|
|
|
|
- yield* AccountRepo.use((r) =>
|
|
|
+ yield* AccountRepo.Service.use((r) =>
|
|
|
r.persistAccount({
|
|
|
id,
|
|
|
email: "test@example.com",
|
|
|
@@ -170,9 +170,9 @@ it.live("remove deletes an account", () =>
|
|
|
}),
|
|
|
)
|
|
|
|
|
|
- yield* AccountRepo.use((r) => r.remove(id))
|
|
|
+ yield* AccountRepo.Service.use((r) => r.remove(id))
|
|
|
|
|
|
- const row = yield* AccountRepo.use((r) => r.getRow(id))
|
|
|
+ const row = yield* AccountRepo.Service.use((r) => r.getRow(id))
|
|
|
expect(Option.isNone(row)).toBe(true)
|
|
|
}),
|
|
|
)
|
|
|
@@ -182,7 +182,7 @@ it.live("use stores the selected org and marks the account active", () =>
|
|
|
const id1 = AccountID.make("user-1")
|
|
|
const id2 = AccountID.make("user-2")
|
|
|
|
|
|
- yield* AccountRepo.use((r) =>
|
|
|
+ yield* AccountRepo.Service.use((r) =>
|
|
|
r.persistAccount({
|
|
|
id: id1,
|
|
|
email: "first@example.com",
|
|
|
@@ -194,7 +194,7 @@ it.live("use stores the selected org and marks the account active", () =>
|
|
|
}),
|
|
|
)
|
|
|
|
|
|
- yield* AccountRepo.use((r) =>
|
|
|
+ yield* AccountRepo.Service.use((r) =>
|
|
|
r.persistAccount({
|
|
|
id: id2,
|
|
|
email: "second@example.com",
|
|
|
@@ -206,13 +206,13 @@ it.live("use stores the selected org and marks the account active", () =>
|
|
|
}),
|
|
|
)
|
|
|
|
|
|
- yield* AccountRepo.use((r) => r.use(id1, Option.some(OrgID.make("org-99"))))
|
|
|
- const active1 = yield* AccountRepo.use((r) => r.active())
|
|
|
+ yield* AccountRepo.Service.use((r) => r.use(id1, Option.some(OrgID.make("org-99"))))
|
|
|
+ const active1 = yield* AccountRepo.Service.use((r) => r.active())
|
|
|
expect(Option.getOrThrow(active1).id).toBe(id1)
|
|
|
expect(Option.getOrThrow(active1).active_org_id).toBe(OrgID.make("org-99"))
|
|
|
|
|
|
- yield* AccountRepo.use((r) => r.use(id1, Option.none()))
|
|
|
- const active2 = yield* AccountRepo.use((r) => r.active())
|
|
|
+ yield* AccountRepo.Service.use((r) => r.use(id1, Option.none()))
|
|
|
+ const active2 = yield* AccountRepo.Service.use((r) => r.active())
|
|
|
expect(Option.getOrThrow(active2).active_org_id).toBeNull()
|
|
|
}),
|
|
|
)
|
|
|
@@ -221,7 +221,7 @@ it.live("persistToken updates token fields", () =>
|
|
|
Effect.gen(function* () {
|
|
|
const id = AccountID.make("user-1")
|
|
|
|
|
|
- yield* AccountRepo.use((r) =>
|
|
|
+ yield* AccountRepo.Service.use((r) =>
|
|
|
r.persistAccount({
|
|
|
id,
|
|
|
email: "test@example.com",
|
|
|
@@ -234,7 +234,7 @@ it.live("persistToken updates token fields", () =>
|
|
|
)
|
|
|
|
|
|
const expiry = Date.now() + 7200_000
|
|
|
- yield* AccountRepo.use((r) =>
|
|
|
+ yield* AccountRepo.Service.use((r) =>
|
|
|
r.persistToken({
|
|
|
accountID: id,
|
|
|
accessToken: AccessToken.make("new_token"),
|
|
|
@@ -243,7 +243,7 @@ it.live("persistToken updates token fields", () =>
|
|
|
}),
|
|
|
)
|
|
|
|
|
|
- const row = yield* AccountRepo.use((r) => r.getRow(id))
|
|
|
+ const row = yield* AccountRepo.Service.use((r) => r.getRow(id))
|
|
|
const value = Option.getOrThrow(row)
|
|
|
expect(value.access_token).toBe(AccessToken.make("new_token"))
|
|
|
expect(value.refresh_token).toBe(RefreshToken.make("new_refresh"))
|
|
|
@@ -255,7 +255,7 @@ it.live("persistToken with no expiry sets token_expiry to null", () =>
|
|
|
Effect.gen(function* () {
|
|
|
const id = AccountID.make("user-1")
|
|
|
|
|
|
- yield* AccountRepo.use((r) =>
|
|
|
+ yield* AccountRepo.Service.use((r) =>
|
|
|
r.persistAccount({
|
|
|
id,
|
|
|
email: "test@example.com",
|
|
|
@@ -267,7 +267,7 @@ it.live("persistToken with no expiry sets token_expiry to null", () =>
|
|
|
}),
|
|
|
)
|
|
|
|
|
|
- yield* AccountRepo.use((r) =>
|
|
|
+ yield* AccountRepo.Service.use((r) =>
|
|
|
r.persistToken({
|
|
|
accountID: id,
|
|
|
accessToken: AccessToken.make("new_token"),
|
|
|
@@ -276,7 +276,7 @@ it.live("persistToken with no expiry sets token_expiry to null", () =>
|
|
|
}),
|
|
|
)
|
|
|
|
|
|
- const row = yield* AccountRepo.use((r) => r.getRow(id))
|
|
|
+ const row = yield* AccountRepo.Service.use((r) => r.getRow(id))
|
|
|
expect(Option.getOrThrow(row).token_expiry).toBeNull()
|
|
|
}),
|
|
|
)
|
|
|
@@ -285,7 +285,7 @@ it.live("persistAccount upserts on conflict", () =>
|
|
|
Effect.gen(function* () {
|
|
|
const id = AccountID.make("user-1")
|
|
|
|
|
|
- yield* AccountRepo.use((r) =>
|
|
|
+ yield* AccountRepo.Service.use((r) =>
|
|
|
r.persistAccount({
|
|
|
id,
|
|
|
email: "test@example.com",
|
|
|
@@ -297,7 +297,7 @@ it.live("persistAccount upserts on conflict", () =>
|
|
|
}),
|
|
|
)
|
|
|
|
|
|
- yield* AccountRepo.use((r) =>
|
|
|
+ yield* AccountRepo.Service.use((r) =>
|
|
|
r.persistAccount({
|
|
|
id,
|
|
|
email: "test@example.com",
|
|
|
@@ -309,14 +309,14 @@ it.live("persistAccount upserts on conflict", () =>
|
|
|
}),
|
|
|
)
|
|
|
|
|
|
- const accounts = yield* AccountRepo.use((r) => r.list())
|
|
|
+ const accounts = yield* AccountRepo.Service.use((r) => r.list())
|
|
|
expect(accounts.length).toBe(1)
|
|
|
|
|
|
- const row = yield* AccountRepo.use((r) => r.getRow(id))
|
|
|
+ const row = yield* AccountRepo.Service.use((r) => r.getRow(id))
|
|
|
const value = Option.getOrThrow(row)
|
|
|
expect(value.access_token).toBe(AccessToken.make("at_v2"))
|
|
|
|
|
|
- const active = yield* AccountRepo.use((r) => r.active())
|
|
|
+ const active = yield* AccountRepo.Service.use((r) => r.active())
|
|
|
expect(Option.getOrThrow(active).active_org_id).toBe(OrgID.make("org-2"))
|
|
|
}),
|
|
|
)
|
|
|
@@ -325,7 +325,7 @@ it.live("remove clears active state when deleting the active account", () =>
|
|
|
Effect.gen(function* () {
|
|
|
const id = AccountID.make("user-1")
|
|
|
|
|
|
- yield* AccountRepo.use((r) =>
|
|
|
+ yield* AccountRepo.Service.use((r) =>
|
|
|
r.persistAccount({
|
|
|
id,
|
|
|
email: "test@example.com",
|
|
|
@@ -337,16 +337,16 @@ it.live("remove clears active state when deleting the active account", () =>
|
|
|
}),
|
|
|
)
|
|
|
|
|
|
- yield* AccountRepo.use((r) => r.remove(id))
|
|
|
+ yield* AccountRepo.Service.use((r) => r.remove(id))
|
|
|
|
|
|
- const active = yield* AccountRepo.use((r) => r.active())
|
|
|
+ const active = yield* AccountRepo.Service.use((r) => r.active())
|
|
|
expect(Option.isNone(active)).toBe(true)
|
|
|
}),
|
|
|
)
|
|
|
|
|
|
it.live("getRow returns none for nonexistent account", () =>
|
|
|
Effect.gen(function* () {
|
|
|
- const row = yield* AccountRepo.use((r) => r.getRow(AccountID.make("nope")))
|
|
|
+ const row = yield* AccountRepo.Service.use((r) => r.getRow(AccountID.make("nope")))
|
|
|
expect(Option.isNone(row)).toBe(true)
|
|
|
}),
|
|
|
)
|