@@ -5,6 +5,7 @@ import coil3.ImageLoader
55import coil3.disk.DiskCache
66import coil3.memory.MemoryCache
77import com.synonym.paykit.FfiPaymentEntry
8+ import kotlinx.coroutines.flow.MutableStateFlow
89import kotlinx.coroutines.flow.flowOf
910import kotlinx.coroutines.runBlocking
1011import org.junit.Before
@@ -20,6 +21,8 @@ import org.mockito.kotlin.verifyBlocking
2021import org.mockito.kotlin.whenever
2122import to.bitkit.data.PubkyStore
2223import to.bitkit.data.PubkyStoreData
24+ import to.bitkit.data.SettingsData
25+ import to.bitkit.data.SettingsStore
2326import to.bitkit.data.keychain.Keychain
2427import to.bitkit.env.Env
2528import to.bitkit.models.PubkyProfile
@@ -51,10 +54,19 @@ class PubkyRepoTest : BaseUnitTest() {
5154 private val keychain = mock<Keychain >()
5255 private val imageLoader = mock<ImageLoader >()
5356 private val pubkyStore = mock<PubkyStore >()
57+ private val settingsStore = mock<SettingsStore >()
58+ private val settingsFlow = MutableStateFlow (SettingsData ())
5459
5560 @Before
5661 fun setUp () = runBlocking {
62+ settingsFlow.value = SettingsData ()
5763 whenever(pubkyStore.data).thenReturn(flowOf(PubkyStoreData ()))
64+ whenever(settingsStore.data).thenReturn(settingsFlow)
65+ whenever { settingsStore.update(any()) }.thenAnswer {
66+ val transform = it.getArgument< (SettingsData ) -> SettingsData > (0 )
67+ settingsFlow.value = transform(settingsFlow.value)
68+ Unit
69+ }
5870 sut = createSut()
5971 }
6072
@@ -64,6 +76,7 @@ class PubkyRepoTest : BaseUnitTest() {
6476 keychain = keychain,
6577 imageLoader = imageLoader,
6678 pubkyStore = pubkyStore,
79+ settingsStore = settingsStore,
6780 httpClient = mock(),
6881 )
6982
@@ -247,6 +260,27 @@ class PubkyRepoTest : BaseUnitTest() {
247260 verifyBlocking(pubkyStore) { reset() }
248261 }
249262
263+ @Test
264+ fun `signOut should clear public Paykit sharing settings` () = test {
265+ authenticateForTesting()
266+ settingsFlow.value = SettingsData (
267+ hasConfirmedPublicPaykitEndpoints = true ,
268+ sharesPublicPaykitEndpoints = true ,
269+ publicPaykitBolt11 = " lnbc1old" ,
270+ publicPaykitBolt11PaymentHash = " 010203" ,
271+ publicPaykitBolt11ExpiresAtMillis = 123L ,
272+ )
273+
274+ val result = sut.signOut()
275+
276+ assertTrue(result.isSuccess)
277+ assertFalse(settingsFlow.value.hasConfirmedPublicPaykitEndpoints)
278+ assertFalse(settingsFlow.value.sharesPublicPaykitEndpoints)
279+ assertEquals(" " , settingsFlow.value.publicPaykitBolt11)
280+ assertEquals(" " , settingsFlow.value.publicPaykitBolt11PaymentHash)
281+ assertEquals(0 , settingsFlow.value.publicPaykitBolt11ExpiresAtMillis)
282+ }
283+
250284 @Test
251285 fun `removeBitkitPaymentEndpoints removes only bitkit managed endpoints` () = test {
252286 authenticateForTesting(publicKey = VALID_SELF_KEY )
0 commit comments