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
20 changes: 10 additions & 10 deletions TransactionProcessor.Aggregates.Tests/EstateAggregateTests.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
using Shouldly;
using TransactionProcessor.Models;
using TransactionProcessor.Models.Estate;
using TransactionProcessor.Testing;

namespace TransactionProcessor.Aggregates.Tests
Expand Down Expand Up @@ -72,7 +72,7 @@ public void EstateAggregate_GetEstate_NoOperators_EstateIsReturned()
EstateAggregate aggregate = EstateAggregate.Create(TestData.EstateId);
aggregate.Create(TestData.EstateName);
aggregate.GenerateReference();
TransactionProcessor.Models.Estate model = aggregate.GetEstate();
TransactionProcessor.Models.Estate.Estate model = aggregate.GetEstate();

model.EstateId.ShouldBe(TestData.EstateId);
model.Name.ShouldBe(TestData.EstateName);
Expand All @@ -88,14 +88,14 @@ public void EstateAggregate_GetEstate_WithAnOperator_EstateIsReturned()
aggregate.GenerateReference();
aggregate.AddOperator(TestData.OperatorId);

TransactionProcessor.Models.Estate model = aggregate.GetEstate();
TransactionProcessor.Models.Estate.Estate model = aggregate.GetEstate();

model.EstateId.ShouldBe(TestData.EstateId);
model.Name.ShouldBe(TestData.EstateName);
model.Reference.ShouldBe(TestData.EstateReference);
model.Operators.ShouldHaveSingleItem();

EstateOperator? @operator =model.Operators.Single();
Models.Estate.Operator? @operator =model.Operators.Single();
@operator.OperatorId.ShouldBe(TestData.OperatorId);
}

Expand All @@ -105,7 +105,7 @@ public void EstateAggregate_GetEstate_NoSecurityUsers_EstateIsReturned()
EstateAggregate aggregate = EstateAggregate.Create(TestData.EstateId);
aggregate.Create(TestData.EstateName);
aggregate.GenerateReference();
TransactionProcessor.Models.Estate model = aggregate.GetEstate();
TransactionProcessor.Models.Estate.Estate model = aggregate.GetEstate();

model.EstateId.ShouldBe(TestData.EstateId);
model.Name.ShouldBe(TestData.EstateName);
Expand All @@ -122,14 +122,14 @@ public void EstateAggregate_GetEstate_WithASecurityUser_EstateIsReturned()
aggregate.GenerateReference();
aggregate.AddSecurityUser(TestData.SecurityUserId,TestData.EstateUserEmailAddress);

TransactionProcessor.Models.Estate model = aggregate.GetEstate();
TransactionProcessor.Models.Estate.Estate model = aggregate.GetEstate();

model.EstateId.ShouldBe(TestData.EstateId);
model.Name.ShouldBe(TestData.EstateName);
model.Reference.ShouldBe(TestData.EstateReference);
model.SecurityUsers.ShouldHaveSingleItem();

SecurityUser securityUser = model.SecurityUsers.Single();
SecurityUser? securityUser = model.SecurityUsers.Single();
securityUser.SecurityUserId.ShouldBe(TestData.SecurityUserId);
securityUser.EmailAddress.ShouldBe(TestData.EstateUserEmailAddress);
}
Expand All @@ -142,7 +142,7 @@ public void EstateAggregate_AddOperatorToEstate_OperatorIsAdded()

aggregate.AddOperator(TestData.OperatorId);

TransactionProcessor.Models.Estate estate = aggregate.GetEstate();
TransactionProcessor.Models.Estate.Estate estate = aggregate.GetEstate();
estate.Operators.ShouldHaveSingleItem();
estate.Operators.Single().OperatorId.ShouldBe(TestData.OperatorId);
estate.Operators.Single().IsDeleted.ShouldBeFalse();
Expand Down Expand Up @@ -183,7 +183,7 @@ public void EstateAggregate_AddSecurityUserToEstate_SecurityUserIsAdded()
aggregate.Create(TestData.EstateName);
aggregate.AddSecurityUser(TestData.SecurityUserId, TestData.EstateUserEmailAddress);

TransactionProcessor.Models.Estate estate = aggregate.GetEstate();
TransactionProcessor.Models.Estate.Estate estate = aggregate.GetEstate();
estate.SecurityUsers.ShouldHaveSingleItem();
estate.SecurityUsers.Single().EmailAddress.ShouldBe(TestData.EstateUserEmailAddress);
}
Expand All @@ -210,7 +210,7 @@ public void EstateAggregate_RemoveOperatorFromEstate_OperatorIsAdded()

aggregate.RemoveOperator(TestData.OperatorId);

TransactionProcessor.Models.Estate estate = aggregate.GetEstate();
TransactionProcessor.Models.Estate.Estate estate = aggregate.GetEstate();
estate.Operators.ShouldHaveSingleItem();
estate.Operators.Single().IsDeleted.ShouldBeTrue();
}
Expand Down
70 changes: 70 additions & 0 deletions TransactionProcessor.Aggregates.Tests/OperatorAggregateTests.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
using Shouldly;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using TransactionProcessor.Testing;

