Skip to content

Commit bef8225

Browse files
authored
Merge pull request #64 from epochtalk/user-created-at
User created at
2 parents 992efb2 + 9b8e7d2 commit bef8225

File tree

2 files changed

+15
-0
lines changed

2 files changed

+15
-0
lines changed

lib/epochtalk_server/models/user.ex

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,14 @@ defmodule EpochtalkServer.Models.User do
8484
"""
8585
@spec registration_changeset(user :: t(), attrs :: map() | nil) :: Ecto.Changeset.t()
8686
def registration_changeset(user, attrs) do
87+
now = NaiveDateTime.truncate(NaiveDateTime.utc_now(), :second)
88+
89+
# set timestamps
90+
user =
91+
user
92+
|> Map.put(:created_at, now)
93+
|> Map.put(:updated_at, now)
94+
8795
user
8896
|> cast(attrs, [
8997
:id,

test/epochtalk_server_web/controllers/user_test.exs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
defmodule Test.EpochtalkServerWeb.Controllers.User do
22
use Test.Support.ConnCase, async: true
3+
# for mocking,
4+
use Mimic
35
import Ecto.Changeset
46
alias EpochtalkServer.Models.User
57
alias EpochtalkServer.Models.Ban
@@ -82,13 +84,18 @@ defmodule Test.EpochtalkServerWeb.Controllers.User do
8284
password: "password"
8385
}
8486

87+
mocked_date = ~N[2000-01-01 00:00:00.000000]
88+
expect(NaiveDateTime, :utc_now, fn -> mocked_date end)
89+
8590
response =
8691
conn
8792
|> post(Routes.user_path(conn, :register, register_attrs))
8893
|> json_response(200)
8994

9095
{:ok, registered_user} = User.by_username(register_attrs.username)
9196
assert response["id"] == registered_user.id
97+
assert registered_user.created_at == mocked_date |> NaiveDateTime.truncate(:second)
98+
assert registered_user.updated_at == mocked_date |> NaiveDateTime.truncate(:second)
9299
end
93100

94101
test "when email is already taken, errors", %{

0 commit comments

Comments
 (0)