Hi there…
Are fixtures given any special treatment by elixir or is it just a name that everyone is familiar with?
I am going through the auto generated tests that Elixir creates and see it creates a fixture() function, but wasn’t sure this is a familiar name or something that is evaluated by ExUnit.
I see that fixtures are commonly defined as fixture(:some_atom)… what is the purpose of this? What advantage does this have over defining the function fixture_create_some_atom()?
I am trying to up my game when it comes to Elixir testing, so here is my first test that makes sure my function selects items between certain dates (including start and end date):
defmodule InterimCrmWeb.ExportControllerTest do
use InterimCrmWeb.ConnCase
alias InterimCrm.Data
@create_start_attrs %{address: "some address", company: "some company", email: "some email", first_name: "some first_name", hear_about_us: "some hear_about_us", invite_to_feefo: true, invoice_number: "some invoice_number start", last_name: "some last_name", order_date: ~D[2010-05-01], phone: "some phone", post_code: "some post_code", state: "some state", suburb: "some suburb"}
@create_middle_attrs %{address: "some address", company: "some company", email: "some email", first_name: "some first_name", hear_about_us: "some hear_about_us", invite_to_feefo: true, invoice_number: "some invoice_number middle", last_name: "some last_name", order_date: ~D[2010-05-01], phone: "some phone", post_code: "some post_code", state: "some state", suburb: "some suburb"}
@create_end_attrs %{address: "some address", company: "some company", email: "some email", first_name: "some first_name", hear_about_us: "some hear_about_us", invite_to_feefo: true, invoice_number: "some invoice_number end", last_name: "some last_name", order_date: ~D[2010-05-31], phone: "some phone", post_code: "some post_code", state: "some state", suburb: "some suburb"}
@create_attrs %{address: "some address", company: "some company", email: "some email", first_name: "some first_name", hear_about_us: "some hear_about_us", invite_to_feefo: true, invoice_number: "some invoice_number", last_name: "some last_name", order_date: ~D[2010-04-01], phone: "some phone", post_code: "some post_code", state: "some state", suburb: "some suburb"}
def fixture_create_dated_orders() do
Data.create_order(@create_start_attrs)
Data.create_order(@create_middle_attrs)
Data.create_order(@create_end_attrs)
Data.create_order(@create_attrs)
end
test "gets orders between specific dates" do
fixture_create_dated_orders()
orders = Data.list_orders_between(@create_start_attrs.order_date,@create_end_attrs.order_date)
assert length(orders) == 3
end
end
Cheers,
Nathan