Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions lib/diffo/provider/components/base_instance.ex
Original file line number Diff line number Diff line change
Expand Up @@ -457,6 +457,13 @@ defmodule Diffo.Provider.BaseInstance do
define :read
end

identities do
identity :unique_name_per_type, [:name] do
message "instance name must be unique"
pre_check? true
end
end

preparations do
prepare build(
load: [
Expand Down
46 changes: 44 additions & 2 deletions test/provider/instance_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -147,8 +147,50 @@ defmodule Diffo.Provider.InstanceTest do
# assert loaded_instance.specified_instance.type == :resource
# end

test "create named service instances - success - no names" do
specification =
Diffo.Provider.create_specification!(%{
name: "fibreAccess",
description: "Fibre Access Service",
category: "connectivity"
})

{:ok, _result} = Diffo.Provider.create_instance(%{specified_by: specification.id})
{:ok, _result} = Diffo.Provider.create_instance(%{specified_by: specification.id})
end

test "create named service instances - success - different names" do
specification =
Diffo.Provider.create_specification!(%{
name: "fibreAccess",
description: "Fibre Access Service",
category: "connectivity"
})

{:ok, _result} =
Diffo.Provider.create_instance(%{name: "fibreAccess 1", specified_by: specification.id})

{:ok, _result} =
Diffo.Provider.create_instance(%{name: "fibreAccess 2", specified_by: specification.id})
end

test "create named service instances - failure - duplicate names" do
specification =
Diffo.Provider.create_specification!(%{
name: "fibreAccess",
description: "Fibre Access Service",
category: "connectivity"
})

{:ok, _result} =
Diffo.Provider.create_instance(%{name: "fibreAccess 1", specified_by: specification.id})

{:error, _message} =
Diffo.Provider.create_instance(%{name: "fibreAccess 1", specified_by: specification.id})
end

test "create a service instance - failure - specification_id invalid" do
{:error, _specification} = Diffo.Provider.create_instance(%{specified_by: UUID.uuid4()})
{:error, _message} = Diffo.Provider.create_instance(%{specified_by: UUID.uuid4()})
end

test "create a service instance - failure - type not correct" do
Expand All @@ -159,7 +201,7 @@ defmodule Diffo.Provider.InstanceTest do
category: "connectivity"
})

{:error, _specification} =
{:error, _} =
Diffo.Provider.create_instance(%{
specified_by: specification.id,
type: :serviceSpecification
Expand Down