github.com/GGP1/kure@v0.8.4/commands/file/edit/edit_test.go (about) 1 package edit 2 3 import ( 4 "os" 5 "testing" 6 "time" 7 8 cmdutil "github.com/GGP1/kure/commands" 9 "github.com/GGP1/kure/db/file" 10 "github.com/GGP1/kure/pb" 11 12 "github.com/stretchr/testify/assert" 13 ) 14 15 func TestEditErrors(t *testing.T) { 16 db := cmdutil.SetContext(t) 17 18 err := file.Create(db, &pb.File{Name: "test"}) 19 assert.NoError(t, err, "Failed creating file") 20 21 cases := []struct { 22 desc string 23 name string 24 editor string 25 create bool 26 }{ 27 { 28 desc: "Invalid name", 29 name: "", 30 }, 31 { 32 desc: "Non installed text editor", 33 name: "test", 34 editor: "non-installed-text-editor", 35 }, 36 { 37 desc: "Non-existent entry", 38 name: "non-existent", 39 editor: "nano", 40 }, 41 } 42 43 for _, tc := range cases { 44 t.Run(tc.desc, func(t *testing.T) { 45 cmd := NewCmd(db) 46 cmd.SetArgs([]string{tc.name}) 47 cmd.Flags().Set("editor", tc.editor) 48 49 err := cmd.Execute() 50 assert.Error(t, err) 51 }) 52 } 53 } 54 55 func TestCreateTempFile(t *testing.T) { 56 expected := []byte("content") 57 58 filename, err := createTempFile(".txt", expected) 59 assert.NoError(t, err, "Failed creating the file") 60 61 got, err := os.ReadFile(filename) 62 assert.NoError(t, err, "Failed reading temporary file") 63 64 assert.Equal(t, expected, got) 65 } 66 67 func TestWatchFile(t *testing.T) { 68 f, err := os.CreateTemp("", "*") 69 assert.NoError(t, err) 70 defer f.Close() 71 72 go func(f *os.File) { 73 // Sleep to wait for the file to be watched 74 time.Sleep(50 * time.Millisecond) 75 _, err := f.Write([]byte("anything")) 76 assert.NoError(t, err) 77 }(f) 78 79 err = watchFile(f.Name()) 80 assert.NoError(t, err) 81 } 82 83 func TestUpdate(t *testing.T) { 84 db := cmdutil.SetContext(t) 85 86 expectedContent := []byte("test") 87 name := "test_read_and_update.txt" 88 f := &pb.File{ 89 Name: name, 90 Content: expectedContent, 91 } 92 93 err := update(db, f, "../testdata/test_read&update.txt") 94 assert.NoError(t, err, "Updating record") 95 96 got, err := file.Get(db, name) 97 assert.NoError(t, err, "The file wasn't created") 98 99 assert.Equal(t, expectedContent, got.Content) 100 } 101 102 func TestPostRun(t *testing.T) { 103 NewCmd(nil).PostRun(nil, nil) 104 }