import { describe, it, expect } from 'vitest' import { mount } from '@vue/test-utils' import ToolSelector from '../ToolSelector.vue' describe('ToolSelector', () => { it('renders four tool buttons', () => { const wrapper = mount(ToolSelector) expect(wrapper.findAll('button').length).toBe(4) }) it('emits tool-config immediately with chafa as default', () => { const wrapper = mount(ToolSelector) const emitted = wrapper.emitted('tool-config') expect(emitted).toBeTruthy() expect(emitted[0][0].tool).toBe('chafa') }) it('strips empty and false flag values before emitting', () => { const wrapper = mount(ToolSelector) const flags = wrapper.emitted('tool-config')[0][0].flags const hasEmpty = Object.values(flags).some((v) => v === '' || v === false) expect(hasEmpty).toBe(false) }) it('switches active tool and emits updated tool-config', async () => { const wrapper = mount(ToolSelector) const buttons = wrapper.findAll('button') await buttons[1].trigger('click') // jp2a const emitted = wrapper.emitted('tool-config') const latest = emitted[emitted.length - 1][0] expect(latest.tool).toBe('jp2a') }) it('preserves flags for a tool when switching away and back', async () => { const wrapper = mount(ToolSelector) const [chafaBtn, jp2aBtn] = wrapper.findAll('button') // Set width on chafa via ChafaOptions input const widthInput = wrapper.find('input[type="number"]') await widthInput.setValue('120') // Switch to jp2a and back await jp2aBtn.trigger('click') await chafaBtn.trigger('click') const emitted = wrapper.emitted('tool-config') const latest = emitted[emitted.length - 1][0] expect(latest.flags.width).toBe('120') }) })