test/support/fixtures/accounts_fixtures.ex

main at 58e6347eeb72 · 1 KB

defmodule OpenAgents.AccountsFixtures do
  @moduledoc "Test helpers for repository-assignable accounts."

  def repository_user_fixture(login) when is_binary(login) do
    github_id = System.unique_integer([:positive, :monotonic])

    {:ok, user} =
      OpenAgents.Accounts.upsert_github_user(%{
        github_id: github_id,
        github_login: login,
        github_avatar_url: "https://avatars.githubusercontent.com/u/#{github_id}?v=4"
      })

    user
  end

  def repository_fixture(attrs \\ %{}) do
    suffix = System.unique_integer([:positive, :monotonic])

    defaults = %{
      owner: "TestOrg#{suffix}",
      name: "test-repository-#{suffix}",
      visibility: "public",
      default_branch: "main"
    }

    {:ok, repository} =
      defaults
      |> Map.merge(Map.new(attrs))
      |> OpenAgents.Repositories.create_repository()

    repository
  end

  def repository_with_member_fixture(user, attrs \\ %{}, role \\ "owner") do
    repository = repository_fixture(attrs)
    {:ok, _membership} = OpenAgents.Repositories.add_member(repository, user, role)
    repository
  end
end