weiro/providers/sitereader/provider_test.go

108 lines
2.3 KiB
Go
Raw Normal View History

2026-02-18 11:07:18 +00:00
package sitereader_test
import (
"testing"
"testing/fstest"
"time"
"github.com/stretchr/testify/assert"
"lmika.dev/lmika/weiro/models"
"lmika.dev/lmika/weiro/providers/sitereader"
)
func TestProvider_ReadPost(t *testing.T) {
t.Run("with meta", func(t *testing.T) {
testFS := fstest.MapFS{
"site.yaml": {Data: []byte(`base_url: https://example.com`)},
2026-02-18 11:07:18 +00:00
"posts/test.md": {Data: []byte(`---
date: 2026-02-18T19:59:00Z
title: Test Post Here
tags: [test, example]
---
This is just a test post.
`)},
}
pr := sitereader.New(testFS)
post, err := pr.ReadPost("posts/test.md")
assert.NoError(t, err)
assert.Equal(t, "Test Post Here", post.Meta.Title)
assert.Equal(t, time.Date(2026, 2, 18, 19, 59, 0, 0, time.UTC), post.Meta.Date)
assert.Equal(t, []string{"test", "example"}, post.Meta.Tags)
assert.Equal(t, "This is just a test post.\n", post.Content)
})
t.Run("without meta", func(t *testing.T) {
testFS := fstest.MapFS{
"posts/test.md": {Data: []byte(`---
---
This is just a test post.
`)},
}
pr := sitereader.New(testFS)
post, err := pr.ReadPost("posts/test.md")
assert.NoError(t, err)
assert.Equal(t, models.PostMeta{}, post.Meta)
2026-02-18 11:07:18 +00:00
assert.Equal(t, "This is just a test post.\n", post.Content)
})
}
func TestProvider_ListPosts(t *testing.T) {
testFS := fstest.MapFS{
"posts/01-post1.md": {Data: []byte(`---
id: 111
date: 2026-02-18T19:59:00Z
title: Test Post Here
tags: [test, example]
---
This is just a test post.
`)},
"posts/02-post2.md": {Data: []byte(`---
id: 222
---
This is just a test post.
`)},
}
pr := sitereader.New(testFS)
posts, err := pr.ListPosts()
assert.NoError(t, err)
assert.Equal(t, 2, len(posts))
assert.Equal(t, "111", posts[0].Meta.ID)
assert.Equal(t, "222", posts[1].Meta.ID)
}
func TestProvider_ReadSite(t *testing.T) {
testFS := fstest.MapFS{
"posts/01-post1.md": {Data: []byte(`---
id: 111
date: 2026-02-18T19:59:00Z
title: Test Post Here
tags: [test, example]
---
This is just a test post.
`)},
"posts/02-post2.md": {Data: []byte(`---
id: 222
---
This is just a test post.
`)},
}
pr := sitereader.New(testFS)
sites, err := pr.ReadSite()
assert.NoError(t, err)
assert.Equal(t, 2, len(sites.Posts))
assert.Equal(t, "111", sites.Posts[0].Meta.ID)
assert.Equal(t, "222", sites.Posts[1].Meta.ID)
}