Skip to content

Commit f9ed129

Browse files
tallysmartinsPragTob
authored andcommitted
Adds Repo.slug/1 helper function (#24)
* Adds Repo.slug/1 helper function - closes #13 * Apply PR review
1 parent 0e3616f commit f9ed129

4 files changed

Lines changed: 16 additions & 6 deletions

File tree

lib/elixir_bench/repos/repo.ex

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,8 @@ defmodule ElixirBench.Repos.Repo do
1616
|> cast(attrs, [:owner, :name])
1717
|> validate_required([:owner, :name])
1818
end
19+
20+
def slug(repo) do
21+
"#{repo.owner}/#{repo.name}"
22+
end
1923
end

lib/elixir_bench_web/schema/content_types.ex

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,7 @@ defmodule ElixirBenchWeb.Schema.ContentTypes do
99
field :owner, :string
1010
field :name, :string
1111

12-
field :slug, :string,
13-
resolve: fn repo, _args, _info -> {:ok, "#{repo.owner}/#{repo.name}"} end
12+
field :slug, :string, resolve: fn repo, _args, _info -> {:ok, Repos.Repo.slug(repo)} end
1413

1514
field :benchmarks, list_of(:benchmark) do
1615
resolve(fn %{id: id}, _, _ ->

lib/elixir_bench_web/views/job_view.ex

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
defmodule ElixirBenchWeb.JobView do
22
use ElixirBenchWeb, :view
33
alias ElixirBenchWeb.JobView
4+
alias ElixirBench.Repos
45

56
def render("index.json", %{jobs: jobs, repo: repo}) do
67
%{data: render_many(jobs, JobView, "job.json", repo: repo)}
@@ -13,7 +14,7 @@ defmodule ElixirBenchWeb.JobView do
1314
def render("job.json", %{job: %{config: config} = job, repo: repo}) do
1415
%{
1516
id: job.uuid,
16-
repo_slug: "#{repo.owner}/#{repo.name}",
17+
repo_slug: Repos.Repo.slug(repo),
1718
branch_name: job.branch_name,
1819
commit_sha: job.commit_sha,
1920
config: %{

test/elixir_bench/repos/repos_test.exs

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ defmodule ElixirBench.ReposTest do
88
@valid_attrs %{name: "some name", owner: "some owner"}
99
@update_attrs %{name: "some updated name", owner: "some updated owner"}
1010
@invalid_attrs %{name: nil, owner: nil}
11+
@repo_slug "some owner/some name"
1112

1213
def repo_fixture(attrs \\ %{}) do
1314
{:ok, repo} =
@@ -25,7 +26,7 @@ defmodule ElixirBench.ReposTest do
2526

2627
test "get_repo!/1 returns the repo with given id" do
2728
repo = repo_fixture()
28-
assert Repos.fetch_repo_by_slug(repo.owner <> "/" <> repo.name) == {:ok, repo}
29+
assert Repos.fetch_repo_by_slug(@repo_slug) == {:ok, repo}
2930
end
3031

3132
test "create_repo/1 with valid data creates a repo" do
@@ -49,18 +50,23 @@ defmodule ElixirBench.ReposTest do
4950
test "update_repo/2 with invalid data returns error changeset" do
5051
repo = repo_fixture()
5152
assert {:error, %Ecto.Changeset{}} = Repos.update_repo(repo, @invalid_attrs)
52-
assert Repos.fetch_repo_by_slug(repo.owner <> "/" <> repo.name) == {:ok, repo}
53+
assert Repos.fetch_repo_by_slug(@repo_slug) == {:ok, repo}
5354
end
5455

5556
test "delete_repo/1 deletes the repo" do
5657
repo = repo_fixture()
5758
assert {:ok, %Repo{}} = Repos.delete_repo(repo)
58-
assert Repos.fetch_repo_by_slug(repo.owner <> "/" <> repo.name) == {:error, :not_found}
59+
assert Repos.fetch_repo_by_slug(@repo_slug) == {:error, :not_found}
5960
end
6061
end
6162

6263
test "Repo.changeset/2 returns a repo changeset" do
6364
repo = repo_fixture()
6465
assert %Ecto.Changeset{} = Repos.Repo.changeset(repo, %{})
6566
end
67+
68+
test "Repo.slug/1 returns the repo slug" do
69+
repo = repo_fixture()
70+
assert @repo_slug == Repos.Repo.slug(repo)
71+
end
6672
end

0 commit comments

Comments
 (0)