From 11a09e937bc092d9e3d42a15aa62dc0204774321 Mon Sep 17 00:00:00 2001 From: Jeshan Date: Fri, 8 Mar 2019 13:09:43 +0545 Subject: [PATCH] [#164457764] Prior to this change, Coverage was less for order's model as well as for its schema. This change Added test cases to increase the coverage. In order_test.exs(model) - Test cases added for delete/1, get/1, get_all/0 , user_order/1 and get_all_with_preloads/1 Added a test case for checking uniqueness of user_id in order_test.exs(schema) --- .../test/data/model/order_test.exs | 62 ++++++++++++++++++- .../test/data/schema/order_test.exs | 12 ++++ .../test/support/factory/rating.ex | 2 +- 3 files changed, 72 insertions(+), 4 deletions(-) diff --git a/apps/snitch_core/test/data/model/order_test.exs b/apps/snitch_core/test/data/model/order_test.exs index 3c0412cdf..58b7a82ce 100644 --- a/apps/snitch_core/test/data/model/order_test.exs +++ b/apps/snitch_core/test/data/model/order_test.exs @@ -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) @@ -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) diff --git a/apps/snitch_core/test/data/schema/order_test.exs b/apps/snitch_core/test/data/schema/order_test.exs index 28172effb..c3e5e3bfa 100644 --- a/apps/snitch_core/test/data/schema/order_test.exs +++ b/apps/snitch_core/test/data/schema/order_test.exs @@ -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 diff --git a/apps/snitch_core/test/support/factory/rating.ex b/apps/snitch_core/test/support/factory/rating.ex index d931ca29e..bd1043cea 100644 --- a/apps/snitch_core/test/support/factory/rating.ex +++ b/apps/snitch_core/test/support/factory/rating.ex @@ -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)