mirror of
https://github.com/ash-project/ash.git
synced 2024-09-21 05:53:06 +12:00
98 lines
1.6 KiB
Elixir
98 lines
1.6 KiB
Elixir
|
defmodule Ash.Test.PlugHelpersTest do
|
||
|
@moduledoc false
|
||
|
use ExUnit.Case, async: true
|
||
|
alias Ash.Changeset
|
||
|
import Ash.PlugHelpers
|
||
|
import Plug.Conn
|
||
|
|
||
|
def build_conn, do: Plug.Test.conn(:get, "/")
|
||
|
|
||
|
defmodule User do
|
||
|
@moduledoc false
|
||
|
use Ash.Resource, data_layer: Ash.DataLayer.Ets
|
||
|
|
||
|
ets do
|
||
|
private? true
|
||
|
end
|
||
|
|
||
|
actions do
|
||
|
read :read
|
||
|
create :create
|
||
|
end
|
||
|
|
||
|
attributes do
|
||
|
uuid_primary_key :id
|
||
|
attribute :email, :string
|
||
|
end
|
||
|
|
||
|
multitenancy do
|
||
|
strategy :attribute
|
||
|
attribute :customer_id
|
||
|
end
|
||
|
|
||
|
relationships do
|
||
|
belongs_to :customer, Customer
|
||
|
end
|
||
|
end
|
||
|
|
||
|
defmodule Customer do
|
||
|
@moduledoc false
|
||
|
use Ash.Resource, data_layer: Ash.DataLayer.Ets
|
||
|
|
||
|
ets do
|
||
|
private? true
|
||
|
end
|
||
|
|
||
|
actions do
|
||
|
read :read
|
||
|
create :create
|
||
|
end
|
||
|
|
||
|
attributes do
|
||
|
uuid_primary_key :id
|
||
|
attribute :name, :string
|
||
|
end
|
||
|
|
||
|
relationships do
|
||
|
has_many :users, User
|
||
|
end
|
||
|
end
|
||
|
|
||
|
defmodule Registry do
|
||
|
@moduledoc false
|
||
|
use Ash.Registry
|
||
|
|
||
|
entries do
|
||
|
entry Customer
|
||
|
entry User
|
||
|
end
|
||
|
end
|
||
|
|
||
|
defmodule Api do
|
||
|
@moduledoc false
|
||
|
use Ash.Api
|
||
|
|
||
|
resources do
|
||
|
registry Registry
|
||
|
end
|
||
|
end
|
||
|
|
||
|
def build_actor(attrs) do
|
||
|
attrs =
|
||
|
attrs
|
||
|
|> Map.put_new_lazy(:customer_id, fn -> build_tenant(%{name: "Deliver-yesterday"}).id end)
|
||
|
|
||
|
User
|
||
|
|> Changeset.for_create(:create, attrs, tenant: attrs.customer_id)
|
||
|
|> Api.create!()
|
||
|
end
|
||
|
|
||
|
def build_tenant(attrs) do
|
||
|
Customer
|
||
|
|> Changeset.for_create(:create, attrs)
|
||
|
|> Api.create!()
|
||
|
end
|
||
|
|
||
|
doctest Ash.PlugHelpers
|
||
|
end
|