Skip to content

Commit 09350f3

Browse files
committed
Added Task archive tracking
1 parent 31c5749 commit 09350f3

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
@@ -47,6 +47,7 @@ defmodule CodeCorpsWeb.TaskController do
4747
current_user |> maybe_track_list_move(updated_task, task)
4848
current_user |> maybe_track_title_change(updated_task, task)
4949
current_user |> maybe_track_close(updated_task, task)
50+
current_user |> maybe_track_archive(updated_task, task)
5051

5152
conn |> render("show.json-api", data: updated_task)
5253
end
@@ -113,4 +114,14 @@ defmodule CodeCorpsWeb.TaskController do
113114
user_id |> SegmentTracker.track("Closed Task", task)
114115
end
115116
defp maybe_track_close(%User{}, %Task{}, %Task{}), do: :nothing
117+
118+
@spec maybe_track_archive(User.t, Task.t, Task.t) :: any
119+
defp maybe_track_archive(
120+
%User{id: user_id},
121+
%Task{archived: true} = task,
122+
%Task{archived: false}) do
123+
124+
user_id |> SegmentTracker.track("Archived Task", task)
125+
end
126+
defp maybe_track_archive(%User{}, %Task{}, %Task{}), do: :nothing
116127
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
@@ -264,6 +264,27 @@ defmodule CodeCorpsWeb.TaskControllerTest do
264264
refute_received {:track, ^user_id, "Closed Task", _}
265265
end
266266

267+
@tag :authenticated
268+
test "tracks archiving task", %{conn: conn, current_user: current_user} do
269+
task = insert(:task, user: current_user, archived: false)
270+
attrs = @valid_attrs |> Map.put(:archived, true)
271+
conn |> request_update(task, attrs)
272+
273+
traits = Task |> Repo.get(task.id) |> SegmentTraitsBuilder.build
274+
user_id = current_user.id
275+
assert_received {:track, ^user_id, "Archived Task", ^traits}
276+
end
277+
278+
@tag :authenticated
279+
test "does not track archiving task if no archive took place", %{conn: conn, current_user: current_user} do
280+
task = insert(:task, user: current_user, archived: false)
281+
attrs = @valid_attrs |> Map.delete(:archived)
282+
conn |> request_update(task, attrs)
283+
284+
user_id = current_user.id
285+
refute_received {:track, ^user_id, "Archived Task", _}
286+
end
287+
267288
@tag :authenticated
268289
test "renders 422 when data is invalid", %{conn: conn, current_user: current_user} do
269290
task = insert(:task, user: current_user)

0 commit comments

Comments
 (0)