Show each LoRA dropdown label once
This commit is contained in:
@@ -97,7 +97,8 @@
|
||||
v-for="name in availableNames"
|
||||
:key="name"
|
||||
:value="name"
|
||||
>{{ labelFor(name) }}{{ filenameSubtitle ? ' — '+name : '' }}</option>
|
||||
:title="name"
|
||||
>{{ labelFor(name) }}</option>
|
||||
</select>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
import test from 'node:test'
|
||||
import assert from 'node:assert/strict'
|
||||
import {readFileSync} from 'node:fs'
|
||||
import * as Vue from 'vue'
|
||||
import {compile} from '@vue/compiler-dom'
|
||||
import {renderToString} from '@vue/server-renderer'
|
||||
import {loraFriendlyName,loraIdentityKey} from '../utils/loras.ts'
|
||||
|
||||
test('LoRA dropdown renders one clean label or alias, with filename only in tooltip',async()=>{
|
||||
const source=readFileSync(new URL('../components/LoraSelect.vue',import.meta.url),'utf8')
|
||||
const option=source.match(/<option\s+v-for="name in availableNames"[\s\S]*?<\/option>/)[0]
|
||||
const render=new Function('Vue',compile('<select>'+option+'</select>',{mode:'function',prefixIdentifiers:true}).code)(Vue)
|
||||
const names=['xaigen-minimax csot.safetensors','folder/XAIgen-klein-portrait.safetensors']
|
||||
const aliases={[loraIdentityKey(names[1])]:'Portrait style'}
|
||||
const html=await renderToString(Vue.createSSRApp({render,setup:()=>({availableNames:names,filenameSubtitle:true,labelFor:name=>loraFriendlyName(name,aliases)})}))
|
||||
const options=[...html.matchAll(/<option[^>]*title="([^"]*)"[^>]*>([^<]*)<\/option>/g)]
|
||||
assert.deepEqual(options.map(match=>match[1]),names)
|
||||
assert.deepEqual(options.map(match=>match[2]),['xaigen-minimax csot','Portrait style'])
|
||||
})
|
||||
Reference in New Issue
Block a user