Files
music_library/test/wikipedia_test.exs
T
2026-02-09 15:20:06 +00:00

43 lines
1.4 KiB
Elixir

defmodule WikipediaTest do
use ExUnit.Case, async: true
describe "get_artist_summary/1" do
test "resolves wikidata ID to Wikipedia summary with full intro" do
wikidata_id = "Q352766"
summary = Wikipedia.Fixtures.article_summary()
intro_html = Wikipedia.Fixtures.article_extract_html()
Req.Test.stub(Wikipedia.API, fn conn ->
case conn.request_path do
"/w/api.php" ->
case conn.params["action"] do
"wbgetentities" ->
Req.Test.json(conn, Wikipedia.Fixtures.wikidata_response())
"query" ->
Req.Test.json(conn, Wikipedia.Fixtures.article_extract())
end
"/api/rest_v1/page/summary/Steven%20Wilson" ->
Req.Test.json(conn, summary)
end
end)
assert {:ok, result} = Wikipedia.get_artist_summary(wikidata_id)
assert result["extract"] == summary["extract"]
assert result["description"] == summary["description"]
assert result["intro_html"] == intro_html
end
test "returns error when no English Wikipedia article exists" do
wikidata_id = "Q999999"
Req.Test.stub(Wikipedia.API, fn conn ->
Req.Test.json(conn, Wikipedia.Fixtures.wikidata_response_no_enwiki())
end)
assert {:error, :no_english_wikipedia} = Wikipedia.get_artist_summary(wikidata_id)
end
end
end