Skip to content

Commit e8520c6

Browse files
zacckbegedin
authored andcommitted
Tests for GitHub.Sync.installation_event/1 (#1380)
Add tests for Github.Sync.pull_request_event/1
1 parent 744e2ec commit e8520c6

1 file changed

Lines changed: 57 additions & 0 deletions

File tree

test/lib/code_corps/github/sync/sync_test.exs

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,63 @@ defmodule CodeCorps.GitHub.SyncTest do
2424

2525
alias Ecto.Changeset
2626

27+
describe "pull_request_event" do
28+
["pull_request_opened","pull_request_closed","pull_request_edited", "pull_request_opened_by_bot","pull_request_reopened"]
29+
|> Enum.each(fn payload_name ->
30+
@event payload_name
31+
test "runs succesfully when " <> @event do
32+
payload = load_event_fixture(@event)
33+
project = insert(:project)
34+
insert(:github_repo, github_id: payload["repository"]["id"], project: project)
35+
insert(:task_list, project: project, done: true)
36+
insert(:task_list, project: project, inbox: true)
37+
insert(:task_list, project: project, pull_requests: true)
38+
{:ok, _map} = Sync.pull_request_event(payload)
39+
end
40+
41+
test "fails if repo not found when " <> @event do
42+
payload = load_event_fixture(@event)
43+
{:error, :repo_not_found} = Sync.pull_request_event(payload)
44+
end
45+
46+
test "fails if api errors out when " <> @event do
47+
payload = load_event_fixture(@event)
48+
project = insert(:project)
49+
insert(:github_repo, github_id: payload["repository"]["id"], project: project)
50+
insert(:task_list, project: project, done: true)
51+
insert(:task_list, project: project, inbox: true)
52+
insert(:task_list, project: project, pull_requests: true)
53+
54+
with_mock_api(CodeCorps.GitHub.FailureAPI) do
55+
assert {:error, :fetching_issue, _error} = Sync.pull_request_event(payload)
56+
end
57+
end
58+
59+
test "fails with validation error if pull request is invalid when " <> @event do
60+
payload = load_event_fixture(@event)
61+
project = insert(:project)
62+
insert(:github_repo, github_id: payload["repository"]["id"], project: project)
63+
insert(:task_list, project: project, done: true)
64+
insert(:task_list, project: project, inbox: true)
65+
insert(:task_list, project: project, pull_requests: true)
66+
67+
%{"pull_request" => pull} = payload
68+
corrupt_pull = %{pull | "created_at" => nil, "updated_at" => nil, "html_url" => nil, "locked" => nil,
69+
"number" => nil, "state" => nil, "title" => nil }
70+
corrupt_pull_request = Map.put(payload, "pull_request", corrupt_pull)
71+
{:error, :validating_github_pull_request, _changeset} = Sync.pull_request_event(corrupt_pull_request)
72+
end
73+
74+
test "fails with validation error if task_list isn't found " <> @event do
75+
payload = load_event_fixture(@event)
76+
project = insert(:project)
77+
insert(:github_repo, github_id: payload["repository"]["id"], project: project)
78+
{:error, :validating_task, _changeset} = Sync.pull_request_event(payload)
79+
end
80+
81+
end)
82+
end
83+
2784

2885
# Some clauses defined seem difficult or impossible to reach so their tests were omitted
2986
# - {:error, :validation_error_on_syncing_installation, Changeset.t()}

0 commit comments

Comments
 (0)