namespace TransactionProcessor.Aggregates.Tests
{
public class OperatorAggregateTests
{
[Fact]
public void OperatorAggregate_Create_OperatorIsCreated()

Check failure on line 14 in TransactionProcessor.Aggregates.Tests/OperatorAggregateTests.cs

View check run for this annotation

Codacy Production / Codacy Static Code Analysis

TransactionProcessor.Aggregates.Tests/OperatorAggregateTests.cs#L14

Add a nested comment explaining why this method is empty, throw a 'NotSupportedException' or complete the implementation.
{

}

[Fact]
public void OperatorAggregate_CanBeCreated_IsCreated()
{
OperatorAggregate aggregate = OperatorAggregate.Create(TestData.OperatorId);

aggregate.AggregateId.ShouldBe(TestData.OperatorId);
}

[Fact]
public void OperatorAggregate_Create_IsCreated()
{
OperatorAggregate aggregate = OperatorAggregate.Create(TestData.OperatorId);
aggregate.Create(TestData.EstateId, TestData.OperatorName, TestData.RequireCustomMerchantNumber, TestData.RequireCustomTerminalNumber);

aggregate.AggregateId.ShouldBe(TestData.OperatorId);
aggregate.Name.ShouldBe(TestData.OperatorName);
aggregate.IsCreated.ShouldBeTrue();
aggregate.EstateId.ShouldBe(TestData.EstateId);
aggregate.RequireCustomTerminalNumber.ShouldBe(TestData.RequireCustomTerminalNumber);
aggregate.RequireCustomMerchantNumber.ShouldBe(TestData.RequireCustomMerchantNumber);
}

[Fact]
public void OperatorAggregate_GetOperator_OperatorIsReturned()
{
OperatorAggregate aggregate = OperatorAggregate.Create(TestData.OperatorId);
aggregate.Create(TestData.EstateId, TestData.OperatorName, TestData.RequireCustomMerchantNumber, TestData.RequireCustomTerminalNumber);
Models.Operator.Operator @operator = aggregate.GetOperator();
@operator.OperatorId.ShouldBe(TestData.OperatorId);
@operator.Name.ShouldBe(TestData.OperatorName);
@operator.RequireCustomTerminalNumber.ShouldBe(TestData.RequireCustomTerminalNumber);
@operator.RequireCustomMerchantNumber.ShouldBe(TestData.RequireCustomMerchantNumber);
}

[Fact]
public void OperatorAggregate_UpdateOperator_IsUpdated()
{
OperatorAggregate aggregate = OperatorAggregate.Create(TestData.OperatorId);
aggregate.Create(TestData.EstateId, TestData.OperatorName, TestData.RequireCustomMerchantNumberFalse, TestData.RequireCustomTerminalNumberFalse);

aggregate.Name.ShouldBe(TestData.OperatorName);
aggregate.RequireCustomTerminalNumber.ShouldBe(TestData.RequireCustomMerchantNumberFalse);
aggregate.RequireCustomMerchantNumber.ShouldBe(TestData.RequireCustomTerminalNumberFalse);

aggregate.UpdateOperator(TestData.OperatorName2, TestData.RequireCustomMerchantNumberTrue, TestData.RequireCustomTerminalNumberTrue);

aggregate.Name.ShouldBe(TestData.OperatorName2);
aggregate.RequireCustomTerminalNumber.ShouldBe(TestData.RequireCustomMerchantNumberTrue);
aggregate.RequireCustomMerchantNumber.ShouldBe(TestData.RequireCustomTerminalNumberTrue);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,16 @@
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>

<DebugType>None</DebugType>
<IsPackable>false</IsPackable>
<IsTestProject>true</IsTestProject>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="coverlet.collector" Version="6.0.0" />
<PackageReference Include="coverlet.msbuild" Version="6.0.2">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0" />
<PackageReference Include="Shouldly" Version="4.2.1" />
<PackageReference Include="xunit" Version="2.5.3" />
Expand Down
41 changes: 21 additions & 20 deletions TransactionProcessor.Aggregates/EstateAggregate.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
using Shared.DomainDrivenDesign.EventSourcing;
using Shared.EventStore.Aggregate;
using Shared.General;
using TransactionProcessor.Aggregates.Models;
using TransactionProcessor.Estate.DomainEvents;
using TransactionProcessor.Models.Estate;

namespace TransactionProcessor.Aggregates{
public static class EstateAggregateExtensions{
Expand Down Expand Up @@ -70,30 +70,30 @@
aggregate.ApplyAndAppend(estateReferenceAllocatedEvent);
}

public static TransactionProcessor.Models.Estate GetEstate(this EstateAggregate aggregate){
TransactionProcessor.Models.Estate estateModel = new TransactionProcessor.Models.Estate();
public static TransactionProcessor.Models.Estate.Estate GetEstate(this EstateAggregate aggregate){
TransactionProcessor.Models.Estate.Estate estateModel = new TransactionProcessor.Models.Estate.Estate();

estateModel.EstateId = aggregate.AggregateId;
estateModel.Name = aggregate.EstateName;
estateModel.Reference = aggregate.EstateReference;

estateModel.Operators = new List<TransactionProcessor.Models.EstateOperator>();
estateModel.Operators = new List<TransactionProcessor.Models.Estate.Operator>();
if (aggregate.Operators.Any()){

foreach (KeyValuePair<Guid, Operator> @operator in aggregate.Operators){
estateModel.Operators.Add(new TransactionProcessor.Models.EstateOperator
foreach (KeyValuePair<Guid, TransactionProcessor.Models.Estate.Operator> @operator in aggregate.Operators){
estateModel.Operators.Add(new TransactionProcessor.Models.Estate.Operator
{
OperatorId = @operator.Key,
IsDeleted = @operator.Value.IsDeleted,
});
}
}

estateModel.SecurityUsers = new List<TransactionProcessor.Models.SecurityUser>();
estateModel.SecurityUsers = new List<TransactionProcessor.Models.Estate.SecurityUser>();
if (aggregate.SecurityUsers.Any()){

foreach (KeyValuePair<Guid, Models.SecurityUser> securityUser in aggregate.SecurityUsers){
estateModel.SecurityUsers.Add(new TransactionProcessor.Models.SecurityUser
foreach (KeyValuePair<Guid, SecurityUser> securityUser in aggregate.SecurityUsers){
estateModel.SecurityUsers.Add(new TransactionProcessor.Models.Estate.SecurityUser
{
EmailAddress = securityUser.Value.EmailAddress,
SecurityUserId = securityUser.Key
Expand All @@ -104,8 +104,8 @@
return estateModel;
}

public static void PlayEvent(this EstateAggregate aggregate, SecurityUserAddedToEstateEvent domainEvent){
SecurityUser securityUser = new (domainEvent.EmailAddress);
public static void PlayEvent(this EstateAggregate aggregate, SecurityUserAddedToEstateEvent domainEvent) {
SecurityUser securityUser = new() { EmailAddress = domainEvent.EmailAddress, SecurityUserId = domainEvent.SecurityUserId };

aggregate.SecurityUsers.Add(domainEvent.SecurityUserId,securityUser);
}
Expand All @@ -124,16 +124,17 @@
/// </summary>
/// <param name="domainEvent">The domain event.</param>
public static void PlayEvent(this EstateAggregate aggregate, OperatorAddedToEstateEvent domainEvent){
Operator @operator = new ();
TransactionProcessor.Models.Estate.Operator @operator = new() {
IsDeleted = false,
OperatorId = domainEvent.OperatorId
};

aggregate.Operators.Add(domainEvent.OperatorId, @operator);
}

public static void PlayEvent(this EstateAggregate aggregate, OperatorRemovedFromEstateEvent domainEvent){
KeyValuePair<Guid, Operator> @operator = aggregate.Operators.Single(o => o.Key == domainEvent.OperatorId);
aggregate.Operators[domainEvent.OperatorId] = @operator.Value with{
IsDeleted = true
};
KeyValuePair<Guid, TransactionProcessor.Models.Estate.Operator> @operator = aggregate.Operators.Single(o => o.Key == domainEvent.OperatorId);

Check notice on line 136 in TransactionProcessor.Aggregates/EstateAggregate.cs

View check run for this annotation

Codacy Production / Codacy Static Code Analysis

TransactionProcessor.Aggregates/EstateAggregate.cs#L136

Remove the unused local variable 'operator'.
aggregate.Operators[domainEvent.OperatorId].IsDeleted = true;
}

private static void CheckEstateHasBeenCreated(this EstateAggregate aggregate){
Expand Down Expand Up @@ -168,9 +169,9 @@
public record EstateAggregate : Aggregate{
#region Fields

internal readonly Dictionary<Guid, Operator> Operators;
internal readonly Dictionary<Guid, TransactionProcessor.Models.Estate.Operator> Operators;

internal readonly Dictionary<Guid, Models.SecurityUser> SecurityUsers;
internal readonly Dictionary<Guid, SecurityUser> SecurityUsers;

#endregion

Expand All @@ -179,15 +180,15 @@
[ExcludeFromCodeCoverage]
public EstateAggregate(){
// Nothing here
this.Operators = new Dictionary<Guid, Operator>();
this.Operators = new Dictionary<Guid, TransactionProcessor.Models.Estate.Operator>();
this.SecurityUsers = new Dictionary<Guid, SecurityUser>();
}

private EstateAggregate(Guid aggregateId){
Guard.ThrowIfInvalidGuid(aggregateId, "Aggregate Id cannot be an Empty Guid");

this.AggregateId = aggregateId;
this.Operators = new Dictionary<Guid, Operator>();
this.Operators = new Dictionary<Guid, TransactionProcessor.Models.Estate.Operator>();
this.SecurityUsers = new Dictionary<Guid, SecurityUser>();
}

Expand Down
6 changes: 0 additions & 6 deletions TransactionProcessor.Aggregates/Models/Operator.cs

This file was deleted.

6 changes: 0 additions & 6 deletions TransactionProcessor.Aggregates/Models/SecurityUser.cs

This file was deleted.

Loading
Loading