108 lines
2.3 KiB
Go
108 lines
2.3 KiB
Go
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`)},
|
|
"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)
|
|
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)
|
|
}
|