Skip to content

Commit 31c5749

Browse files
committed
Added task close tracking
1 parent e5f6040 commit 31c5749

File tree

2 files changed

+32
-0
lines changed

2 files changed

+32
-0
lines changed

lib/code_corps_web/controllers/task_controller.ex

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ defmodule CodeCorpsWeb.TaskController do
4646
current_user |> maybe_track_connected(updated_task, task)
4747
current_user |> maybe_track_list_move(updated_task, task)
4848
current_user |> maybe_track_title_change(updated_task, task)
49+
current_user |> maybe_track_close(updated_task, task)
4950

5051
conn |> render("show.json-api", data: updated_task)
5152
end
@@ -102,4 +103,14 @@ defmodule CodeCorpsWeb.TaskController do
102103
user_id |> SegmentTracker.track("Edited Task Title", task)
103104
end
104105
defp maybe_track_title_change(%User{}, %Task{}, %Task{}), do: :nothing
106+
107+
@spec maybe_track_close(User.t, Task.t, Task.t) :: any
108+
defp maybe_track_close(
109+
%User{id: user_id},
110+
%Task{status: "closed"} = task,
111+
%Task{status: "open"}) do
112+
113+
user_id |> SegmentTracker.track("Closed Task", task)
114+
end
115+
defp maybe_track_close(%User{}, %Task{}, %Task{}), do: :nothing
105116
end

test/lib/code_corps_web/controllers/task_controller_test.exs

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -243,6 +243,27 @@ defmodule CodeCorpsWeb.TaskControllerTest do
243243
refute_received {:track, ^user_id, "Edited Task Title", _}
244244
end
245245

246+
@tag :authenticated
247+
test "tracks closing task", %{conn: conn, current_user: current_user} do
248+
task = insert(:task, user: current_user, status: "open")
249+
attrs = @valid_attrs |> Map.put(:status, "closed")
250+
conn |> request_update(task, attrs)
251+
252+
traits = Task |> Repo.get(task.id) |> SegmentTraitsBuilder.build
253+
user_id = current_user.id
254+
assert_received {:track, ^user_id, "Closed Task", ^traits}
255+
end
256+
257+
@tag :authenticated
258+
test "does not track closing task if no close took place", %{conn: conn, current_user: current_user} do
259+
task = insert(:task, user: current_user, status: "open")
260+
attrs = @valid_attrs |> Map.delete(:status)
261+
conn |> request_update(task, attrs)
262+
263+
user_id = current_user.id
264+
refute_received {:track, ^user_id, "Closed Task", _}
265+
end
266+
246267
@tag :authenticated
247268
test "renders 422 when data is invalid", %{conn: conn, current_user: current_user} do
248269
task = insert(:task, user: current_user)

0 commit comments

Comments
 (0)