test(editor): ensure model ability to support images is checked on paste

tauraamui created

Change summary

internal/tui/components/chat/editor/editor_test.go | 42 ++++++++++++++++
1 file changed, 42 insertions(+)

Detailed changes

internal/tui/components/chat/editor/editor_test.go 🔗

@@ -398,6 +398,48 @@ func TestEditor_OnPastePathToNonImageEmitsAttachFileMessage(t *testing.T) {
 	assert.Nil(t, cmd)
 }
 
+func TestEditor_OnPastePathToNonImageEmitsWanrningMessageWhenModelDoesNotSupportImages(t *testing.T) {
+	entriesForAutoComplete := mockDirLister([]string{"image.png", "random.txt"})
+
+	// Create a temporary directory and files for testing
+	tempDir := t.TempDir()
+
+	// Create test image file
+	imagePath := filepath.Join(tempDir, "image.png")
+	err := os.WriteFile(imagePath, pngMagicNumberData, 0o644)
+	require.NoError(t, err)
+
+	// Create test text file
+	textPath := filepath.Join(tempDir, "random.txt")
+	err = os.WriteFile(textPath, []byte("Some content"), 0o644)
+	require.NoError(t, err)
+
+	testEditor := newEditor(&app.App{}, entriesForAutoComplete)
+
+	// Change to temp directory so paths resolve correctly
+	originalWd, err := os.Getwd()
+	require.NoError(t, err)
+	defer os.Chdir(originalWd)
+	err = os.Chdir(tempDir)
+	require.NoError(t, err)
+
+	modelDoesNotHaveImageSupport := func() (bool, string) {
+		return false, "ImagesUnsupportedTestModel"
+	}
+	_, cmd := onPaste(filepath.Abs, modelDoesNotHaveImageSupport, testEditor, tea.PasteMsg("image.png"))
+
+	require.NotNil(t, cmd)
+	msg := cmd()
+	require.NotNil(t, msg)
+
+	warningMsg, ok := msg.(util.InfoMsg)
+	require.True(t, ok)
+	assert.Equal(t, util.InfoMsg{
+		Type: util.InfoTypeWarn,
+		Msg:  "File attachments are not supported by the current model: ImagesUnsupportedTestModel",
+	}, warningMsg)
+}
+
 // TestHelperFunctions demonstrates how to use the batch message helpers
 func TestHelperFunctions(t *testing.T) {
 	testEditor := newEditor(&app.App{}, mockDirLister([]string{"file1.txt", "file2.txt"}))