zf

zenflows testing
git clone https://s.sonu.ch/~srfsh/zf.git
Log | Files | Refs | Submodules | README | LICENSE

commit 82e3944b262951f8cf5d34ef9dba85699dab5711
parent c36edb0e6e0e557ac27766e4df51a2ad9360f1e1
Author: srfsh <dev@srf.sh>
Date:   Tue, 23 Aug 2022 09:02:20 +0300

Zenflows{Test,}.VF.ProposedIntent: small improvements

Diffstat:
Msrc/zenflows/vf/proposed_intent/domain.ex | 21++++++++++++---------
Msrc/zenflows/vf/proposed_intent/resolv.ex | 20++++++++++----------
Mtest/vf/proposed_intent/domain.test.exs | 17++++++++---------
3 files changed, 30 insertions(+), 28 deletions(-)

diff --git a/src/zenflows/vf/proposed_intent/domain.ex b/src/zenflows/vf/proposed_intent/domain.ex @@ -20,6 +20,7 @@ defmodule Zenflows.VF.ProposedIntent.Domain do alias Ecto.Multi alias Zenflows.DB.Repo +alias Zenflows.GQL.Paging alias Zenflows.VF.ProposedIntent @typep repo() :: Ecto.Repo.t() @@ -27,20 +28,22 @@ alias Zenflows.VF.ProposedIntent @typep id() :: Zenflows.DB.Schema.id() @typep params() :: Zenflows.DB.Schema.params() -@spec one(repo(), id()) :: {:ok, ProposedIntent.t()} | {:error, String.t()} -def one(repo \\ Repo, id) do - one_by(repo, id: id) -end - -@spec one_by(repo(), map() | Keyword.t()) +@spec one(repo(), id() | map() | Keyword.t()) :: {:ok, ProposedIntent.t()} | {:error, String.t()} -def one_by(repo \\ Repo, clauses) do +def one(repo \\ Repo, _) +def one(repo, id) when is_binary(id), do: one(repo, id: id) +def one(repo, clauses) do case repo.get_by(ProposedIntent, clauses) do nil -> {:error, "not found"} found -> {:ok, found} end end +@spec all(Paging.params()) :: Paging.result(ProposedIntent.t()) +def all(params) do + Paging.page(ProposedIntent, params) +end + @spec create(params()) :: {:ok, ProposedIntent.t()} | {:error, chgset()} def create(params) do Multi.new() @@ -57,8 +60,8 @@ end def delete(id) do Multi.new() |> Multi.put(:id, id) - |> Multi.run(:one, &one_by/2) - |> Multi.delete(:delete, &(&1.one)) + |> Multi.run(:one, &one/2) + |> Multi.delete(:delete, & &1.one) |> Repo.transaction() |> case do {:ok, %{delete: pi}} -> {:ok, pi} diff --git a/src/zenflows/vf/proposed_intent/resolv.ex b/src/zenflows/vf/proposed_intent/resolv.ex @@ -20,16 +20,6 @@ defmodule Zenflows.VF.ProposedIntent.Resolv do alias Zenflows.VF.ProposedIntent.Domain -def published_in(prop_int, _, _) do - prop_int = Domain.preload(prop_int, :published_in) - {:ok, prop_int.published_in} -end - -def publishes(prop_int, _, _) do - prop_int = Domain.preload(prop_int, :publishes) - {:ok, prop_int.publishes} -end - def propose_intent(params, _) do with {:ok, prop_int} <- Domain.create(params) do {:ok, %{proposed_intent: prop_int}} @@ -41,4 +31,14 @@ def delete_proposed_intent(%{id: id}, _) do {:ok, true} end end + +def published_in(prop_int, _, _) do + prop_int = Domain.preload(prop_int, :published_in) + {:ok, prop_int.published_in} +end + +def publishes(prop_int, _, _) do + prop_int = Domain.preload(prop_int, :publishes) + {:ok, prop_int.publishes} +end end diff --git a/test/vf/proposed_intent/domain.test.exs b/test/vf/proposed_intent/domain.test.exs @@ -34,7 +34,6 @@ setup do published_in_id: Factory.insert!(:proposal).id, }, inserted: Factory.insert!(:proposed_intent), - id: Factory.id(), } end @@ -43,17 +42,17 @@ describe "one/1" do assert {:ok, %ProposedIntent{}} = Domain.one(id) end - test "with bad id: doesn't find the ProposedIntent", %{id: id} do - assert {:error, "not found"} = Domain.one(id) + test "with bad id: doesn't find the ProposedIntent" do + assert {:error, "not found"} = Domain.one(Factory.id()) end end describe "create/1" do test "with good params: creates a ProposedIntent", %{params: params} do - assert {:ok, %ProposedIntent{} = prop_int} = Domain.create(params) - assert prop_int.reciprocal == params.reciprocal - assert prop_int.publishes_id == params.publishes_id - assert prop_int.published_in_id == params.published_in_id + assert {:ok, %ProposedIntent{} = new} = Domain.create(params) + assert new.reciprocal == params.reciprocal + assert new.publishes_id == params.publishes_id + assert new.published_in_id == params.published_in_id end test "with bad params: doesn't create a ProposedIntent" do @@ -67,8 +66,8 @@ describe "delete/1" do assert {:error, "not found"} = Domain.one(id) end - test "with bad id: doesn't delete the ProposedIntent", %{id: id} do - assert {:error, "not found"} = Domain.delete(id) + test "with bad id: doesn't delete the ProposedIntent" do + assert {:error, "not found"} = Domain.delete(Factory.id()) end end