fix(infrared): propagate repository storage errors and recover learning keys across effective profiles

This commit is contained in:
2026-08-25 12:51:47 +08:00
parent b6cae9b2c9
commit a3812aae27
5 changed files with 104 additions and 28 deletions
@@ -176,11 +176,6 @@ class RelearnInfraredKey(
is DomainResult.Failure -> return result
}
if (key.status == InfraredKeyStatus.LEARNING) {
return DomainResult.Failure(
DomainError.InvalidRequest(detail = "Infrared key is already learning"),
)
}
when (
val result = repository.transitionStatus(
@@ -188,6 +183,7 @@ class RelearnInfraredKey(
expectedStatuses = setOf(
InfraredKeyStatus.READY,
InfraredKeyStatus.FAILED,
InfraredKeyStatus.LEARNING,
),
targetStatus = InfraredKeyStatus.LEARNING,
lastErrorCode = null,
@@ -159,7 +159,7 @@ class LearnInfraredKeyTest {
assertEquals(0, repository.insertedKeys.size)
assertEquals(2, repository.transitionCalls.size)
assertEquals(
setOf(InfraredKeyStatus.READY, InfraredKeyStatus.FAILED),
setOf(InfraredKeyStatus.READY, InfraredKeyStatus.FAILED, InfraredKeyStatus.LEARNING),
repository.transitionCalls.first().expectedStatuses,
)
assertEquals(