app

Local-first trade for farms and co-ops
git clone https://radroots.dev/git/app.git
Log | Files | Refs | README | LICENSE

commit d119993059159885d75b6c49417533c8bda03a1e
parent d79070cf10ef3c99d0728475d76b82f4d9c7dbbc
Author: triesap <tyson@radroots.org>
Date:   Sat,  1 Aug 2026 18:25:30 +0000

test: centralize synthetic account fixtures

- define reusable accounts under the test source boundary
- reserve example domains for deterministic account data
- provide valid selected state construction for later suites
- remove duplicated model fixture construction

Diffstat:
Aapp/desktop/src/test/kotlin/org/radroots/studio/accounts/TestAccounts.kt | 26++++++++++++++++++++++++++
Mapp/desktop/src/test/kotlin/org/radroots/studio/accounts/model/AccountsStateTest.kt | 26++++++++++----------------
2 files changed, 36 insertions(+), 16 deletions(-)

diff --git a/app/desktop/src/test/kotlin/org/radroots/studio/accounts/TestAccounts.kt b/app/desktop/src/test/kotlin/org/radroots/studio/accounts/TestAccounts.kt @@ -0,0 +1,26 @@ +package org.radroots.studio.accounts + +import org.radroots.studio.accounts.model.Account +import org.radroots.studio.accounts.model.AccountId +import org.radroots.studio.accounts.model.AccountsState +import org.radroots.studio.accounts.model.LoginStatus + +internal fun testAccount( + id: String = "account-1", + displayName: String = "Farm Account", + serverUrl: String = "https://farm.example.test", + loginStatus: LoginStatus = LoginStatus.LoggedOut, +) = Account( + id = AccountId(id), + displayName = displayName, + serverUrl = serverUrl, + loginStatus = loginStatus, +) + +internal fun testAccountsState( + vararg accounts: Account, + selectedAccountId: AccountId? = accounts.firstOrNull()?.id, +) = AccountsState( + accounts = accounts.toList(), + selectedAccountId = selectedAccountId, +) diff --git a/app/desktop/src/test/kotlin/org/radroots/studio/accounts/model/AccountsStateTest.kt b/app/desktop/src/test/kotlin/org/radroots/studio/accounts/model/AccountsStateTest.kt @@ -4,6 +4,7 @@ import kotlin.test.Test import kotlin.test.assertEquals import kotlin.test.assertFailsWith import kotlin.test.assertNull +import org.radroots.studio.accounts.testAccount class AccountsStateTest { @Test @@ -34,7 +35,7 @@ class AccountsStateTest { @Test fun validStatePassesInvariantValidation() { - val account = validAccount() + val account = testAccount() assertEquals( AccountsState( @@ -76,7 +77,7 @@ class AccountsStateTest { @Test fun duplicateIdsAreRejected() { - val account = validAccount() + val account = testAccount() assertFailsWith<IllegalArgumentException> { AccountsState( @@ -88,7 +89,7 @@ class AccountsStateTest { @Test fun danglingSelectionAndRemovalTargetsAreRejected() { - val account = validAccount() + val account = testAccount() val missingId = AccountId("missing") listOf( @@ -110,19 +111,12 @@ class AccountsStateTest { } } - private fun validAccount() = Account( - id = AccountId("account-1"), - displayName = "Farm Account", - serverUrl = "https://farm.example.test", - loginStatus = LoginStatus.LoggedOut, - ) - private fun invalidAccounts() = listOf( - validAccount().copy(id = AccountId("")), - validAccount().copy(id = AccountId(" account-1")), - validAccount().copy(displayName = ""), - validAccount().copy(displayName = " Farm Account"), - validAccount().copy(serverUrl = "ftp://farm.example.test"), - validAccount().copy(serverUrl = "HTTPS://FARM.EXAMPLE.TEST"), + testAccount().copy(id = AccountId("")), + testAccount().copy(id = AccountId(" account-1")), + testAccount().copy(displayName = ""), + testAccount().copy(displayName = " Farm Account"), + testAccount().copy(serverUrl = "ftp://farm.example.test"), + testAccount().copy(serverUrl = "HTTPS://FARM.EXAMPLE.TEST"), ) }