samsa/internal/engines/arxiv_test.go
Franz Kafka 8e9aae062b
Some checks failed
Build and Push Docker Image / build-and-push (push) Failing after 11s
Mirror to GitHub / mirror (push) Failing after 5s
Tests / test (push) Successful in 42s
rename: kafka → samsa
Full project rename from kafka to samsa (after Gregor Samsa, who
woke one morning from uneasy dreams to find himself transformed).

- Module: github.com/metamorphosis-dev/kafka → samsa
- Binary: cmd/kafka/ → cmd/samsa/
- CSS: kafka.css → samsa.css
- UI: all 'kafka' product names, titles, localStorage keys → samsa
- localStorage keys: kafka-theme → samsa-theme, kafka-engines → samsa-engines
- OpenSearch: ShortName, LongName, description, URLs updated
- AGPL headers: 'kafka' → 'samsa'
- Docs, configs, examples updated
- Cache key prefix: kafka: → samsa:
2026-03-22 23:44:55 +00:00

66 lines
1.7 KiB
Go

package engines
import (
"context"
"net/http"
"strings"
"testing"
"github.com/metamorphosis-dev/samsa/internal/contracts"
)
func TestArxivEngine_Search(t *testing.T) {
transport := roundTripperFunc(func(r *http.Request) (*http.Response, error) {
if r.Method != http.MethodGet {
return httpResponse(http.StatusMethodNotAllowed, "", ""), nil
}
if r.URL.Host != "export.arxiv.org" || r.URL.Path != "/api/query" {
return httpResponse(http.StatusNotFound, "", ""), nil
}
q := r.URL.Query().Get("search_query")
if q != "all:quantum" {
return httpResponse(http.StatusBadRequest, "", ""), nil
}
atom := `<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<entry>
<title>Quantum Test</title>
<id>http://arxiv.org/abs/1234.5678</id>
<summary>Abstract here</summary>
<published>2024-06-03T00:00:00Z</published>
</entry>
</feed>`
return httpResponse(http.StatusOK, atom, "application/atom+xml"), nil
})
client := &http.Client{Transport: transport}
engine := &ArxivEngine{client: client}
resp, err := engine.Search(context.Background(), contracts.SearchRequest{
Query: "quantum",
Pageno: 1,
})
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
if len(resp.Results) != 1 {
t.Fatalf("expected 1 result, got %d", len(resp.Results))
}
r := resp.Results[0]
if r.Title != "Quantum Test" {
t.Fatalf("unexpected title: %q", r.Title)
}
if r.Content != "Abstract here" {
t.Fatalf("unexpected content: %q", r.Content)
}
if r.URL == nil || !strings.Contains(*r.URL, "1234.5678") {
t.Fatalf("unexpected url: %v", r.URL)
}
if r.Pubdate == nil || !strings.Contains(*r.Pubdate, "2024-06-03") {
t.Fatalf("expected pubdate around 2024-06-03, got %v", r.Pubdate)
}
}