| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- package websearch
- import (
- "encoding/json"
- "testing"
- "github.com/stretchr/testify/require"
- )
- func TestTavilyProvider_Name(t *testing.T) {
- p := NewTavilyProvider("key", nil)
- require.Equal(t, "tavily", p.Name())
- }
- func TestTavilyProvider_Search_RequestConstruction(t *testing.T) {
- // Verify tavilyRequest struct fields map correctly
- req := tavilyRequest{
- APIKey: "test-key",
- Query: "golang",
- MaxResults: 3,
- SearchDepth: tavilySearchDepthBasic,
- }
- data, err := json.Marshal(req)
- require.NoError(t, err)
- var parsed map[string]any
- require.NoError(t, json.Unmarshal(data, &parsed))
- require.Equal(t, "test-key", parsed["api_key"])
- require.Equal(t, "golang", parsed["query"])
- require.Equal(t, float64(3), parsed["max_results"])
- require.Equal(t, "basic", parsed["search_depth"])
- }
- func TestTavilyProvider_Search_ResponseParsing(t *testing.T) {
- rawResp := `{"results":[{"url":"https://go.dev","title":"Go","content":"Go programming language","score":0.95}]}`
- var resp tavilyResponse
- require.NoError(t, json.Unmarshal([]byte(rawResp), &resp))
- require.Len(t, resp.Results, 1)
- require.Equal(t, "https://go.dev", resp.Results[0].URL)
- require.Equal(t, "Go programming language", resp.Results[0].Content)
- require.InDelta(t, 0.95, resp.Results[0].Score, 0.001)
- // Verify mapping to SearchResult
- results := make([]SearchResult, 0, len(resp.Results))
- for _, r := range resp.Results {
- results = append(results, SearchResult{
- URL: r.URL, Title: r.Title, Snippet: r.Content,
- })
- }
- require.Equal(t, "Go programming language", results[0].Snippet)
- require.Equal(t, "", results[0].PageAge)
- }
- func TestTavilyProvider_Search_EmptyResults(t *testing.T) {
- var resp tavilyResponse
- require.NoError(t, json.Unmarshal([]byte(`{"results":[]}`), &resp))
- require.Empty(t, resp.Results)
- }
- func TestTavilyProvider_Search_InvalidJSON(t *testing.T) {
- var resp tavilyResponse
- require.Error(t, json.Unmarshal([]byte("not json"), &resp))
- }
|