package sitereader_test import ( "testing" "testing/fstest" "time" "github.com/stretchr/testify/assert" "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.Title) assert.Equal(t, time.Date(2026, 2, 18, 19, 59, 0, 0, time.UTC), post.PublishedAt) assert.Equal(t, "This is just a test post.\n", post.Body) }) 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, "", post.Title) assert.Equal(t, "This is just a test post.\n", post.Body) }) } 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].GUID) assert.Equal(t, "222", posts[1].GUID) } func TestProvider_ReadSite(t *testing.T) { testFS := fstest.MapFS{ "site.yaml": {Data: []byte(`base_url: https://example.com`)}, "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].GUID) assert.Equal(t, "222", sites.Posts[1].GUID) }