package storage import ( "os" "path/filepath" "testing" ) func TestStorage_ListFiles(t *testing.T) { tempDir, err := os.MkdirTemp("", "test-") if err != nil { t.Fatal(err) } defer os.RemoveAll(tempDir) store, err := NewStorage(tempDir) if err != nil { t.Fatal(err) } // Create test files files := []string{"file1.md", "file2.md", "file3.txt"} for _, name := range files { err = os.WriteFile(filepath.Join(tempDir, name), []byte("# Content"), 0644) if err != nil { t.Fatal(err) } } result, err := store.ListFiles() if err != nil { t.Fatal(err) } if len(result) != 2 { t.Errorf("Expected 2 .md files, got %d", len(result)) } // Verify only .md files are listed for _, name := range result { if !IsMarkdownFile(name) { t.Errorf("Non-markdown file found: %s", name) } } } func TestStorage_CreateFile(t *testing.T) { tempDir, err := os.MkdirTemp("", "test-") if err != nil { t.Fatal(err) } defer os.RemoveAll(tempDir) store, err := NewStorage(tempDir) if err != nil { t.Fatal(err) } err = store.CreateFile("test.md", "# Test Content") if err != nil { t.Fatal(err) } content, err := os.ReadFile(filepath.Join(tempDir, "test.md")) if err != nil { t.Fatal(err) } if string(content) != "# Test Content" { t.Errorf("Expected '# Test Content', got '%s'", string(content)) } } func TestStorage_UpdateFile(t *testing.T) { tempDir, err := os.MkdirTemp("", "test-") if err != nil { t.Fatal(err) } defer os.RemoveAll(tempDir) store, err := NewStorage(tempDir) if err != nil { t.Fatal(err) } // Create file err = store.CreateFile("test.md", "# Original Content") if err != nil { t.Fatal(err) } // Update file err = store.UpdateFile("test.md", "# Updated Content") if err != nil { t.Fatal(err) } content, err := os.ReadFile(filepath.Join(tempDir, "test.md")) if err != nil { t.Fatal(err) } if string(content) != "# Updated Content" { t.Errorf("Expected '# Updated Content', got '%s'", string(content)) } } func TestStorage_DeleteFile(t *testing.T) { tempDir, err := os.MkdirTemp("", "test-") if err != nil { t.Fatal(err) } defer os.RemoveAll(tempDir) store, err := NewStorage(tempDir) if err != nil { t.Fatal(err) } // Create file err = store.CreateFile("test.md", "# Test Content") if err != nil { t.Fatal(err) } // Delete file err = store.DeleteFile("test.md") if err != nil { t.Fatal(err) } _, err = os.Stat(filepath.Join(tempDir, "test.md")) if !os.IsNotExist(err) { t.Error("File was not deleted") } } func TestStorage_GetFile(t *testing.T) { tempDir, err := os.MkdirTemp("", "test-") if err != nil { t.Fatal(err) } defer os.RemoveAll(tempDir) store, err := NewStorage(tempDir) if err != nil { t.Fatal(err) } // Create file err = store.CreateFile("test.md", "# Test Content") if err != nil { t.Fatal(err) } file, err := store.GetFile("test.md") if err != nil { t.Fatal(err) } if file.Content != "# Test Content" { t.Errorf("Expected '# Test Content', got '%s'", file.Content) } } func IsMarkdownFile(filename string) bool { return filepath.Ext(filename) == ".md" }