Loading core/android/common/src/main/kotlin/app/k9mail/core/android/common/contact/ContactKoinModule.kt +1 −1 Original line number Diff line number Diff line Loading @@ -8,7 +8,7 @@ import org.koin.core.qualifier.named import org.koin.dsl.module internal val contactModule = module { single<Cache<EmailAddress, Contact>>(named(CACHE_NAME)) { single<Cache<EmailAddress, Contact?>>(named(CACHE_NAME)) { SynchronizedCache( delegateCache = ExpiringCache(clock = get()), ) Loading core/android/common/src/main/kotlin/app/k9mail/core/android/common/contact/ContactRepository.kt +7 −7 Original line number Diff line number Diff line Loading @@ -17,7 +17,7 @@ interface CachingRepository { } internal class CachingContactRepository( private val cache: Cache<EmailAddress, Contact>, private val cache: Cache<EmailAddress, Contact?>, private val dataSource: ContactDataSource, ) : ContactRepository, CachingRepository { Loading @@ -26,16 +26,16 @@ internal class CachingContactRepository( return cache[emailAddress] } val contact = dataSource.getContactFor(emailAddress) if (contact != null) { cache[emailAddress] = contact return dataSource.getContactFor(emailAddress).also { cache[emailAddress] = it } return contact } override fun hasContactFor(emailAddress: EmailAddress): Boolean { if (cache.hasKey(emailAddress)) { return cache[emailAddress] != null } return dataSource.hasContactFor(emailAddress) } Loading core/android/common/src/test/kotlin/app/k9mail/core/android/common/CoreCommonAndroidModuleTest.kt→core/android/common/src/test/kotlin/app/k9mail/core/android/common/CoreCommonAndroidModuleKtTest.kt +1 −1 Original line number Diff line number Diff line Loading @@ -9,7 +9,7 @@ import org.robolectric.RobolectricTestRunner import org.robolectric.RuntimeEnvironment @RunWith(RobolectricTestRunner::class) internal class CoreCommonAndroidModuleTest { internal class CoreCommonAndroidModuleKtTest { @Test fun `should have a valid di module`() { Loading core/android/common/src/test/kotlin/app/k9mail/core/android/common/contact/CachingContactRepositoryTest.kt +25 −1 Original line number Diff line number Diff line Loading @@ -20,7 +20,7 @@ import org.robolectric.RobolectricTestRunner internal class CachingContactRepositoryTest { private val dataSource = mock<ContactDataSource>() private val cache = InMemoryCache<EmailAddress, Contact>() private val cache = InMemoryCache<EmailAddress, Contact?>() private val testSubject = CachingContactRepository(cache = cache, dataSource = dataSource) Loading Loading @@ -60,6 +60,21 @@ internal class CachingContactRepositoryTest { assertThat(result1).isEqualTo(result2) } @Test fun `getContactFor() caches null`() { dataSource.stub { on { getContactFor(CONTACT_EMAIL_ADDRESS) } doReturnConsecutively listOf( null, CONTACT, ) } val result1 = testSubject.getContactFor(CONTACT_EMAIL_ADDRESS) val result2 = testSubject.getContactFor(CONTACT_EMAIL_ADDRESS) assertThat(result1).isEqualTo(result2) } @Test fun `getContactFor() returns cached contact`() { cache[CONTACT_EMAIL_ADDRESS] = CONTACT Loading @@ -76,6 +91,15 @@ internal class CachingContactRepositoryTest { assertThat(result).isFalse() } @Test fun `hasContactFor() returns false if cached contact is null`() { cache[CONTACT_EMAIL_ADDRESS] = null val result = testSubject.hasContactFor(CONTACT_EMAIL_ADDRESS) assertThat(result).isFalse() } @Test fun `hasContactFor() returns true if contact exists`() { dataSource.stub { on { hasContactFor(CONTACT_EMAIL_ADDRESS) } doReturn true } Loading core/android/common/src/test/kotlin/app/k9mail/core/android/common/contact/ContactKoinModuleTest.kt→core/android/common/src/test/kotlin/app/k9mail/core/android/common/contact/ContactKoinModuleKtTest.kt +1 −1 Original line number Diff line number Diff line Loading @@ -10,7 +10,7 @@ import org.robolectric.RobolectricTestRunner import org.robolectric.RuntimeEnvironment @RunWith(RobolectricTestRunner::class) internal class ContactKoinModuleTest { internal class ContactKoinModuleKtTest { @Test fun `should have a valid di module`() { koinApplication { Loading Loading
core/android/common/src/main/kotlin/app/k9mail/core/android/common/contact/ContactKoinModule.kt +1 −1 Original line number Diff line number Diff line Loading @@ -8,7 +8,7 @@ import org.koin.core.qualifier.named import org.koin.dsl.module internal val contactModule = module { single<Cache<EmailAddress, Contact>>(named(CACHE_NAME)) { single<Cache<EmailAddress, Contact?>>(named(CACHE_NAME)) { SynchronizedCache( delegateCache = ExpiringCache(clock = get()), ) Loading
core/android/common/src/main/kotlin/app/k9mail/core/android/common/contact/ContactRepository.kt +7 −7 Original line number Diff line number Diff line Loading @@ -17,7 +17,7 @@ interface CachingRepository { } internal class CachingContactRepository( private val cache: Cache<EmailAddress, Contact>, private val cache: Cache<EmailAddress, Contact?>, private val dataSource: ContactDataSource, ) : ContactRepository, CachingRepository { Loading @@ -26,16 +26,16 @@ internal class CachingContactRepository( return cache[emailAddress] } val contact = dataSource.getContactFor(emailAddress) if (contact != null) { cache[emailAddress] = contact return dataSource.getContactFor(emailAddress).also { cache[emailAddress] = it } return contact } override fun hasContactFor(emailAddress: EmailAddress): Boolean { if (cache.hasKey(emailAddress)) { return cache[emailAddress] != null } return dataSource.hasContactFor(emailAddress) } Loading
core/android/common/src/test/kotlin/app/k9mail/core/android/common/CoreCommonAndroidModuleTest.kt→core/android/common/src/test/kotlin/app/k9mail/core/android/common/CoreCommonAndroidModuleKtTest.kt +1 −1 Original line number Diff line number Diff line Loading @@ -9,7 +9,7 @@ import org.robolectric.RobolectricTestRunner import org.robolectric.RuntimeEnvironment @RunWith(RobolectricTestRunner::class) internal class CoreCommonAndroidModuleTest { internal class CoreCommonAndroidModuleKtTest { @Test fun `should have a valid di module`() { Loading
core/android/common/src/test/kotlin/app/k9mail/core/android/common/contact/CachingContactRepositoryTest.kt +25 −1 Original line number Diff line number Diff line Loading @@ -20,7 +20,7 @@ import org.robolectric.RobolectricTestRunner internal class CachingContactRepositoryTest { private val dataSource = mock<ContactDataSource>() private val cache = InMemoryCache<EmailAddress, Contact>() private val cache = InMemoryCache<EmailAddress, Contact?>() private val testSubject = CachingContactRepository(cache = cache, dataSource = dataSource) Loading Loading @@ -60,6 +60,21 @@ internal class CachingContactRepositoryTest { assertThat(result1).isEqualTo(result2) } @Test fun `getContactFor() caches null`() { dataSource.stub { on { getContactFor(CONTACT_EMAIL_ADDRESS) } doReturnConsecutively listOf( null, CONTACT, ) } val result1 = testSubject.getContactFor(CONTACT_EMAIL_ADDRESS) val result2 = testSubject.getContactFor(CONTACT_EMAIL_ADDRESS) assertThat(result1).isEqualTo(result2) } @Test fun `getContactFor() returns cached contact`() { cache[CONTACT_EMAIL_ADDRESS] = CONTACT Loading @@ -76,6 +91,15 @@ internal class CachingContactRepositoryTest { assertThat(result).isFalse() } @Test fun `hasContactFor() returns false if cached contact is null`() { cache[CONTACT_EMAIL_ADDRESS] = null val result = testSubject.hasContactFor(CONTACT_EMAIL_ADDRESS) assertThat(result).isFalse() } @Test fun `hasContactFor() returns true if contact exists`() { dataSource.stub { on { hasContactFor(CONTACT_EMAIL_ADDRESS) } doReturn true } Loading
core/android/common/src/test/kotlin/app/k9mail/core/android/common/contact/ContactKoinModuleTest.kt→core/android/common/src/test/kotlin/app/k9mail/core/android/common/contact/ContactKoinModuleKtTest.kt +1 −1 Original line number Diff line number Diff line Loading @@ -10,7 +10,7 @@ import org.robolectric.RobolectricTestRunner import org.robolectric.RuntimeEnvironment @RunWith(RobolectricTestRunner::class) internal class ContactKoinModuleTest { internal class ContactKoinModuleKtTest { @Test fun `should have a valid di module`() { koinApplication { Loading