Skip to content

Commit

Permalink
Throw if user tries to register the same CQRS object twice
Browse files Browse the repository at this point in the history
  • Loading branch information
jakubfijalkowski committed Feb 7, 2024
1 parent 932ca4b commit 03011ef
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 12 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -60,12 +60,14 @@ public void AddCQRSObjects(TypesCatalog contractsCatalog, TypesCatalog handlersC

public void AddCQRSObject(CQRSObjectMetadata metadata)
{
var added = objects.Add(metadata);

if (added)
if (!objects.Add(metadata))
{
services.AddCQRSHandler(metadata);
throw new InvalidOperationException(
$"CQRS Object({metadata.ObjectKind}) {metadata.ObjectType} is already registered."
);
}

services.AddCQRSHandler(metadata);
}

private static bool ValidateContractType(TypeInfo type)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ public void Objects_are_registered_in_di_container()
}

[Fact]
public void Same_objects_are_not_registered_multiple_times()
public void Duplicate_objects_cannot_be_registered()
{
var registrationSource = new CQRSObjectsRegistrationSource(services);

Expand All @@ -59,13 +59,12 @@ public void Same_objects_are_not_registered_multiple_times()
);
var firstCount = registrationSource.Objects.Count;

registrationSource.AddCQRSObjects(
TypesCatalog.Of<CQRSObjectsRegistrationSourceTests>(),
TypesCatalog.Of<CQRSObjectsRegistrationSourceTests>()
);
var secondCount = registrationSource.Objects.Count;

firstCount.Should().Be(secondCount);
var act = () =>
registrationSource.AddCQRSObjects(
TypesCatalog.Of<CQRSObjectsRegistrationSourceTests>(),
TypesCatalog.Of<CQRSObjectsRegistrationSourceTests>()
);
act.Should().Throw<InvalidOperationException>();
}

private void AssertRegistered<TQuery, TResult, THandler>()
Expand Down

0 comments on commit 03011ef

Please sign in to comment.