Skip to content

Commit a32a3e0

Browse files
committed
Add analytics tracking for added/removed TaskSkill
1 parent fdcae0b commit a32a3e0

File tree

5 files changed

+54
-74
lines changed

5 files changed

+54
-74
lines changed

lib/code_corps/analytics/segment_traits_builder.ex

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,15 @@ defmodule CodeCorps.Analytics.SegmentTraitsBuilder do
6464
}
6565
end
6666

67+
defp traits(task_skill = %CodeCorps.TaskSkill{}) do
68+
task_skill = task_skill |> CodeCorps.Repo.preload([:skill, :task])
69+
%{
70+
skill: task_skill.skill.title,
71+
skill_id: task_skill.skill.id,
72+
task: task_skill.task.title
73+
}
74+
end
75+
6776
defp traits(user_category = %CodeCorps.UserCategory{}) do
6877
user_category = user_category |> CodeCorps.Repo.preload(:category)
6978
%{

lib/code_corps_web/controllers/task_skill_controller.ex

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,12 @@ defmodule CodeCorpsWeb.TaskSkillController do
22
@moduledoc false
33
use CodeCorpsWeb, :controller
44

5-
alias CodeCorps.{TaskSkill, User, Helpers.Query}
5+
alias CodeCorps.{
6+
Analytics.SegmentTracker,
7+
Helpers.Query,
8+
TaskSkill,
9+
User
10+
}
611

712
action_fallback CodeCorpsWeb.FallbackController
813
plug CodeCorpsWeb.Plug.DataToAttributes
@@ -26,7 +31,9 @@ defmodule CodeCorpsWeb.TaskSkillController do
2631
def create(%Conn{} = conn, %{} = params) do
2732
with %User{} = current_user <- conn |> Guardian.Plug.current_resource,
2833
{:ok, :authorized} <- current_user |> Policy.authorize(:create, %TaskSkill{}, params),
29-
{:ok, %TaskSkill{} = task_skill} <- %TaskSkill{} |> TaskSkill.create_changeset(params) |> Repo.insert do
34+
{:ok, %TaskSkill{} = task_skill} <- %TaskSkill{} |> TaskSkill.create_changeset(params) |> Repo.insert
35+
do
36+
SegmentTracker.track(current_user.id, "Added Task Skill", task_skill)
3037
conn |> put_status(:created) |> render("show.json-api", data: task_skill)
3138
end
3239
end
@@ -38,6 +45,7 @@ defmodule CodeCorpsWeb.TaskSkillController do
3845
{:ok, :authorized} <- current_user |> Policy.authorize(:delete, task_skill),
3946
{:ok, %TaskSkill{} = _task_skill} <- task_skill |> Repo.delete
4047
do
48+
SegmentTracker.track(current_user.id, "Removed Task Skill", task_skill)
4149
conn |> Conn.assign(:task_skill, task_skill) |> send_resp(:no_content, "")
4250
end
4351
end

lib/code_corps_web/controllers/user_controller.ex

Lines changed: 0 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -1,76 +1,5 @@
11
defmodule CodeCorpsWeb.UserController do
22
@moduledoc false
3-
@moduledoc false
4-
@moduledoc false
5-
@moduledoc false
6-
@moduledoc false
7-
@moduledoc false
8-
@moduledoc false
9-
@moduledoc false
10-
@moduledoc false
11-
@moduledoc false
12-
@moduledoc false
13-
@moduledoc false
14-
@moduledoc false
15-
@moduledoc false
16-
@moduledoc false
17-
@moduledoc false
18-
@moduledoc false
19-
@moduledoc false
20-
@moduledoc false
21-
@moduledoc false
22-
@moduledoc false
23-
@moduledoc false
24-
@moduledoc false
25-
@moduledoc false
26-
@moduledoc false
27-
@moduledoc false
28-
@moduledoc false
29-
@moduledoc false
30-
@moduledoc false
31-
@moduledoc false
32-
@moduledoc false
33-
@moduledoc false
34-
@moduledoc false
35-
@moduledoc false
36-
@moduledoc false
37-
@moduledoc false
38-
@moduledoc false
39-
@moduledoc false
40-
@moduledoc false
41-
@moduledoc false
42-
@moduledoc false
43-
@moduledoc false
44-
@moduledoc false
45-
@moduledoc false
46-
@moduledoc false
47-
@moduledoc false
48-
@moduledoc false
49-
@moduledoc false
50-
@moduledoc false
51-
@moduledoc false
52-
@moduledoc false
53-
@moduledoc false
54-
@moduledoc false
55-
@moduledoc false
56-
@moduledoc false
57-
@moduledoc false
58-
@moduledoc false
59-
@moduledoc false
60-
@moduledoc false
61-
@moduledoc false
62-
@moduledoc false
63-
@moduledoc false
64-
@moduledoc false
65-
@moduledoc false
66-
@moduledoc false
67-
@moduledoc false
68-
@moduledoc false
69-
@moduledoc false
70-
@moduledoc false
71-
@moduledoc false
72-
@moduledoc false
73-
@moduledoc false
743
use CodeCorpsWeb, :controller
754

765
alias CodeCorps.{

test/lib/code_corps_web/controllers/task_skill_controller_test.exs

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ defmodule CodeCorpsWeb.TaskSkillControllerTest do
33

44
use CodeCorpsWeb.ApiCase, resource_name: :task_skill
55

6+
alias CodeCorps.{Repo, TaskSkill}
7+
68
describe "index" do
79
test "lists all entries on index", %{conn: conn} do
810
[task_skill_1, task_skill_2] = insert_pair(:task_skill)
@@ -52,6 +54,24 @@ defmodule CodeCorpsWeb.TaskSkillControllerTest do
5254
assert conn |> request_create(attrs) |> json_response(201)
5355
end
5456

57+
@tag :authenticated
58+
test "tracks event when data is valid", %{conn: conn, current_user: current_user} do
59+
task = insert(:task, user: current_user)
60+
skill = insert(:skill)
61+
user_id = current_user.id
62+
63+
attrs = %{task: task, skill: skill}
64+
json = conn |> request_create(attrs) |> json_response(201)
65+
assert json
66+
67+
expected_data =
68+
TaskSkill
69+
|> Repo.get(json["data"]["id"])
70+
|> CodeCorps.Analytics.SegmentTraitsBuilder.build
71+
72+
assert_received {:track, ^user_id, "Added Task Skill", ^expected_data}
73+
end
74+
5575
@tag :authenticated
5676
test "renders 422 error when data is invalid", %{conn: conn, current_user: current_user} do
5777
task = insert(:task, user: current_user)
@@ -83,6 +103,21 @@ defmodule CodeCorpsWeb.TaskSkillControllerTest do
83103
assert conn |> request_delete(task_skill) |> response(204)
84104
end
85105

106+
@tag :authenticated
107+
test "tracks event", %{conn: conn, current_user: current_user} do
108+
task = insert(:task, user: current_user)
109+
task_skill = insert(:task_skill, task: task)
110+
user_id = current_user.id
111+
expected_data =
112+
TaskSkill
113+
|> Repo.get(task_skill.id)
114+
|> CodeCorps.Analytics.SegmentTraitsBuilder.build
115+
116+
assert conn |> request_delete(task_skill) |> response(204)
117+
118+
assert_received {:track, ^user_id, "Removed Task Skill", ^expected_data}
119+
end
120+
86121
test "renders 401 when unauthenticated", %{conn: conn} do
87122
assert conn |> request_delete |> json_response(401)
88123
end

test/lib/code_corps_web/controllers/user_controller_test.exs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ defmodule CodeCorpsWeb.UserControllerTest do
2727
@relationships %{}
2828

2929
describe "index" do
30-
3130
test "lists all entries on index", %{conn: conn} do
3231
[user_1, user_2] = insert_pair(:user)
3332

0 commit comments

Comments
 (0)