mirror of
https://codeberg.org/JasterV/spazio-solazzo.git
synced 2026-04-27 02:25:40 +00:00
51 lines
1.7 KiB
Elixir
51 lines
1.7 KiB
Elixir
defmodule SpazioSolazzo.BookingSystem.AssetTest do
|
|
use ExUnit.Case, async: true
|
|
use SpazioSolazzo.DataCase
|
|
|
|
alias SpazioSolazzo.BookingSystem
|
|
alias SpazioSolazzo.BookingSystem.Asset
|
|
|
|
setup do
|
|
{:ok, space} = BookingSystem.create_space("AssetSpace", "assetspace", "desc")
|
|
%{space: space}
|
|
end
|
|
|
|
test "prevents duplicate asset names within the system", %{space: space} do
|
|
assert {:ok, _} = BookingSystem.create_asset("T1", space.id)
|
|
assert {:error, error} = BookingSystem.create_asset("T1", space.id)
|
|
|
|
message = Ash.Error.error_descriptions(error)
|
|
|
|
assert String.contains?(message, "already been taken")
|
|
end
|
|
|
|
test "allows same asset name for different spaces", %{space: space} do
|
|
assert {:ok, _} = BookingSystem.create_asset("T1", space.id)
|
|
|
|
# create another space
|
|
{:ok, other_space} = BookingSystem.create_space("OtherSpace", "otherspace", "desc")
|
|
|
|
# same name in different space should succeed
|
|
assert {:ok, _} = BookingSystem.create_asset("T1", other_space.id)
|
|
end
|
|
|
|
test "can get single asset by space id", %{space: space} do
|
|
assert {:ok, expected_asset} = BookingSystem.create_asset("T1", space.id)
|
|
assert {:ok, asset} = BookingSystem.get_asset_by_space_id(space.id)
|
|
assert asset.id == expected_asset.id
|
|
end
|
|
|
|
test "can get multiple assets by space id", %{space: space} do
|
|
assert {:ok, _} = BookingSystem.create_asset("T1", space.id)
|
|
assert {:ok, _} = BookingSystem.create_asset("T2", space.id)
|
|
assert {:ok, _} = BookingSystem.create_asset("T3", space.id)
|
|
|
|
assert {:ok,
|
|
[
|
|
%Asset{name: "T1"},
|
|
%Asset{name: "T2"},
|
|
%Asset{name: "T3"}
|
|
]} =
|
|
BookingSystem.get_space_assets(space.id)
|
|
end
|
|
end
|