Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
62 changes: 59 additions & 3 deletions apps/snitch_core/test/data/model/order_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -28,21 +28,40 @@ defmodule Snitch.Data.Model.OrderTest do
end

describe "create_for_guest/3" do
test "with valid data", %{order_params: params, variants: vs} do
{:ok, order} = Order.create(params)
test "with valid params", %{order_params: params, variants: vs} do
{:ok, order} =
params
|> Map.put_new(:state, "confirmed")
|> Order.create_for_guest()

assert length(order.line_items) == length(vs)
end

test "without line_items", %{order_params: params} do
{:ok, order} =
params
|> Map.put_new(:state, "confirmed")
|> Map.put(:line_items, [])
|> Order.create()
|> Order.create_for_guest()

assert [] = order.line_items
end
end

describe "user_order/1" do
test "returns an order", %{order_params: order_params} do
{:ok, order} = Order.create(order_params)
{:ok, returned_order} = Order.user_order(order.user_id)
assert returned_order.id == order.id
end

test "returns a guest order", %{order_params: params} do
{:ok, order} = Order.create_guest_order()
{:ok, returned_order} = Order.user_order(params.user_id)
assert returned_order.user_id != nil
end
end

describe "update/3" do
test "add some line_items", %{order_params: order_params} do
{:ok, order} = Order.create(order_params)
Expand Down Expand Up @@ -129,6 +148,43 @@ defmodule Snitch.Data.Model.OrderTest do
end
end

describe "delete/1" do
test "successfully deletes an order", %{order_params: order_params} do
{:ok, order} = Order.create(order_params)
returned_order = Order.delete(order.id)
assert Order.get(order.id) == {:error, :order_not_found}
end

test "fails for invalid id" do
{:error, :order_not_found} = Order.get(-1)
end
end

describe "get/1" do
test "succesfully return an order", %{order_params: order_params} do
{:ok, order} = Order.create(order_params)
{:ok, returned_order} = Order.get(order.id)
assert returned_order.id == order.id
end

test "fails for invalid id" do
{:error, :order_not_found} == Order.get(-1)
end
end

test "get_all/0 returns all orders", %{order_params: order_params} do
{:ok, order} = Order.create(order_params)
assert Order.get_all() != []
end

test "get_all_with_preloads/1 returns an order with preloads as params", %{
order_params: order_params
} do
{:ok, order} = Order.create(order_params)
returned_order = Order.get_all_with_preloads(:line_items)
assert returned_order != []
end

describe "order" do
test "count by state", %{order_params: params, variants: vs} do
{:ok, order} = Order.create(params)
Expand Down
12 changes: 12 additions & 0 deletions apps/snitch_core/test/data/schema/order_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,18 @@ defmodule Snitch.Data.Schema.OrderTest do
cs = Order.create_changeset(build(:order), params)
assert cs.valid?
end

test "fails for non-existent user_id", %{user: user} do
params = %{
@order_params
| user_id: -1,
line_items: []
}

cs = Order.create_changeset(%Order{}, params)
{:error, changeset} = Repo.insert(cs)
assert %{user_id: ["does not exist"]} == errors_on(changeset)
end
end

describe "create_for_guest_changeset/2" do
Expand Down
2 changes: 1 addition & 1 deletion apps/snitch_core/test/support/factory/rating.ex
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ defmodule Snitch.Factory.Rating do
count = Map.get(context, :rating_option_count, 2)
[rating_options: insert_list(count, :rating_option, rating: rating)]
end

def reviews(context) do
rating_option = insert(:rating_option)
count = Map.get(context, :review_count, 1)
Expand Down