Skip to content

Commit e5f6040

Browse files
committed
Added Task title change tracking
1 parent d2e445f commit e5f6040

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
@@ -45,6 +45,7 @@ defmodule CodeCorpsWeb.TaskController do
4545
current_user |> track_updated(updated_task)
4646
current_user |> maybe_track_connected(updated_task, task)
4747
current_user |> maybe_track_list_move(updated_task, task)
48+
current_user |> maybe_track_title_change(updated_task, task)
4849

4950
conn |> render("show.json-api", data: updated_task)
5051
end
@@ -91,4 +92,14 @@ defmodule CodeCorpsWeb.TaskController do
9192
user_id |> SegmentTracker.track("Moved Task Between Lists", task)
9293
end
9394
defp maybe_track_list_move(%User{}, %Task{}, %Task{}), do: :nothing
95+
96+
@spec maybe_track_title_change(User.t, Task.t, Task.t) :: any
97+
defp maybe_track_title_change(
98+
%User{id: user_id},
99+
%Task{title: new_title} = task,
100+
%Task{title: old_title}) when new_title != old_title do
101+
102+
user_id |> SegmentTracker.track("Edited Task Title", task)
103+
end
104+
defp maybe_track_title_change(%User{}, %Task{}, %Task{}), do: :nothing
94105
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
@@ -222,6 +222,27 @@ defmodule CodeCorpsWeb.TaskControllerTest do
222222
refute_received {:track, ^user_id, "Moved Task Between Lists", _}
223223
end
224224

225+
@tag :authenticated
226+
test "tracks title change", %{conn: conn, current_user: current_user} do
227+
task = insert(:task, user: current_user)
228+
attrs = @valid_attrs |> Map.put(:title, "New title")
229+
conn |> request_update(task, attrs)
230+
231+
traits = Task |> Repo.get(task.id) |> SegmentTraitsBuilder.build
232+
user_id = current_user.id
233+
assert_received {:track, ^user_id, "Edited Task Title", ^traits}
234+
end
235+
236+
@tag :authenticated
237+
test "does not track title change if none took place", %{conn: conn, current_user: current_user} do
238+
task = insert(:task, user: current_user)
239+
attrs = @valid_attrs |> Map.delete(:title)
240+
conn |> request_update(task, attrs)
241+
242+
user_id = current_user.id
243+
refute_received {:track, ^user_id, "Edited Task Title", _}
244+
end
245+
225246
@tag :authenticated
226247
test "renders 422 when data is invalid", %{conn: conn, current_user: current_user} do
227248
task = insert(:task, user: current_user)

0 commit comments

Comments
 (0)