Release failed member snapshot requests and validate deletion frames

This commit is contained in:
evgeny committed 2026-10-29 13:34:25 +01:00
1 parent 36af8d077f
commit 9383a68f17
2 files changed
+31 -2

No files matched your search

@@ -88,4 +88,26 @@ class MemberRepositoryTest {
repo.onEvent(23, event("123", row(1)))
repo.refresh("123"); assertTrue(repo.member("123", 1)!!.phoneStatusKnown)
}
@Test fun enqueueExceptionReleasesPendingAndKeepsLastSnapshot() {
var requests = 0
val diagnostics = mutableListOf<String>()
val repo = MemberRepository({ if (++requests == 1) error("JNI request failed") else true }, { true }, { 0 },
{ _, message -> diagnostics.add(message) })
repo.onEvent(12, null); repo.onEvent(23, event("123", row(1)))
val before = repo.members.value
repo.refresh("123"); repo.refresh("123")
assertEquals(2, requests); assertEquals(before, repo.members.value)
assertTrue(diagnostics.any { "enqueue threw" in it })
}
@Test fun malformedDeletionCannotClearAnOtherwiseValidSnapshot() {
val repo = repository(); repo.onEvent(23, event("123", row(1)))
val before = repo.members.value
val header = byteArrayOf(3) + "123".toByteArray()
repo.onEvent(31, header + byteArrayOf(0))
assertEquals(before, repo.members.value)
repo.onEvent(31, header)
assertTrue(repo.members.value.isEmpty())
}
}