@@ -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)
@@ -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)