t3-code-android-nightly/.repos/effect-smol/packages/effect/test/cluster/interruptors.test.ts
Julius Marminge 6f9cea00ae
chore(refs): sync Effect and Alchemy references to 4.0.1 and beta.80 (#16170)
Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-05 13:22:30 -07:00

37 lines
1.1 KiB
TypeScript

import { assert, it } from "@effect/vitest"
import { Effect } from "effect"
import { EntityAddress, EntityId, EntityType, ShardId } from "effect/cluster"
import { acquireEntity, aroundEntityType, isActive, releaseEntity } from "effect/cluster/internal/interruptors"
const address = EntityAddress.make({
shardId: ShardId.make("active-teardown-unit", 1),
entityType: EntityType.make("ActiveTeardownUnit"),
entityId: EntityId.make("1")
})
it("releases entity keys so membership returns to baseline", () => {
acquireEntity(address)
assert.isTrue(isActive(address))
releaseEntity(address)
assert.isFalse(isActive(address))
})
it("refcounts overlapping acquires", () => {
acquireEntity(address)
acquireEntity(address)
releaseEntity(address)
assert.isTrue(isActive(address))
releaseEntity(address)
assert.isFalse(isActive(address))
})
it.effect("aroundEntityType restores the key after the effect", () =>
Effect.gen(function*() {
yield* aroundEntityType(
"ActiveTeardownUnit",
Effect.sync(() => {
assert.isTrue(isActive(address))
})
)
assert.isFalse(isActive(address))
}))