Skip to content

Commit 9d2fb39

Browse files
committed
Add tests
1 parent 7b5065c commit 9d2fb39

File tree

2 files changed

+100
-33
lines changed

2 files changed

+100
-33
lines changed

test/controllers/organization_memberships_controller_test.exs

Lines changed: 99 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,6 @@ defmodule CodeCorps.OrganizationMembershipControllerTest do
55
alias CodeCorps.Organization
66
alias CodeCorps.User
77

8-
def filter_params(records) do
9-
ids =
10-
records
11-
|> Enum.map(fn(r) -> r.id end)
12-
|> Enum.join(",")
13-
14-
%{filter: %{id: ids}}
15-
end
16-
178
setup do
189
conn =
1910
%{build_conn | host: "api."}
@@ -23,36 +14,112 @@ defmodule CodeCorps.OrganizationMembershipControllerTest do
2314
{:ok, conn: conn}
2415
end
2516

26-
test "filters resources on index", %{conn: conn} do
27-
membership_1 = insert(:organization_membership)
28-
membership_2 = insert(:organization_membership)
29-
insert(:organization_membership)
17+
describe "index" do
18+
test "lists all resources", %{conn: conn} do
19+
membership_1 = insert(:organization_membership)
20+
membership_2 = insert(:organization_membership)
3021

31-
params = filter_params([membership_1, membership_2])
32-
path = conn |> organization_membership_path(:index)
22+
path = conn |> organization_membership_path(:index)
3323

34-
data = conn |> get(path, params) |> json_response(200) |> Map.get("data")
35-
assert data |> length == 2
24+
data = conn |> get(path) |> json_response(200) |> Map.get("data")
25+
assert data |> length == 2
3626

37-
[first_result, second_result] = data
38-
assert first_result["id"] == "#{membership_1.id}"
39-
assert second_result["id"] == "#{membership_2.id}"
40-
end
27+
[first_result, second_result] = data
28+
assert first_result["id"] == "#{membership_1.id}"
29+
assert second_result["id"] == "#{membership_2.id}"
30+
end
4131

42-
test "lists all resources for specified organization", %{conn: conn} do
43-
organization = insert(:organization)
44-
membership_1 = insert(:organization_membership, organization: organization)
45-
membership_2 = insert(:organization_membership, organization: organization)
46-
insert(:organization_membership)
32+
test "lists all resources for specified organization", %{conn: conn} do
33+
organization = insert(:organization)
34+
membership_1 = insert(:organization_membership, organization: organization)
35+
membership_2 = insert(:organization_membership, organization: organization)
36+
insert(:organization_membership)
4737

48-
path = conn |> organization_organization_membership_path(:index, organization)
38+
path = conn |> organization_organization_membership_path(:index, organization)
4939

50-
data = conn |> get(path) |> json_response(200) |> Map.get("data")
51-
assert data |> length == 2
40+
data = conn |> get(path) |> json_response(200) |> Map.get("data")
41+
assert data |> length == 2
42+
43+
[first_result, second_result] = data
44+
assert first_result["id"] == "#{membership_1.id}"
45+
assert second_result["id"] == "#{membership_2.id}"
46+
end
47+
48+
test "filters resources by member id", %{conn: conn} do
49+
member_1 = insert(:user)
50+
member_2 = insert(:user)
51+
member_3 = insert(:user)
52+
membership_1 = insert(:organization_membership, member: member_1)
53+
membership_2 = insert(:organization_membership, member: member_2)
54+
insert(:organization_membership, member: member_3)
55+
56+
57+
params = %{"filter" => %{"id" => "#{member_1.id},#{member_2.id}"}}
58+
path = conn |> organization_membership_path(:index, params)
59+
data = conn |> get(URI.decode(path)) |> json_response(200) |> Map.get("data")
60+
assert data |> length == 2
61+
62+
[first_result, second_result] = data
63+
assert first_result["id"] == "#{membership_1.id}"
64+
assert second_result["id"] == "#{membership_2.id}"
65+
end
66+
67+
test "filters resources by role", %{conn: conn} do
68+
membership_1 = insert(:organization_membership, role: "admin")
69+
membership_2 = insert(:organization_membership, role: "admin")
70+
insert(:organization_membership, role: "owner")
71+
72+
params = %{"role" => "admin"}
73+
path = conn |> organization_membership_path(:index, params)
74+
75+
data = conn |> get(path) |> json_response(200) |> Map.get("data")
76+
assert data |> length == 2
77+
78+
[first_result, second_result] = data
79+
assert first_result["id"] == "#{membership_1.id}"
80+
assert second_result["id"] == "#{membership_2.id}"
81+
end
82+
83+
test "filters resources by role and id", %{conn: conn} do
84+
member_1 = insert(:user)
85+
member_2 = insert(:user)
86+
membership_1 = insert(:organization_membership, role: "admin", member: member_1)
87+
insert(:organization_membership, role: "admin", member: member_2)
88+
insert(:organization_membership, role: "owner")
5289

53-
[first_result, second_result] = data
54-
assert first_result["id"] == "#{membership_1.id}"
55-
assert second_result["id"] == "#{membership_2.id}"
90+
params = %{"role" => "admin", "filter" => %{"id" => "#{member_1.id}"}}
91+
path = conn |> organization_membership_path(:index, params)
92+
93+
data = conn |> get(path) |> json_response(200) |> Map.get("data")
94+
95+
assert data |> length == 1
96+
97+
[only_result] = data
98+
assert only_result["id"] == "#{membership_1.id}"
99+
end
100+
101+
test "filters resources by role and id on specific organization", %{conn: conn} do
102+
member_1 = insert(:user)
103+
organization = insert(:organization)
104+
membership_1 =
105+
insert(
106+
:organization_membership,
107+
organization: organization,
108+
role: "admin",
109+
member: member_1
110+
)
111+
insert(:organization_membership, organization: organization, role: "admin")
112+
insert(:organization_membership, role: "owner")
113+
114+
params = %{"role" => "admin", "filter" => %{"id" => "#{member_1.id}"}}
115+
path = conn |> organization_organization_membership_path(:index, organization)
116+
117+
data = conn |> get(path, params) |> json_response(200) |> Map.get("data")
118+
assert data |> length == 1
119+
120+
[only_result] = data
121+
assert only_result["id"] == "#{membership_1.id}"
122+
end
56123
end
57124

58125
test "shows chosen resource", %{conn: conn} do

web/models/model_helpers.ex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ defmodule CodeCorps.ModelHelpers do
1313
end
1414
end
1515

16-
def member_filter(query, %{"filter" => id_list}) do
16+
def member_filter(query, %{"filter" => %{"id" => id_list}}) do
1717
ids = id_list |> coalesce_id_string
1818
query |> where([om], om.member_id in ^ids)
1919
end

0 commit comments

Comments
 (0)