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) }