1.5 KiB · text 5af55d9
defmodule GitGud.WikisTest do
use GitGud.DataCase, async: false
alias GitGud.Wikis
import GitGud.ForgeFixtures
@moduletag :git_required
setup do
if System.find_executable("git") == nil do
{:skip, "git not on PATH"}
else
{user, repo} = repository_fixture()
{:ok, user: user, repo: repo}
end
end
test "initialized? false until first write, then true", %{repo: repo, user: user} do
refute Wikis.initialized?(repo)
assert {:ok, _sha} = Wikis.put_page(repo, user, "Home", "# Hello\n")
assert Wikis.initialized?(repo)
end
test "round trip put + get", %{repo: repo, user: user} do
{:ok, _} = Wikis.put_page(repo, user, "Notes", "first\n")
assert Wikis.get_page(repo, "Notes") == "first\n"
# Update overwrites.
{:ok, _} = Wikis.put_page(repo, user, "Notes", "second\n")
assert Wikis.get_page(repo, "Notes") == "second\n"
end
test "list_pages includes all md files", %{repo: repo, user: user} do
{:ok, _} = Wikis.put_page(repo, user, "Home", "h\n")
{:ok, _} = Wikis.put_page(repo, user, "FAQ", "f\n")
slugs = Wikis.list_pages(repo) |> Enum.map(& &1.slug) |> Enum.sort()
assert slugs == ["FAQ", "Home"]
end
test "delete_page removes it", %{repo: repo, user: user} do
{:ok, _} = Wikis.put_page(repo, user, "Goner", "x\n")
assert Wikis.get_page(repo, "Goner") == "x\n"
assert {:ok, _} = Wikis.delete_page(repo, user, "Goner")
assert is_nil(Wikis.get_page(repo, "Goner"))
end
end