Skip to content

Commit 8185125

Browse files
committed
fix: update tests to validate status
1 parent 89e6266 commit 8185125

6 files changed

Lines changed: 41 additions & 19 deletions

File tree

.idea/.gitignore

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/dataSources.xml

Lines changed: 11 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/api_ecommerce/auth/user.ex

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ defmodule ApiEcommerce.Auth.User do
77
schema "users" do
88
field :name, :string
99
field :email, :string
10-
field :role, RoleEnum, default: 0
11-
field :status, StatusEnum, default: 0
10+
field :role, RoleEnum, default: :member
11+
field :status, StatusEnum, default: :active
1212
field :recovery_token, :string
1313
field :recovery_token_created_at, :naive_datetime
1414
field :password_hash, :string
@@ -21,8 +21,8 @@ defmodule ApiEcommerce.Auth.User do
2121
@doc false
2222
def changeset(user, attrs) do
2323
user
24-
|> cast(attrs, [:name, :email, :status, :role, :password])
25-
|> validate_required([:email, :status, :role, :password])
24+
|> cast(attrs, [:name, :email, :status, :role, :password, :password_confirmation])
25+
|> validate_required([:email, :status, :role, :password, :password_confirmation])
2626
|> validate_format(:email, ~r/@/)
2727
|> validate_length(:password, min: 6)
2828
|> validate_confirmation(:password) # Check that password === password_confirmation
@@ -31,7 +31,9 @@ defmodule ApiEcommerce.Auth.User do
3131
end
3232

3333
defp put_password_hash(%Ecto.Changeset{valid?: true, changes: %{password: password}} = changeset) do
34-
change(changeset, Bcrypt.add_hash(password))
34+
changeset
35+
|> change(Bcrypt.add_hash(password))
36+
|> change(%{password_confirmation: nil})
3537
end
3638

3739
defp put_password_hash(changeset) do

lib/api_ecommerce_web/views/user_view.ex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,6 @@ defmodule ApiEcommerceWeb.UserView do
1818
end
1919

2020
def render("user.json", %{user: user}) do
21-
%{id: user.id, email: user.email, is_active: user.is_active}
21+
%{id: user.id, email: user.email, status: user.status}
2222
end
2323
end

test/api_ecommerce/auth_test.exs

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,18 @@ defmodule ApiEcommerce.AuthTest do
77
alias ApiEcommerce.Auth.User
88

99
@valid_attrs %{
10+
name: "some name",
1011
email: "some@email",
11-
is_active: true,
12+
status: :active,
13+
role: :member,
1214
password: "some password",
1315
password_confirmation: "some password"
1416
}
1517
@update_attrs %{
18+
name: "some updated name",
1619
email: "some@updated.email",
17-
is_active: false,
20+
status: :deleted,
21+
role: :admin,
1822
password: "some updated password",
1923
password_confirmation: "some updated password"
2024
}
@@ -41,8 +45,10 @@ defmodule ApiEcommerce.AuthTest do
4145

4246
test "create_user/1 with valid data creates a user" do
4347
assert {:ok, %User{} = user} = Auth.create_user(@valid_attrs)
48+
assert user.name == @valid_attrs.name
4449
assert user.email == @valid_attrs.email
45-
assert user.is_active == @valid_attrs.is_active
50+
assert user.status == @valid_attrs.status
51+
assert user.role == @valid_attrs.role
4652
assert Bcrypt.verify_pass(@valid_attrs.password, user.password_hash)
4753
end
4854

@@ -53,8 +59,10 @@ defmodule ApiEcommerce.AuthTest do
5359
test "update_user/2 with valid data updates the user" do
5460
user = user_fixture()
5561
assert {:ok, %User{} = user} = Auth.update_user(user, @update_attrs)
62+
assert user.name == @update_attrs.name
5663
assert user.email == @update_attrs.email
57-
assert user.is_active == @update_attrs.is_active
64+
assert user.status == @update_attrs.status
65+
assert user.role == @update_attrs.role
5866
assert Bcrypt.verify_pass(@update_attrs.password, user.password_hash)
5967
end
6068

@@ -80,7 +88,7 @@ defmodule ApiEcommerce.AuthTest do
8088
user = user_fixture()
8189
assert {:error, "Wrong username or password"} = Auth.authenticate_user("wrong email", "")
8290
assert {:ok, authenticated_user} = Auth.authenticate_user(user.email, @valid_attrs.password)
83-
assert %{user | password: nil} == authenticated_user
91+
assert %{user | password: nil, password_confirmation: nil} == authenticated_user
8492
end
8593
end
8694
end

test/api_ecommerce_web/controllers/user_controller_test.exs

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,21 +6,19 @@ defmodule ApiEcommerceWeb.UserControllerTest do
66

77
@create_attrs %{
88
email: "some@email",
9-
is_active: true,
109
password: "some password",
1110
password_confirmation: "some password"
1211
}
1312
@update_attrs %{
1413
email: "some@updated.email",
15-
is_active: false,
1614
password: "some updated password",
1715
password_confirmation: "some updated password"
1816
}
1917
@invalid_attrs %{email: nil, is_active: nil, password: nil}
2018
@current_user_attrs %{
2119
email: "some_current@user.email",
22-
is_active: true,
23-
password: "some current user password"
20+
password: "some current user password",
21+
password_confirmation: "some current user password"
2422
}
2523

2624
def fixture(:user) do
@@ -45,7 +43,7 @@ defmodule ApiEcommerceWeb.UserControllerTest do
4543
%{
4644
"id" => current_user.id,
4745
"email" => current_user.email,
48-
"is_active" => current_user.is_active
46+
"status" => current_user.status |> Atom.to_string()
4947
}
5048
]
5149
end
@@ -61,7 +59,7 @@ defmodule ApiEcommerceWeb.UserControllerTest do
6159
assert json_response(conn, 200)["data"] == %{
6260
"id" => id,
6361
"email" => @create_attrs.email,
64-
"is_active" => @create_attrs.is_active,
62+
"status" => "active",
6563
}
6664
end
6765

@@ -83,7 +81,7 @@ defmodule ApiEcommerceWeb.UserControllerTest do
8381
assert json_response(conn, 200)["data"] == %{
8482
"id" => id,
8583
"email" => @update_attrs.email,
86-
"is_active" => @update_attrs.is_active
84+
"status" => user.status |> Atom.to_string()
8785
}
8886
end
8987

@@ -113,7 +111,7 @@ defmodule ApiEcommerceWeb.UserControllerTest do
113111

114112
assert json_response(conn, 200)["data"] == %{
115113
"id" => current_user.id,
116-
"is_active" => current_user.is_active,
114+
"status" => current_user.status |> Atom.to_string(),
117115
"email" => current_user.email}
118116
end
119117

0 commit comments

Comments
 (0)