@@ -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
0 commit comments