I’ve added a check to make sure the user is in the database:
test "list_orders/0 returns all orders" do
#user = insert!(:user_with_orders)
{:ok, user} = %User{}
|> User.changeset(@user_attrs)
|> Repo.insert()
assert user = Accounts.get_user!(user.id)
IO.inspect(user)
changeset = %Order{}
|> Order.changeset(@valid_attrs)
|> Ecto.Changeset.put_change(:user_id, user.id)
{:ok, order} = Repo.insert(changeset)
assert MWS.list_orders() == [order]
end
And, here’s the stack trace:
* test orders list_orders/0 returns all orders%BarronWatchCompany.Accounts.User{
__meta__: #Ecto.Schema.Metadata<:loaded, "users">,
encrypted_password: "$2b$12$TO1.pVVTkfV8ntK0kt8/Ie.mfCBo9YqKwW1RD9EbJimI/EEfNs8HG",
id: 108,
inserted_at: ~N[2019-10-16 20:28:33],
mws_token: "some mwstoken",
orders: #Ecto.Association.NotLoaded<association :orders is not loaded>,
updated_at: ~N[2019-10-16 20:28:33],
username: "some username"
}
* test orders list_orders/0 returns all orders (432.2ms)
1) test orders list_orders/0 returns all orders (BarronWatchCompany.MWSTest)
test/barron_watch_company/mws/mws_test.exs:67
** (MatchError) no match of right hand side value: {:error, #Ecto.Changeset<action: :insert, changes: %{amazon_order_id: "some amazon_order_id", buyer_email: "some buyer_email", buyer_name: "some buyer_name", earliest_delivery_date: "some earliest_delivery_date", last_update_date: "some last_update_date", latest_delivery_date: "some latest_delivery_date", order_status: "some order_status", order_total: "some order_total", purchase_date: "some purchase_date", user_id: 108}, errors: [user_id: {"does not exist", [constraint: :foreign, constraint_name: "orders_user_id_fkey"]}], data: #BarronWatchCompany.MWS.Order<>, valid?: false>}
code: {:ok, order} = Repo.insert(changeset)
stacktrace:
test/barron_watch_company/mws/mws_test.exs:83: (test)
--max-failures reached, aborting test suite
Finished in 0.9 seconds
7 tests, 1 failure
Randomized with seed 0
The MatchError
is complaining about the same user.id
:
** (MatchError) no match of right hand side value: {:error, #Ecto.Changeset<action: :insert, changes: %{... user_id: 108}, errors: [user_id: {"does not exist", [constraint: :foreign, constraint_name: "orders_user_id_fkey"]}], data: #BarronWatchCompany.MWS.Order<>, valid?: false>}