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:
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