cfd8359d1612
test: Cover Quick Settings tile copy target (v2.3.52)
- time
- 2026-06-26 14:21 UTC · 4 months ago
- machine
- koh2
- parent
- 629eb924b636
↓ peach-android-cfd8359d.tar.gzatlas at this save
files changed3 files
app/build.gradle+2 −2app/src/main/java/com/peachpasswords/qs/PeachTileService.kt+7 −3app/src/test/java/com/peachpasswords/qs/PeachTileServiceTest.kt+35 −0app/build.gradle+2 −2
@@ -16,8 +16,8 @@1616 applicationId "com.peachpasswords"1717 minSdk 261818 targetSdk 3519- versionCode 23510020- versionName "2.3.51"19+ versionCode 23520020+ versionName "2.3.52"2121 2222 testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"2323 vectorDrawables {app/src/main/java/com/peachpasswords/qs/PeachTileService.kt+7 −3
@@ -9,6 +9,7 @@99 import android.widget.Toast1010 import com.peachpasswords.MainActivity1111 import com.peachpasswords.R12+import com.peachpasswords.vault.VaultEntry1213 import com.peachpasswords.vault.VaultRepository1314 import dagger.hilt.android.AndroidEntryPoint1415 import javax.inject.Inject@@ -32,9 +33,7 @@3233 override fun onClick() {3334 super.onClick()3435 if (vault.isUnlocked.value) {35- val recent = vault.entries.value36- .filter { !it.password.isNullOrEmpty() }37- .maxByOrNull { it.lastUsedAt ?: it.modifiedAt }36+ val recent = mostRecentPasswordEntry(vault.entries.value)3837 if (recent?.password != null) {3938 copyToClipboard(recent.title, recent.password!!)4039 Toast.makeText(this, "Copied ${recent.title} password", Toast.LENGTH_SHORT).show()@@ -80,3 +79,8 @@8079 tile.updateTile()8180 }8281 }82+83+internal fun mostRecentPasswordEntry(entries: List<VaultEntry>): VaultEntry? =84+ entries85+ .filter { !it.password.isNullOrEmpty() }86+ .maxByOrNull { it.lastUsedAt ?: it.modifiedAt }app/src/test/java/com/peachpasswords/qs/PeachTileServiceTest.kt+35 −0
@@ -0,0 +1,35 @@1+package com.peachpasswords.qs2+3+import com.peachpasswords.vault.VaultEntry4+import org.junit.Assert.assertEquals5+import org.junit.Assert.assertNull6+import org.junit.Test7+8+class PeachTileServiceTest {9+ @Test fun tile_copies_most_recent_password_entry() {10+ val old = entry("old", password = "old-pw", modifiedAt = 10L, lastUsedAt = 20L)11+ val newest = entry("new", password = "new-pw", modifiedAt = 100L, lastUsedAt = null)12+ val used = entry("used", password = "used-pw", modifiedAt = 5L, lastUsedAt = 200L)13+ val noPassword = entry("note", password = null, modifiedAt = 1_000L, lastUsedAt = 1_000L)14+15+ assertEquals(used, mostRecentPasswordEntry(listOf(old, newest, used, noPassword)))16+ }17+18+ @Test fun tile_has_no_copy_target_without_password_entries() {19+ assertNull(mostRecentPasswordEntry(listOf(entry("note", password = null, modifiedAt = 1L))))20+ }21+22+ private fun entry(23+ id: String,24+ password: String?,25+ modifiedAt: Long,26+ lastUsedAt: Long? = null,27+ ) = VaultEntry(28+ id = id,29+ title = id,30+ password = password,31+ createdAt = 1L,32+ modifiedAt = modifiedAt,33+ lastUsedAt = lastUsedAt,34+ )35+}