mirror of
https://github.com/anomalyco/opencode.git
synced 2026-09-04 08:24:35 +00:00
fix(core): preserve provider identity in catalog updates
This commit is contained in:
parent
5f1d74fd3f
commit
050398f51f
2 changed files with 27 additions and 0 deletions
|
|
@ -100,6 +100,7 @@ const layer = Layer.effect(
|
|||
editor.providers.set(providerID, current)
|
||||
}
|
||||
fn(current.provider)
|
||||
current.provider.id = providerID
|
||||
},
|
||||
remove: (providerID) => {
|
||||
editor.providers.delete(providerID)
|
||||
|
|
|
|||
|
|
@ -93,6 +93,32 @@ describe("Catalog", () => {
|
|||
}),
|
||||
)
|
||||
|
||||
it.effect("preserves provider identity when updating new and existing providers", () =>
|
||||
Effect.gen(function* () {
|
||||
const catalog = yield* Catalog.Service
|
||||
const providerID = Provider.ID.make("original")
|
||||
const renamed = Provider.ID.make("renamed")
|
||||
yield* catalog.transform((editor) => {
|
||||
editor.provider.update(providerID, (provider) => {
|
||||
provider.id = renamed
|
||||
provider.name = "Created"
|
||||
})
|
||||
expect(editor.provider.get(providerID)?.provider.id).toBe(providerID)
|
||||
editor.provider.update(providerID, (provider) => {
|
||||
provider.id = renamed
|
||||
provider.name = "Updated"
|
||||
})
|
||||
})
|
||||
|
||||
expect(yield* catalog.provider.get(providerID)).toMatchObject({ id: providerID, name: "Updated" })
|
||||
expect(yield* catalog.provider.get(renamed)).toBeUndefined()
|
||||
expect((yield* catalog.provider.all()).map((provider) => provider.id)).toEqual([providerID])
|
||||
|
||||
yield* catalog.reload()
|
||||
expect(yield* catalog.provider.get(providerID)).toMatchObject({ id: providerID, name: "Updated" })
|
||||
}),
|
||||
)
|
||||
|
||||
it.effect("derives availability from active credentials without changing provider state", () => {
|
||||
const integrationID = Integration.ID.make("test")
|
||||
const localCatalogLayer = Layer.fresh(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue