wolfiton

wolfiton

Phoenix inside out exercise stuck on test

Hi everyone,

I have a problem of understanding how this test should like on chapter 8 My order exercise here https://shankardevy.com/phoenix-inside-out-mpf/#chapter-8

Question

I created my test like so

test "get_order/1" do
    assert %Order{status: "Confirmed"} = Sales.get_order()
end

But I don’t understand how to get the order for the current user without using Repo or conn here?

Expected result:
To get the order history of the current user in this test.

Thanks in advance for any hints or directions.

Update I started to write something like this

test "create_order" do
    @valid_attrs %{
      "order_id" => 1
       "status" => "Confirmed"
    }
  end

Didn’t work because I don’t have a create order func in my schema can someone show me what i am doing wrong?

Thanks, because i really want to understand how to build this test correctly.

Most Liked

al2o3cr

al2o3cr

It’s hard to know for sure without more code, but I’ll take some guesses.

Sales.get_order is a context function - it likely uses your Repo under the hood.

That function can’t take zero args - which order is it getting? For what user? You’ll likely want to pass in the user.

The setup functions in your test file should be setting up things like the current user and orders then passing them into the tests like:

test "get_order/1", %{current_user: current_user} do
  assert %Order{status: "Confirmed"} = Sales.get_order(current_user)
end

I’m also not sure if get_order is the right name; chapter 8 talks about viewing the user’s order history, so the logical thing to return is a list of orders - something like Sales.get_orders(user)

I don’t understand what the intent of this code is, or how exactly it would fail. You’ll get more effective help if you show complete code examples (instead of fragments) and specific error messages (instead of “didn’t work”).

al2o3cr

al2o3cr

Looking at the commit history for that repo, I don’t see any code for this particular exercise - the “My Orders” link doesn’t appear, for instance. There also aren’t any tests for controller actions that need an authenticated user, or for context functions that expect a customer…

My reading of the style suggested in that tutorial suggests you’ll want to add a bunch of things:

  • code in the CRM context to find all orders given a customer, and a particular order given an ID and a customer

  • tests for the new CRM functions. If there were tests for CRM.get_customer_ticket!, I’d recommend that you follow those - but the generated tests were deleted without replacement.

  • a controller that handles showing an index of the user’s orders and individual ones, based on conn.assigns.current_customer. It will look a lot like TicketController.

  • an acceptance test that interacts with those controller actions. Again, there aren’t any examples in that repo of this kind of test. You’ll need to dig into the Hound docs to figure out how to set up the session correctly with customer_id, or simulate going through the login flow by hand.

Last Post!

wolfiton

wolfiton

Thanks i will read programming phoenix 1.4 hopefully, after that i can come back and complete the rest of the book and add tests as they should be.

Where Next?

Popular in Chat/Questions Top

maqbool
what books/Resources do you recommend to learn about distributed system(theory)?
New
boddhisattva
Greetings everyone, At my current workplace we’re evaluating different ways of building a microservices architecture for some parts rela...
New
rafaellcustodio
Hi sasajuric, any chance of a fresh promo code? :sunglasses:
New
Fl4m3Ph03n1x
Background I have been reading quite a lot about design and architecture in Elixir and overall FP. My latest incursions took to me the On...
New
Chawki
hi,i’m new to programming world i had learned front-end( javascript,react.js) and i wanna learn a back-end programming language i thought...
New
pdgonzalez872
Do we have a list of academic/research papers: about Elixir/Erlang? that use Elixir/Erlang? about the Beam? If so, could you please po...
New
Twfo326
As a novice dev I’m trying to keep the curriculum as lean as possible. My requirements are modest: build simple CRUD apps with Phoenix...
New

Other popular topics Top

minhajuddin
I have seen a lot of code which picks the first element from a list using Enum.at(0) instead of List.first. Is there a reason why people ...
New
jononomo
I am trying to figure out how Mix knows whether the environment is test, dev, or prod – where is this set? Thanks.
New
hariharasudhan94
Lets say I have map like this fetching from my database %{"_id" => #BSON.ObjectId<58eb1a7a9ad169198c3dXXXX>, "email" => ...
New
bsollish-terakeet
Credo is smart enough to check for (something like) this: assert length(the_list) == 0 with this response: Checking if an enum is empt...
New
shijith.k
I am trying to start a new phoenix project with elixir 1.9, but mix phx.new does not work. It says that ** (Mix) The task "phx.new" could...
New
SoCreat
i’m a new one to elixir which editor can i use vs code? or atom? Thanks! :smiley:
New

We're in Beta

About us Mission Statement