@@ -21,6 +21,67 @@ defmodule CodeCorps.ProjectCategoryControllerTest do
2121 }
2222 end
2323
24+ describe "index" do
25+ test "lists all entries on index" , % { conn: conn } do
26+ conn = get conn , project_category_path ( conn , :index )
27+ assert json_response ( conn , 200 ) [ "data" ] == [ ]
28+ end
29+
30+ test "filters resources on index" , % { conn: conn } do
31+ arts = insert ( :category , name: "Arts" )
32+ society = insert ( :category , name: "Society" )
33+ technology = insert ( :category , name: "Technology" )
34+
35+ project = insert ( :project )
36+ project_category_1 = insert ( :project_category , project: project , category: arts )
37+ project_category_2 = insert ( :project_category , project: project , category: society )
38+ insert ( :project_category , project: project , category: technology )
39+
40+ json =
41+ conn
42+ |> get ( "project-categories/?filter[id]=#{ project_category_1 . id } ,#{ project_category_2 . id } " )
43+ |> json_response ( 200 )
44+ data = json [ "data" ]
45+ assert length ( data ) == 2
46+ [ first_result , second_result | _ ] = data
47+
48+ assert first_result [ "id" ] == "#{ project_category_1 . id } "
49+ assert first_result [ "relationships" ] [ "project" ] [ "data" ] [ "id" ] == "#{ project . id } "
50+ assert first_result [ "relationships" ] [ "project" ] [ "data" ] [ "type" ] == "project"
51+ assert first_result [ "relationships" ] [ "category" ] [ "data" ] [ "id" ] == "#{ arts . id } "
52+ assert first_result [ "relationships" ] [ "category" ] [ "data" ] [ "type" ] == "category"
53+
54+ assert second_result [ "id" ] == "#{ project_category_2 . id } "
55+ assert second_result [ "relationships" ] [ "project" ] [ "data" ] [ "id" ] == "#{ project . id } "
56+ assert second_result [ "relationships" ] [ "project" ] [ "data" ] [ "type" ] == "project"
57+ assert second_result [ "relationships" ] [ "category" ] [ "data" ] [ "id" ] == "#{ society . id } "
58+ assert second_result [ "relationships" ] [ "category" ] [ "data" ] [ "type" ] == "category"
59+ end
60+ end
61+
62+ describe "show" do
63+ test "shows chosen resource" , % { conn: conn } do
64+ category = insert ( :category )
65+ project = insert ( :project )
66+ project_category = insert ( :project_category , project: project , category: category )
67+ conn = get conn , project_category_path ( conn , :show , project_category )
68+ data = json_response ( conn , 200 ) [ "data" ]
69+ assert data [ "id" ] == "#{ project_category . id } "
70+ assert data [ "type" ] == "project-category"
71+ assert data [ "attributes" ] == % { }
72+ assert data [ "relationships" ] [ "project" ] [ "data" ] [ "id" ] == "#{ project . id } "
73+ assert data [ "relationships" ] [ "project" ] [ "data" ] [ "type" ] == "project"
74+ assert data [ "relationships" ] [ "category" ] [ "data" ] [ "id" ] == "#{ category . id } "
75+ assert data [ "relationships" ] [ "category" ] [ "data" ] [ "type" ] == "category"
76+ end
77+
78+ test "does not show resource and instead throw error when id is nonexistent" , % { conn: conn } do
79+ assert_error_sent 404 , fn ->
80+ get conn , project_category_path ( conn , :show , - 1 )
81+ end
82+ end
83+ end
84+
2485 describe "create" do
2586 @ tag authenticated: :admin
2687 test "creates and renders resource when data is valid" , % { conn: conn } do
0 commit comments