Skip to content

Commit fb7d645

Browse files
authored
Merge pull request #1360 from code-corps/move-tasks-context
Move Tasks context and fix bug with date comparison test
2 parents f0a959a + 9207a23 commit fb7d645

File tree

7 files changed

+40
-38
lines changed

7 files changed

+40
-38
lines changed

lib/code_corps/task/query.ex renamed to lib/code_corps/tasks/query.ex

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
defmodule CodeCorps.Task.Query do
1+
defmodule CodeCorps.Tasks.Query do
22
@moduledoc ~S"""
33
Holds queries used to retrieve a list of, or a single `Task` record from the
44
database, using a provided map of parameters/filters.
@@ -20,7 +20,7 @@ defmodule CodeCorps.Task.Query do
2020
"""
2121
@spec list(map) :: list(Project.t)
2222
def list(%{} = params) do
23-
timing("Task.Query", "list") do
23+
timing("Tasks.Query", "list") do
2424
Task
2525
|> Helpers.Query.id_filter(params)
2626
|> apply_archived_status(params)

lib/code_corps/task/service.ex renamed to lib/code_corps/tasks/tasks.ex

+5-5
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
defmodule CodeCorps.Task.Service do
1+
defmodule CodeCorps.Tasks do
22
@moduledoc """
33
Handles special CRUD operations for `CodeCorps.Task`.
44
"""
@@ -28,8 +28,8 @@ defmodule CodeCorps.Task.Service do
2828
@doc ~S"""
2929
Performs all actions involved in creating a task on a project
3030
"""
31-
@spec create(map) :: result
32-
def create(%{} = attributes) do
31+
@spec create_task(map) :: result
32+
def create_task(%{} = attributes) do
3333
Multi.new
3434
|> Multi.insert(:task, %Task{} |> Task.create_changeset(attributes))
3535
|> Multi.run(:preload, fn %{task: %Task{} = task} ->
@@ -40,8 +40,8 @@ defmodule CodeCorps.Task.Service do
4040
|> marshall_result()
4141
end
4242

43-
@spec update(Task.t, map) :: result
44-
def update(%Task{} = task, %{} = attributes) do
43+
@spec update_task(Task.t, map) :: result
44+
def update_task(%Task{} = task, %{} = attributes) do
4545
Multi.new
4646
|> Multi.update(:task, task |> Task.update_changeset(attributes))
4747
|> Multi.run(:preload, fn %{task: %Task{} = task} ->

lib/code_corps_web/controllers/task_controller.ex

+6-6
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ defmodule CodeCorpsWeb.TaskController do
22
@moduledoc false
33
use CodeCorpsWeb, :controller
44

5-
alias CodeCorps.{Analytics.SegmentTracker, Task, Policy, User}
5+
alias CodeCorps.{Analytics.SegmentTracker, Policy, Task, Tasks, User}
66

77
import ScoutApm.Tracing
88

@@ -12,7 +12,7 @@ defmodule CodeCorpsWeb.TaskController do
1212

1313
@spec index(Conn.t, map) :: Conn.t
1414
def index(%Conn{} = conn, %{} = params) do
15-
tasks = Task.Query.list(params)
15+
tasks = Tasks.Query.list(params)
1616
tasks = preload(tasks)
1717
timing("JaSerializer", "render") do
1818
conn |> render("index.json-api", data: tasks)
@@ -21,7 +21,7 @@ defmodule CodeCorpsWeb.TaskController do
2121

2222
@spec show(Conn.t, map) :: Conn.t
2323
def show(%Conn{} = conn, %{} = params) do
24-
with %Task{} = task <- Task.Query.find(params),
24+
with %Task{} = task <- Tasks.Query.find(params),
2525
task <- preload(task)
2626
do
2727
conn |> render("show.json-api", data: task)
@@ -32,7 +32,7 @@ defmodule CodeCorpsWeb.TaskController do
3232
def create(%Conn{} = conn, %{} = params) do
3333
with %User{} = current_user <- conn |> CodeCorps.Guardian.Plug.current_resource,
3434
{:ok, :authorized} <- current_user |> Policy.authorize(:create, %Task{}, params),
35-
{:ok, %Task{} = task} <- params |> Task.Service.create,
35+
{:ok, %Task{} = task} <- params |> Tasks.create_task,
3636
task <- preload(task)
3737
do
3838
current_user |> track_created(task)
@@ -44,10 +44,10 @@ defmodule CodeCorpsWeb.TaskController do
4444

4545
@spec update(Conn.t, map) :: Conn.t
4646
def update(%Conn{} = conn, %{} = params) do
47-
with %Task{} = task <- Task.Query.find(params),
47+
with %Task{} = task <- Tasks.Query.find(params),
4848
%User{} = current_user <- conn |> CodeCorps.Guardian.Plug.current_resource,
4949
{:ok, :authorized} <- current_user |> Policy.authorize(:update, task),
50-
{:ok, %Task{} = updated_task} <- task |> Task.Service.update(params),
50+
{:ok, %Task{} = updated_task} <- task |> Tasks.update_task(params),
5151
updated_task <- preload(updated_task)
5252
do
5353

mix.exs

+3-3
Original file line numberDiff line numberDiff line change
@@ -141,10 +141,10 @@ defmodule CodeCorps.Mixfile do
141141
CodeCorps.StripeInvoice,
142142
CodeCorps.StripePlatformCard,
143143
CodeCorps.StripePlatformCustomer,
144-
CodeCorps.Task,
145-
CodeCorps.Task.Query,
146144
CodeCorps.TaskList,
147145
CodeCorps.TaskSkill,
146+
CodeCorps.Tasks,
147+
CodeCorps.Tasks.Query,
148148
CodeCorps.Transition.UserState,
149149
CodeCorps.User,
150150
CodeCorps.UserCategory,
@@ -162,7 +162,7 @@ defmodule CodeCorps.Mixfile do
162162
CodeCorps.Services.MarkdownRendererService,
163163
CodeCorps.Services.ProjectService,
164164
CodeCorps.Services.UserService,
165-
CodeCorps.Task.Service
165+
CodeCorps.Tasks
166166
],
167167

168168
"Policies": [

test/lib/code_corps/messages/conversations_test.exs

+4-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
defmodule CodeCorps.Messages.ConversationsTest do
22
@moduledoc false
33

4+
import DateTime, only: [compare: 2]
5+
46
use CodeCorps.DbAccessCase
57

68
alias CodeCorps.{
@@ -9,10 +11,10 @@ defmodule CodeCorps.Messages.ConversationsTest do
911

1012
describe "part_added_changeset/1" do
1113
test "sets the updated_at to the current time" do
12-
old_updated_at = Timex.now |> Timex.shift(days: -5)
14+
old_updated_at = DateTime.utc_now() |> Timex.shift(days: -5)
1315
conversation = %Conversation{updated_at: old_updated_at}
1416
changeset = conversation |> Messages.Conversations.part_added_changeset()
15-
assert changeset.changes[:updated_at] > old_updated_at
17+
assert compare(old_updated_at, changeset.changes[:updated_at]) == :lt
1618
end
1719

1820
test "sets status to open" do

test/lib/code_corps/task/query_test.exs renamed to test/lib/code_corps/tasks/query_test.exs

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,21 @@
1-
defmodule CodeCorps.Task.QueryTest do
1+
defmodule CodeCorps.Tasks.QueryTest do
22
@moduledoc false
33

44
use CodeCorps.DbAccessCase
55

6-
alias CodeCorps.Task
6+
alias CodeCorps.Tasks
77

88
describe "filter/2" do
99
defp get_sorted_ids(tasks) do
1010
tasks |> Enum.map(&Map.get(&1, :id)) |> Enum.sort
1111
end
1212

1313
defp list_sorted_ids(params) do
14-
params |> Task.Query.list |> get_sorted_ids()
14+
params |> Tasks.Query.list |> get_sorted_ids()
1515
end
1616

1717
defp find_with_query(params) do
18-
params |> Task.Query.find
18+
params |> Tasks.Query.find
1919
end
2020

2121
test "filters by project_id" do

test/lib/code_corps/task/service_test.exs renamed to test/lib/code_corps/tasks/tasks_test.exs

+16-16
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
defmodule CodeCorps.Task.ServiceTest do
1+
defmodule CodeCorps.TasksTest do
22
@moduledoc false
33

44
use CodeCorps.DbAccessCase
55

66
import CodeCorps.GitHub.TestHelpers
77

8-
alias CodeCorps.{GithubIssue, Repo, Task}
8+
alias CodeCorps.{GithubIssue, Repo, Task, Tasks}
99

1010
@base_attrs %{
1111
"title" => "Test task",
@@ -26,9 +26,9 @@ defmodule CodeCorps.Task.ServiceTest do
2626
|> Map.put("user_id", user.id)
2727
end
2828

29-
describe "create/2" do
29+
describe "create_task/2" do
3030
test "creates task" do
31-
{:ok, task} = valid_attrs() |> Task.Service.create
31+
{:ok, task} = valid_attrs() |> Tasks.create_task
3232

3333
assert task.title == @base_attrs["title"]
3434
assert task.markdown == @base_attrs["markdown"]
@@ -41,12 +41,12 @@ defmodule CodeCorps.Task.ServiceTest do
4141
end
4242

4343
test "sets modified_from to 'code_corps'" do
44-
{:ok, task} = valid_attrs() |> Task.Service.create
44+
{:ok, task} = valid_attrs() |> Tasks.create_task
4545
assert task.modified_from == "code_corps"
4646
end
4747

4848
test "returns errored changeset if attributes are invalid" do
49-
{:error, changeset} = Task.Service.create(@base_attrs)
49+
{:error, changeset} = Tasks.create_task(@base_attrs)
5050
refute changeset.valid?
5151
refute Repo.one(Task)
5252

@@ -65,7 +65,7 @@ defmodule CodeCorps.Task.ServiceTest do
6565
{:ok, task} =
6666
attrs
6767
|> Map.put("github_repo_id", github_repo.id)
68-
|> Task.Service.create
68+
|> Tasks.create_task
6969

7070
assert task.title == @base_attrs["title"]
7171
assert task.markdown == @base_attrs["markdown"]
@@ -90,20 +90,20 @@ defmodule CodeCorps.Task.ServiceTest do
9090
assert {:error, :github} ==
9191
attrs
9292
|> Map.put("github_repo_id", github_repo.id)
93-
|> Task.Service.create
93+
|> Tasks.create_task
9494
end
9595

9696
refute Repo.one(Task)
9797
assert_received({:post, "https://api.github.com/repos/foo/bar/issues", _body, _headers, _options})
9898
end
9999
end
100100

101-
describe "update/2" do
101+
describe "update_task/2" do
102102
@update_attrs %{"title" => "foo", "markdown" => "bar", "status" => "closed"}
103103

104104
test "updates task" do
105105
task = insert(:task)
106-
{:ok, updated_task} = task |> Task.Service.update(@update_attrs)
106+
{:ok, updated_task} = task |> Tasks.update_task(@update_attrs)
107107

108108
assert updated_task.id == task.id
109109
assert updated_task.title == @update_attrs["title"]
@@ -117,14 +117,14 @@ defmodule CodeCorps.Task.ServiceTest do
117117

118118
test "sets modified_from to 'code_corps'" do
119119
task = insert(:task, modified_from: "github")
120-
{:ok, updated_task} = task |> Task.Service.update(@update_attrs)
120+
{:ok, updated_task} = task |> Tasks.update_task(@update_attrs)
121121

122122
assert updated_task.modified_from == "code_corps"
123123
end
124124

125125
test "returns {:error, changeset} if there are validation errors" do
126126
task = insert(:task)
127-
{:error, changeset} = task |> Task.Service.update(%{"title" => nil})
127+
{:error, changeset} = task |> Tasks.update_task(%{"title" => nil})
128128

129129
refute changeset.valid?
130130

@@ -140,7 +140,7 @@ defmodule CodeCorps.Task.ServiceTest do
140140

141141
attrs = @update_attrs |> Map.put("github_repo_id", github_repo.id)
142142

143-
{:ok, updated_task} = task |> Task.Service.update(attrs)
143+
{:ok, updated_task} = task |> Tasks.update_task(attrs)
144144

145145
assert updated_task.github_issue_id
146146
assert updated_task.github_repo_id == github_repo.id
@@ -156,7 +156,7 @@ defmodule CodeCorps.Task.ServiceTest do
156156
github_issue = insert(:github_issue, number: 5)
157157
task = insert(:task, github_repo: github_repo, github_issue: github_issue)
158158

159-
{:ok, updated_task} = task |> Task.Service.update(@update_attrs)
159+
{:ok, updated_task} = task |> Tasks.update_task(@update_attrs)
160160

161161
assert updated_task.id == task.id
162162
assert updated_task.title == @update_attrs["title"]
@@ -179,7 +179,7 @@ defmodule CodeCorps.Task.ServiceTest do
179179
github_issue = insert(:github_issue, github_id: issue_github_id, number: number, github_pull_request: github_pull_request, github_repo: github_repo)
180180
task = insert(:task, github_repo: github_repo, github_issue: github_issue)
181181

182-
{:ok, updated_task} = task |> Task.Service.update(@update_attrs)
182+
{:ok, updated_task} = task |> Tasks.update_task(@update_attrs)
183183

184184
assert_received({:patch, "https://api.github.com/repos/octocat/Hello-World/issues/1347", _body, _headers, _options})
185185

@@ -204,7 +204,7 @@ defmodule CodeCorps.Task.ServiceTest do
204204
task = insert(:task, github_repo: github_repo, github_issue: github_issue)
205205

206206
with_mock_api(CodeCorps.GitHub.FailureAPI) do
207-
assert {:error, :github} == task |> Task.Service.update(@update_attrs)
207+
assert {:error, :github} == task |> Tasks.update_task(@update_attrs)
208208
end
209209

210210
updated_task = Repo.one(Task)

0 commit comments

Comments
 (0)