diff --git a/internal/tui/components/dialogs/filepicker/filepicker.go b/internal/tui/components/dialogs/filepicker/filepicker.go index 83ee989018ee877171d50c7c148a5ee19b689b64..9da2922b1712671e4f9b1a3c497d1b2c9b83299e 100644 --- a/internal/tui/components/dialogs/filepicker/filepicker.go +++ b/internal/tui/components/dialogs/filepicker/filepicker.go @@ -130,7 +130,7 @@ func (m *model) Update(msg tea.Msg) (tea.Model, tea.Cmd) { // Get the path of the selected file. return m, tea.Sequence( util.CmdHandler(dialogs.CloseDialogMsg{}), - onPaste(resolveFS(filepath.Dir(path)), path), + onPaste(resolveFS, path), ) } m.image, cmd = m.image.Update(msg) @@ -142,7 +142,8 @@ func resolveFS(baseDirPath string) fs.FS { return os.DirFS(baseDirPath) } -func onPaste(fsys fs.FS, path string) func() tea.Msg { +func onPaste(resolveFsys func(path string) fs.FS, path string) func() tea.Msg { + fsys := resolveFsys(filepath.Dir(path)) name := filepath.Base(path) return func() tea.Msg { isFileLarge, err := IsFileTooBigWithFS(fsys, name, MaxAttachmentSize) diff --git a/internal/tui/components/dialogs/filepicker/filepicker_test.go b/internal/tui/components/dialogs/filepicker/filepicker_test.go index dca652c854754f8625f558e5e38a234519afd2b3..fe9d63d588b147e294f7b04db980d68020d4a9f7 100644 --- a/internal/tui/components/dialogs/filepicker/filepicker_test.go +++ b/internal/tui/components/dialogs/filepicker/filepicker_test.go @@ -1,6 +1,7 @@ package filepicker import ( + "io/fs" "testing" "testing/fstest" @@ -11,19 +12,24 @@ import ( var pngMagicNumberData = []byte("\x89PNG\x0D\x0A\x1A\x0A") func TestOnPasteMockFSWithValidPath(t *testing.T) { - mockFS := fstest.MapFS{ - "image1.png": &fstest.MapFile{ - Data: pngMagicNumberData, - }, - "image2.png": &fstest.MapFile{ - Data: []byte("fake png content"), - }, + var mockedFSPath string + resolveTestFS := func(fsysPath string) fs.FS { + mockedFSPath = fsysPath + return fstest.MapFS{ + "image1.png": &fstest.MapFile{ + Data: pngMagicNumberData, + }, + "image2.png": &fstest.MapFile{ + Data: []byte("fake png content"), + }, + } } // Test with the first file - cmd := onPaste(mockFS, "image1.png") + cmd := onPaste(resolveTestFS, "/home/testuser/images/image1.png") msg := cmd() + assert.Equal(t, "/home/testuser/images", mockedFSPath) filePickedMsg, ok := msg.(FilePickedMsg) require.True(t, ok) require.NotNil(t, filePickedMsg)