package app

import (
	"testing"
)

// `/` as the first char of a chat line opens the command palette inline (opencode-style),
// without typing a literal slash.
func TestSlashOpensPaletteOnEmptyLine(t *testing.T) {
	m := NewModel(nil)
	m.editMode = ModeInsert
	m.inputMode = ModeRouter
	m.inputBuffer = ""

	next, _ := m.handleInsertKey(keyMsg{Type: keyRunes, Runes: []rune("/")})
	nm := next.(Model)

	if nm.overlay != OverlayPalette {
		t.Fatalf("'/' on an empty line should open the palette; overlay=%d", nm.overlay)
	}
	if nm.inputBuffer != "" {
		t.Fatalf("'/' should not be typed literally; buffer=%q", nm.inputBuffer)
	}
}

// Mid-line `/` is a literal slash (e.g. a path), not a command trigger.
func TestSlashLiteralMidLine(t *testing.T) {
	m := NewModel(nil)
	m.editMode = ModeInsert
	m.inputMode = ModeRouter
	m.inputBuffer = "path"
	m.inputCursor = len("path")

	next, _ := m.handleInsertKey(keyMsg{Type: keyRunes, Runes: []rune("/")})
	nm := next.(Model)

	if nm.overlay != OverlayNone {
		t.Fatalf("mid-line '/' must stay literal, not open the palette; overlay=%d", nm.overlay)
	}
	if nm.inputBuffer != "path/" {
		t.Fatalf("mid-line '/' should be typed; buffer=%q", nm.inputBuffer)
	}
}
