Isdriai
Errors during tests when I add a Ecto.Enum to a schema
Hi !
I’m new in Elixir/Phoenix world,
I started a project and now, I would like add a new attribute to a schema, but this attribute must be an Enum. I saw Ecto.Enum for that, So I added an Ecto.Enum, I did a migration and when I run my server, It’s ok, I have my datas with the new attribute. But when I run tests, there are errors ![]()
I put my github’s project link because I don’t see to put my code here:
https://github.com/PicotRodolphe/cym
I think error or errors are into these files:
users_test.exs
users_controller_test.exs
user.ex
users.ex
Thanks for your help ![]()
Ps: my errors during tests:
mix test
Compiling 1 file (.ex)
warning: function embed_as/1 required by behaviour Ecto.Type is not implemented (in module Cym.Users.User.Type)
lib/chooseYourMis/users/user.ex:7: Cym.Users.User.Type (module)
warning: function equal?/2 required by behaviour Ecto.Type is not implemented (in module Cym.Users.User.Type)
lib/chooseYourMis/users/user.ex:7: Cym.Users.User.Type (module)
..
-
test users get_user!/1 returns the user with given id (Cym.UsersTest)
test/chooseYourMis/users_test.exs:27
** (MatchError) no match of right hand side value: {:error, #Ecto.Changeset<action: :insert, changes: %{firstName: “some firstName”, lastName: “some lastName”, mail: “some mail”}, errors:
[type: {“is invalid”, [type: Cym.Users.User.Type, validation: :cast]}], data: #Cym.Users.User<>, valid?: false>}
code: user = user_fixture()
stacktrace:
test/chooseYourMis/users_test.exs:14: Cym.UsersTest.user_fixture/1
test/chooseYourMis/users_test.exs:28: (test) -
test users create_user/1 with valid data creates a user (Cym.UsersTest)
test/chooseYourMis/users_test.exs:32
match (=) failed
code: assert {:ok, %User{} = user} = Users.create_user(@valid_attrs)
right: {:error,
#Ecto.Changeset<
action: :insert,
changes: %{firstName: “some firstName”, lastName: “some lastName”, mail: “some mail”},
errors: [type: {“is invalid”, [type: Cym.Users.User.Type, validation: :cast]}],
data: #Cym.Users.User<>,
valid?: false
>}
stacktrace:
test/chooseYourMis/users_test.exs:33: (test) -
test users update_user/2 with valid data updates the user (Cym.UsersTest)
test/chooseYourMis/users_test.exs:44
** (MatchError) no match of right hand side value: {:error, #Ecto.Changeset<action: :insert, changes: %{firstName: “some firstName”, lastName: “some lastName”, mail: “some mail”}, errors: [type: {“is invalid”, [type: Cym.Users.User.Type, validation: :cast]}], data: #Cym.Users.User<>, valid?: false>}
code: user = user_fixture()
stacktrace:
test/chooseYourMis/users_test.exs:14: Cym.UsersTest.user_fixture/1
test/chooseYourMis/users_test.exs:45: (test) -
test users list_users/0 returns all users (Cym.UsersTest)
test/chooseYourMis/users_test.exs:22
** (MatchError) no match of right hand side value: {:error, #Ecto.Changeset<action: :insert, changes: %{firstName: “some firstName”, lastName: “some lastName”, mail: “some mail”}, errors: [type: {“is invalid”, [type: Cym.Users.User.Type, validation: :cast]}], data: #Cym.Users.User<>, valid?: false>}
code: user = user_fixture()
stacktrace:
test/chooseYourMis/users_test.exs:14: Cym.UsersTest.user_fixture/1
test/chooseYourMis/users_test.exs:23: (test)
.
-
test users delete_user/1 deletes the user (Cym.UsersTest)
test/chooseYourMis/users_test.exs:59
** (MatchError) no match of right hand side value: {:error, #Ecto.Changeset<action: :insert, changes: %{firstName: “some firstName”, lastName: “some lastName”, mail: “some mail”}, errors: [type: {“is invalid”, [type: Cym.Users.User.Type, validation: :cast]}], data: #Cym.Users.User<>, valid?: false>}
code: user = user_fixture()
stacktrace:
test/chooseYourMis/users_test.exs:14: Cym.UsersTest.user_fixture/1
test/chooseYourMis/users_test.exs:60: (test) -
test users change_user/1 returns a user changeset (Cym.UsersTest)
test/chooseYourMis/users_test.exs:65
** (MatchError) no match of right hand side value: {:error, #Ecto.Changeset<action: :insert, changes: %{firstName: “some firstName”, lastName: “some lastName”, mail: “some mail”}, errors: [type: {“is invalid”, [type: Cym.Users.User.Type, validation: :cast]}], data: #Cym.Users.User<>, valid?: false>}
code: user = user_fixture()
stacktrace:
test/chooseYourMis/users_test.exs:14: Cym.UsersTest.user_fixture/1
test/chooseYourMis/users_test.exs:66: (test) -
test users update_user/2 with invalid data returns error changeset (Cym.UsersTest)
test/chooseYourMis/users_test.exs:53
** (MatchError) no match of right hand side value: {:error, #Ecto.Changeset<action: :insert, changes: %{firstName: “some firstName”, lastName: “some lastName”, mail: “some mail”}, errors: [type: {“is invalid”, [type: Cym.Users.User.Type, validation: :cast]}], data: #Cym.Users.User<>, valid?: false>}
code: user = user_fixture()
stacktrace:
test/chooseYourMis/users_test.exs:14: Cym.UsersTest.user_fixture/1
test/chooseYourMis/users_test.exs:54: (test)
..
-
test create user renders user when data is valid (CymWeb.UserControllerTest)
test/chooseYourMis_web/controllers/user_controller_test.exs:38
** (RuntimeError) expected response with status 201, got: 422, with body:
{“errors”:{“type”:[“is invalid”]}}
code: assert %{“id” => id} = json_response(conn, 201)[“data”]
stacktrace:
(phoenix) lib/phoenix/test/conn_test.ex:373: Phoenix.ConnTest.response/2
(phoenix) lib/phoenix/test/conn_test.ex:419: Phoenix.ConnTest.json_response/2
test/chooseYourMis_web/controllers/user_controller_test.exs:40: (test) -
test update user renders errors when data is invalid (CymWeb.UserControllerTest)
test/chooseYourMis_web/controllers/user_controller_test.exs:77
** (MatchError) no match of right hand side value: {:error, #Ecto.Changeset<action: :insert, changes: %{firstName: “some firstName”, lastName: “some lastName”, mail: “some mail”}, errors: [type: {“is invalid”, [type: Cym.Users.User.Type, validation: :cast]}], data: #Cym.Users.User<>, valid?: false>}
stacktrace:
test/chooseYourMis_web/controllers/user_controller_test.exs:22: CymWeb.UserControllerTest.fixture/1
test/chooseYourMis_web/controllers/user_controller_test.exs:97: CymWeb.UserControllerTest.create_user/1
test/chooseYourMis_web/controllers/user_controller_test.exs:1: CymWeb.UserControllerTest.ex_unit/2 -
test delete user deletes chosen user (CymWeb.UserControllerTest)
test/chooseYourMis_web/controllers/user_controller_test.exs:86
** (MatchError) no match of right hand side value: {:error, #Ecto.Changeset<action: :insert, changes: %{firstName: “some firstName”, lastName: “some lastName”, mail: “some mail”}, errors: [type: {“is invalid”, [type: Cym.Users.User.Type, validation: :cast]}], data: #Cym.Users.User<>, valid?: false>}
stacktrace:
test/chooseYourMis_web/controllers/user_controller_test.exs:22: CymWeb.UserControllerTest.fixture/1
test/chooseYourMis_web/controllers/user_controller_test.exs:97: CymWeb.UserControllerTest.create_user/1
test/chooseYourMis_web/controllers/user_controller_test.exs:1: CymWeb.UserControllerTest.ex_unit/2 -
test update user renders user when data is valid (CymWeb.UserControllerTest)
test/chooseYourMis_web/controllers/user_controller_test.exs:62
** (MatchError) no match of right hand side value: {:error, #Ecto.Changeset<action: :insert, changes: %{firstName: “some firstName”, lastName: “some lastName”, mail: “some mail”}, errors: [type: {“is invalid”, [type: Cym.Users.User.Type, validation: :cast]}], data: #Cym.Users.User<>, valid?: false>}
stacktrace:
test/chooseYourMis_web/controllers/user_controller_test.exs:22: CymWeb.UserControllerTest.fixture/1
test/chooseYourMis_web/controllers/user_controller_test.exs:97: CymWeb.UserControllerTest.create_user/1
test/chooseYourMis_web/controllers/user_controller_test.exs:1: CymWeb.UserControllerTest.ex_unit/2
…
Finished in 0.2 seconds
30 tests, 11 failures
Randomized with seed 429207
Most Liked
Eiji
Please take a look at changes in my PR:
Popular in Questions
Other popular topics
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #deployment
- #library
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #channels
- #elixirconf
- #exunit
- #discussion
- #code-sync
- #javascript
- #podcasts
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #elixir-ls
- #phoenix_html
- #iex
- #blog-post
- #graphql
- #genstage
- #ai
- #websockets
- #supervisor
- #advent-of-code
- #elixirconf-us
- #distillery
- #processes
- #forms
- #api
- #metaprogramming
- #security
- #performance








