Skip to content

Commit 7b81bf1

Browse files
committed
Delete dict file on dictionary delete
1 parent d8c70ba commit 7b81bf1

2 files changed

Lines changed: 40 additions & 4 deletions

File tree

internal/spellchecker/registry.go

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,11 @@ func (r *Registry) Delete(code string) error {
103103
return ErrNotFound
104104
}
105105

106+
err := os.Remove(fullPath(r.dir, code))
107+
if err != nil && !os.IsNotExist(err) {
108+
return err
109+
}
110+
106111
delete(r.items, code)
107112

108113
return nil
@@ -122,7 +127,7 @@ func (r *Registry) Save(code string) error {
122127
return err
123128
}
124129

125-
err = os.WriteFile(path.Join(r.dir, code+extension), data, 0644)
130+
err = os.WriteFile(path.Join(r.dir, fileName(code)), data, 0644)
126131
if err != nil {
127132
return err
128133
}
@@ -151,3 +156,11 @@ func findDictionaries(dir string) ([]fs.DirEntry, error) {
151156

152157
return result, nil
153158
}
159+
160+
func fileName(code string) string {
161+
return code + extension
162+
}
163+
164+
func fullPath(dir string, code string) string {
165+
return path.Join(dir, fileName(code))
166+
}

internal/spellchecker/registry_test.go

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ func Test_NewRegistry(t *testing.T) {
2727
data, err := json.Marshal(&item)
2828
require.NoError(t, err)
2929

30-
err = os.WriteFile(path.Join(dir, name+extension), data, 0755)
30+
err = os.WriteFile(path.Join(dir, fileName(name)), data, 0755)
3131
require.NoError(t, err)
3232
}
3333

@@ -85,7 +85,7 @@ func Test_NewRegistry(t *testing.T) {
8585

8686
createTestFile(t, dir, "code1")
8787

88-
err := os.WriteFile(path.Join(dir, "code2"+extension), []byte("qweqwe"), 0755)
88+
err := os.WriteFile(path.Join(dir, fileName("code2")), []byte("qweqwe"), 0755)
8989
require.NoError(t, err)
9090

9191
result, err := NewRegistry(context.Background(), dir)
@@ -193,6 +193,29 @@ func Test_Registry_Delete(t *testing.T) {
193193

194194
require.NotContains(t, r.items, code)
195195
})
196+
197+
t.Run("success, delete file", func(t *testing.T) {
198+
t.Parallel()
199+
200+
dir := t.TempDir()
201+
code := "code"
202+
203+
r, err := NewRegistry(context.Background(), dir)
204+
require.NoError(t, err)
205+
206+
_, err = r.Add(code, Options{Alphabet: "abc"})
207+
require.NoError(t, err)
208+
209+
err = r.Save(code)
210+
require.NoError(t, err)
211+
require.FileExists(t, path.Join(dir, fileName(code)))
212+
213+
err = r.Delete(code)
214+
require.NoError(t, err)
215+
require.NoFileExists(t, path.Join(dir, fileName(code)))
216+
217+
require.NotContains(t, r.items, code)
218+
})
196219
}
197220

198221
func Test_Registry_Save(t *testing.T) {
@@ -225,7 +248,7 @@ func Test_Registry_Save(t *testing.T) {
225248

226249
err = r.Save(code)
227250
require.NoError(t, err)
228-
require.FileExists(t, path.Join(dir, code+extension))
251+
require.FileExists(t, path.Join(dir, fileName(code)))
229252

230253
r2, err := NewRegistry(context.Background(), dir)
231254
require.NoError(t, err)

0 commit comments

Comments
 (0)