test: cover renderer state helpers

This commit is contained in:
Misaka
2026-03-21 19:45:19 +08:00
parent 86614efa22
commit c09e0eb4e7
4 changed files with 141 additions and 6 deletions

View File

@@ -1,21 +1,33 @@
import { useEffect } from 'react'
function parseProductionIds(input: string): string[] {
interface ValidationSyncApi {
clearSharedProductionIds: () => Promise<unknown>
setSharedProductionIds: (ids: string[]) => Promise<unknown>
}
export function parseProductionIds(input: string): string[] {
return input
.split('\n')
.map((line) => line.trim())
.filter((line) => line.length > 0)
}
async function syncSharedProductionIds(input: string): Promise<void> {
export async function syncSharedProductionIdsWithApi(
input: string,
validationApi: ValidationSyncApi
): Promise<void> {
const productionIds = parseProductionIds(input)
if (productionIds.length === 0) {
await window.electron.validation.clearSharedProductionIds()
await validationApi.clearSharedProductionIds()
return
}
await window.electron.validation.setSharedProductionIds(productionIds)
await validationApi.setSharedProductionIds(productionIds)
}
async function syncSharedProductionIds(input: string): Promise<void> {
await syncSharedProductionIdsWithApi(input, window.electron.validation)
}
export function useSharedProductionIds(orderNumbers: string, debounceMs = 300) {

View File

@@ -1,11 +1,13 @@
import { startTransition, useEffect, useRef, useState } from 'react'
import type { UpdateDialogCatalog, UpdateRelease } from '../../../main/types/update.types'
function releaseKey(release: UpdateRelease): string {
export function releaseKey(release: UpdateRelease): string {
return `${release.channel}:${release.version}`
}
function getInitialSelectedRelease(catalog: UpdateDialogCatalog | null): UpdateRelease | undefined {
export function getInitialSelectedRelease(
catalog: UpdateDialogCatalog | null
): UpdateRelease | undefined {
if (!catalog || catalog.mode === 'disabled') {
return undefined
}