That fuck shit the fascists are using
1package org.tm.archive.testing
2
3import org.junit.rules.TestWatcher
4import org.junit.runner.Description
5import org.signal.core.util.deleteAll
6import org.tm.archive.database.SignalDatabase
7import org.tm.archive.database.ThreadTable
8import org.tm.archive.keyvalue.SignalStore
9import org.whispersystems.signalservice.api.push.ServiceId.ACI
10import org.whispersystems.signalservice.api.push.ServiceId.PNI
11import java.util.UUID
12
13/**
14 * Sets up bare-minimum to allow writing unit tests against the database,
15 * including setting up the local ACI and PNI pair.
16 *
17 * @param deleteAllThreadsOnEachRun Run deleteAllThreads between each unit test
18 */
19class SignalDatabaseRule(
20 private val deleteAllThreadsOnEachRun: Boolean = true
21) : TestWatcher() {
22
23 val localAci: ACI = ACI.from(UUID.randomUUID())
24 val localPni: PNI = PNI.from(UUID.randomUUID())
25
26 override fun starting(description: Description?) {
27 deleteAllThreads()
28
29 SignalStore.account().setAci(localAci)
30 SignalStore.account().setPni(localPni)
31 }
32
33 override fun finished(description: Description?) {
34 deleteAllThreads()
35 }
36
37 private fun deleteAllThreads() {
38 if (deleteAllThreadsOnEachRun) {
39 SignalDatabase.threads.deleteAllConversations()
40 SignalDatabase.rawDatabase.deleteAll(ThreadTable.TABLE_NAME)
41 }
42 }
43}