Files
reddit-reader/internal/reddit/reddit_test.go
vikingowl a11206b980 feat(reddit): Fetcher interface and go-reddit wrapper
Adds internal/reddit package with a Fetcher interface and Client
implementation backed by go-reddit/v2. Handles hot/top/rising/new
sort variants with correct option types per the library API.
2026-04-03 11:54:34 +02:00

39 lines
860 B
Go

package reddit_test
import (
"context"
"testing"
"time"
"somegit.dev/vikingowl/reddit-reader/internal/domain"
redditpkg "somegit.dev/vikingowl/reddit-reader/internal/reddit"
)
type mockFetcher struct {
posts []domain.Post
err error
}
func (m *mockFetcher) FetchPosts(_ context.Context, _, _ string, _ int) ([]domain.Post, error) {
return m.posts, m.err
}
func TestFetcherInterface(t *testing.T) {
mock := &mockFetcher{
posts: []domain.Post{
{ID: "t3_a", Title: "Test", Subreddit: "golang", CreatedUTC: time.Now()},
},
}
var fetcher redditpkg.Fetcher = mock
posts, err := fetcher.FetchPosts(context.Background(), "golang", "new", 25)
if err != nil {
t.Fatalf("FetchPosts: %v", err)
}
if len(posts) != 1 {
t.Fatalf("len = %d, want 1", len(posts))
}
if posts[0].ID != "t3_a" {
t.Errorf("ID = %q, want t3_a", posts[0].ID)
}
}