mirror of
https://github.com/ash-project/ash.git
synced 2024-09-20 21:43:02 +12:00
97 lines
1.6 KiB
Elixir
97 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
|