Skip to content

Commit d6839d7

Browse files
statement aggregate uses results
1 parent 94a5d84 commit d6839d7

4 files changed

Lines changed: 239 additions & 195 deletions

File tree

TransactionProcessor.Aggregates.Tests/MerchantStatementAggregateTests.cs

Lines changed: 165 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using Shouldly;
2+
using SimpleResults;
23
using TransactionProcessor.Models.Merchant;
34
using TransactionProcessor.Testing;
45

@@ -48,5 +49,169 @@ public void MerchantStatementAggregate_RecordActivityDateOnStatement_DuplicateAc
4849
activityDates.ShouldNotBeEmpty();
4950
activityDates.Count.ShouldBe(1);
5051
}
52+
53+
[Fact]
54+
public void MerchantStatementAggregate_RecordActivityDateOnStatement_InvalidStatementId_ErrorReturned()
55+
{
56+
MerchantStatementAggregate merchantStatementAggregate = MerchantStatementAggregate.Create(TestData.MerchantStatementId);
57+
Result result = merchantStatementAggregate.RecordActivityDateOnStatement(Guid.Empty,
58+
TestData.StatementDate, TestData.EstateId, TestData.MerchantId, TestData.MerchantStatementForDateId1,
59+
TestData.ActivityDate1);
60+
result.IsFailed.ShouldBeTrue();
61+
result.Status.ShouldBe(ResultStatus.Invalid);
62+
}
63+
64+
[Fact]
65+
public void MerchantStatementAggregate_RecordActivityDateOnStatement_InvalidEstateId_ErrorReturned()
66+
{
67+
MerchantStatementAggregate merchantStatementAggregate = MerchantStatementAggregate.Create(TestData.MerchantStatementId);
68+
Result result = merchantStatementAggregate.RecordActivityDateOnStatement(TestData.MerchantStatementId,
69+
TestData.StatementDate, Guid.Empty, TestData.MerchantId, TestData.MerchantStatementForDateId1,
70+
TestData.ActivityDate1);
71+
result.IsFailed.ShouldBeTrue();
72+
result.Status.ShouldBe(ResultStatus.Invalid);
73+
}
74+
75+
[Fact]
76+
public void MerchantStatementAggregate_RecordActivityDateOnStatement_InvalidMerchantId_ErrorReturned()
77+
{
78+
MerchantStatementAggregate merchantStatementAggregate = MerchantStatementAggregate.Create(TestData.MerchantStatementId);
79+
Result result = merchantStatementAggregate.RecordActivityDateOnStatement(TestData.MerchantStatementId,
80+
TestData.StatementDate, TestData.EstateId, Guid.Empty, TestData.MerchantStatementForDateId1,
81+
TestData.ActivityDate1);
82+
result.IsFailed.ShouldBeTrue();
83+
result.Status.ShouldBe(ResultStatus.Invalid);
84+
}
85+
86+
[Fact]
87+
public void MerchantStatementAggregate_AddDailySummaryRecord_RecordIsAdded()
88+
{
89+
MerchantStatementAggregate merchantStatementAggregate = MerchantStatementAggregate.Create(TestData.MerchantStatementId);
90+
Result result = merchantStatementAggregate.AddDailySummaryRecord(TestData.TransactionDateTime.Date, 1, 100.00m, 1, 0.10m,
91+
1, 1000, 1, 200);
92+
result.IsSuccess.ShouldBeTrue();
93+
}
94+
95+
[Fact]
96+
public void MerchantStatementAggregate_AddDailySummaryRecord_DuplicateAdd_ExceptionIsThrown()
97+
{
98+
MerchantStatementAggregate merchantStatementAggregate = MerchantStatementAggregate.Create(TestData.MerchantStatementId);
99+
merchantStatementAggregate.AddDailySummaryRecord(TestData.TransactionDateTime.Date, 1, 100.00m, 1, 0.10m,
100+
1, 1000, 1, 200);
101+
Result result = merchantStatementAggregate.AddDailySummaryRecord(TestData.TransactionDateTime.Date, 1, 100.00m, 1, 0.10m,
102+
1, 1000, 1, 200);
103+
result.IsSuccess.ShouldBeTrue();
104+
}
105+
106+
107+
[Fact]
108+
public void MerchantStatementAggregate_GenerateStatement_StatementIsGenerated()
109+
{
110+
MerchantStatementAggregate merchantStatementAggregate = MerchantStatementAggregate.Create(TestData.MerchantStatementId);
111+
merchantStatementAggregate.AddDailySummaryRecord(TestData.TransactionDateTime.Date, 1, 100.00m, 1, 0.10m,
112+
1, 1000, 1, 200);
113+
Result result = merchantStatementAggregate.GenerateStatement(TestData.StatementGeneratedDate);
114+
result.IsSuccess.ShouldBeTrue();
115+
116+
MerchantStatement merchantStatement = merchantStatementAggregate.GetStatement();
117+
merchantStatement.IsGenerated.ShouldBeTrue();
118+
}
119+
120+
[Fact]
121+
public void MerchantStatementAggregate_GenerateStatement_StatementIsAlreadyGenerated_ExceptionThrown()
122+
{
123+
MerchantStatementAggregate merchantStatementAggregate = MerchantStatementAggregate.Create(TestData.MerchantStatementId);
124+
merchantStatementAggregate.AddDailySummaryRecord(TestData.TransactionDateTime.Date, 1, 100.00m, 1, 0.10m, 1, 1000, 1, 200);
125+
merchantStatementAggregate.GenerateStatement(TestData.StatementGeneratedDate);
126+
127+
Result result = merchantStatementAggregate.GenerateStatement(TestData.StatementGeneratedDate);
128+
result.IsSuccess.ShouldBeTrue();
129+
}
130+
131+
[Fact]
132+
public void MerchantStatementAggregate_GenerateStatement_NoSummaries_ExceptionThrown()
133+
{
134+
MerchantStatementAggregate merchantStatementAggregate = MerchantStatementAggregate.Create(TestData.MerchantStatementId);
135+
136+
Result result = merchantStatementAggregate.GenerateStatement(TestData.StatementGeneratedDate);
137+
result.IsFailed.ShouldBeTrue();
138+
result.Status.ShouldBe(ResultStatus.Invalid);
139+
}
140+
141+
[Fact]
142+
public void MerchantStatementAggregate_BuildStatement_StatementIsBuilt()
143+
{
144+
MerchantStatementAggregate merchantStatementAggregate = MerchantStatementAggregate.Create(TestData.MerchantStatementId);
145+
merchantStatementAggregate.AddDailySummaryRecord(TestData.TransactionDateTime.Date, 1, 100.00m, 1, 0.10m, 1, 1000, 1, 200);
146+
merchantStatementAggregate.GenerateStatement(TestData.StatementGeneratedDate);
147+
Result result = merchantStatementAggregate.BuildStatement(TestData.StatementBuiltDate, TestData.StatementData);
148+
result.IsSuccess.ShouldBeTrue();
149+
150+
MerchantStatement merchantStatement = merchantStatementAggregate.GetStatement();
151+
merchantStatement.BuiltDateTime.ShouldBe(TestData.StatementBuiltDate);
152+
}
153+
154+
[Fact]
155+
public void MerchantStatementAggregate_BuildStatement_StatementIsAlreadyBuilt_NoErrorThrown()
156+
{
157+
MerchantStatementAggregate merchantStatementAggregate = MerchantStatementAggregate.Create(TestData.MerchantStatementId);
158+
merchantStatementAggregate.AddDailySummaryRecord(TestData.TransactionDateTime.Date, 1, 100.00m, 1, 0.10m, 1, 1000, 1, 200);
159+
merchantStatementAggregate.GenerateStatement(TestData.StatementGeneratedDate);
160+
merchantStatementAggregate.BuildStatement(TestData.StatementBuiltDate, TestData.StatementData);
161+
162+
Result result = merchantStatementAggregate.BuildStatement(TestData.StatementBuiltDate, TestData.StatementData);
163+
result.IsSuccess.ShouldBeTrue();
164+
}
165+
166+
[Fact]
167+
public void MerchantStatementAggregate_BuildStatement_StatementIsNotGenerated_ExceptionThrown()
168+
{
169+
MerchantStatementAggregate merchantStatementAggregate = MerchantStatementAggregate.Create(TestData.MerchantStatementId);
170+
merchantStatementAggregate.AddDailySummaryRecord(TestData.TransactionDateTime.Date, 1, 100.00m, 1, 0.10m, 1, 1000, 1, 200);
171+
172+
Result result = merchantStatementAggregate.BuildStatement(TestData.StatementBuiltDate, TestData.StatementData);
173+
result.IsFailed.ShouldBeTrue();
174+
result.Status.ShouldBe(ResultStatus.Invalid);
175+
}
176+
177+
[Fact]
178+
public void MerchantStatementAggregate_EmailStatement_StatementIsEmailed()
179+
{
180+
MerchantStatementAggregate merchantStatementAggregate = MerchantStatementAggregate.Create(TestData.MerchantStatementId);
181+
merchantStatementAggregate.AddDailySummaryRecord(TestData.TransactionDateTime.Date, 1, 100.00m, 1, 0.10m, 1, 1000, 1, 200);
182+
merchantStatementAggregate.GenerateStatement(TestData.StatementGeneratedDate);
183+
merchantStatementAggregate.BuildStatement(TestData.StatementBuiltDate, TestData.StatementData);
184+
185+
Result result = merchantStatementAggregate.EmailStatement(TestData.StatementEmailedDate, TestData.MessageId);
186+
result.IsSuccess.ShouldBeTrue();
187+
188+
MerchantStatement merchantStatement = merchantStatementAggregate.GetStatement();
189+
merchantStatement.HasBeenEmailed.ShouldBeTrue();
190+
}
191+
192+
[Fact]
193+
public void MerchantStatementAggregate_EmailStatement_StatementIsAlreadyEmailed_ExceptionThrown()
194+
{
195+
MerchantStatementAggregate merchantStatementAggregate = MerchantStatementAggregate.Create(TestData.MerchantStatementId);
196+
merchantStatementAggregate.AddDailySummaryRecord(TestData.TransactionDateTime.Date, 1, 100.00m, 1, 0.10m, 1, 1000, 1, 200);
197+
merchantStatementAggregate.GenerateStatement(TestData.StatementGeneratedDate);
198+
merchantStatementAggregate.BuildStatement(TestData.StatementBuiltDate, TestData.StatementData);
199+
merchantStatementAggregate.EmailStatement(TestData.StatementEmailedDate, TestData.MessageId);
200+
201+
Result result = merchantStatementAggregate.EmailStatement(TestData.StatementEmailedDate, TestData.MessageId);
202+
result.IsSuccess.ShouldBeTrue();
203+
}
204+
205+
[Fact]
206+
public void MerchantStatementAggregate_EmailStatement_StatementIsNotBuilt_ExceptionThrown()
207+
{
208+
MerchantStatementAggregate merchantStatementAggregate = MerchantStatementAggregate.Create(TestData.MerchantStatementId);
209+
merchantStatementAggregate.AddDailySummaryRecord(TestData.TransactionDateTime.Date, 1, 100.00m, 1, 0.10m, 1, 1000, 1, 200);
210+
merchantStatementAggregate.GenerateStatement(TestData.StatementGeneratedDate);
211+
212+
var result = merchantStatementAggregate.EmailStatement(TestData.StatementEmailedDate, TestData.MessageId);
213+
result.IsFailed.ShouldBeTrue();
214+
result.Status.ShouldBe(ResultStatus.Invalid);
215+
}
51216
}
52217
}

TransactionProcessor.Aggregates.Tests/MerchantStatementForDateAggregateTests.cs

Lines changed: 1 addition & 129 deletions
Original file line numberDiff line numberDiff line change
@@ -127,133 +127,5 @@ public void MerchantStatementForDateAggregate_AddWithdrawalToStatement_Withdrawa
127127
statementLines.ShouldNotBeNull();
128128
statementLines.ShouldNotBeEmpty();
129129
statementLines.Count.ShouldBe(1);
130-
}
131-
132-
133-
[Fact]
134-
public void MerchantStatementAggregate_AddDailySummaryRecord_RecordIsAdded() {
135-
MerchantStatementAggregate merchantStatementAggregate = MerchantStatementAggregate.Create(TestData.MerchantStatementId);
136-
Should.NotThrow(() => { merchantStatementAggregate.AddDailySummaryRecord(TestData.TransactionDateTime.Date, 1, 100.00m, 1, 0.10m,
137-
1, 1000, 1, 200); });
138-
}
139-
140-
[Fact]
141-
public void MerchantStatementAggregate_AddDailySummaryRecord_DuplicateAdd_ExceptionIsThrown()
142-
{
143-
MerchantStatementAggregate merchantStatementAggregate = MerchantStatementAggregate.Create(TestData.MerchantStatementId);
144-
merchantStatementAggregate.AddDailySummaryRecord(TestData.TransactionDateTime.Date, 1, 100.00m, 1, 0.10m,
145-
1, 1000, 1, 200);
146-
Should.Throw<InvalidOperationException>(() => { merchantStatementAggregate.AddDailySummaryRecord(TestData.TransactionDateTime.Date, 1, 100.00m, 1, 0.10m,
147-
1, 1000, 1, 200); });
148-
}
149-
150-
151-
[Fact]
152-
public void MerchantStatementAggregate_GenerateStatement_StatementIsGenerated()
153-
{
154-
MerchantStatementAggregate merchantStatementAggregate = MerchantStatementAggregate.Create(TestData.MerchantStatementId);
155-
merchantStatementAggregate.AddDailySummaryRecord(TestData.TransactionDateTime.Date, 1, 100.00m, 1, 0.10m,
156-
1, 1000, 1, 200);
157-
merchantStatementAggregate.GenerateStatement(TestData.StatementGeneratedDate);
158-
159-
MerchantStatement merchantStatement = merchantStatementAggregate.GetStatement();
160-
merchantStatement.IsGenerated.ShouldBeTrue();
161-
}
162-
163-
[Fact]
164-
public void MerchantStatementAggregate_GenerateStatement_StatementIsAlreadyGenerated_ExceptionThrown()
165-
{
166-
MerchantStatementAggregate merchantStatementAggregate = MerchantStatementAggregate.Create(TestData.MerchantStatementId);
167-
merchantStatementAggregate.AddDailySummaryRecord(TestData.TransactionDateTime.Date, 1, 100.00m, 1, 0.10m, 1, 1000, 1, 200);
168-
merchantStatementAggregate.GenerateStatement(TestData.StatementGeneratedDate);
169-
Should.Throw<InvalidOperationException>(() => {
170-
merchantStatementAggregate.GenerateStatement(TestData.StatementGeneratedDate);
171-
});
172-
}
173-
174-
[Fact]
175-
public void MerchantStatementAggregate_GenerateStatement_NoSummaries_ExceptionThrown()
176-
{
177-
MerchantStatementAggregate merchantStatementAggregate = MerchantStatementAggregate.Create(TestData.MerchantStatementId);
178-
179-
Should.Throw<InvalidOperationException>(() => {
180-
merchantStatementAggregate.GenerateStatement(TestData.StatementGeneratedDate);
181-
});
182-
}
183-
184-
[Fact]
185-
public void MerchantStatementAggregate_BuildStatement_StatementIsBuilt()
186-
{
187-
MerchantStatementAggregate merchantStatementAggregate = MerchantStatementAggregate.Create(TestData.MerchantStatementId);
188-
merchantStatementAggregate.AddDailySummaryRecord(TestData.TransactionDateTime.Date, 1, 100.00m, 1, 0.10m, 1, 1000, 1, 200);
189-
merchantStatementAggregate.GenerateStatement(TestData.StatementGeneratedDate);
190-
merchantStatementAggregate.BuildStatement(TestData.StatementBuiltDate,TestData.StatementData);
191-
192-
MerchantStatement merchantStatement = merchantStatementAggregate.GetStatement();
193-
merchantStatement.BuiltDateTime.ShouldBe(TestData.StatementBuiltDate);
194-
}
195-
196-
[Fact]
197-
public void MerchantStatementAggregate_BuildStatement_StatementIsAlreadyBuilt_ExceptionThrown()
198-
{
199-
MerchantStatementAggregate merchantStatementAggregate = MerchantStatementAggregate.Create(TestData.MerchantStatementId);
200-
merchantStatementAggregate.AddDailySummaryRecord(TestData.TransactionDateTime.Date, 1, 100.00m, 1, 0.10m, 1, 1000, 1, 200);
201-
merchantStatementAggregate.GenerateStatement(TestData.StatementGeneratedDate);
202-
merchantStatementAggregate.BuildStatement(TestData.StatementBuiltDate, TestData.StatementData);
203-
204-
Should.Throw<InvalidOperationException>(() => {
205-
merchantStatementAggregate.BuildStatement(TestData.StatementBuiltDate, TestData.StatementData);
206-
});
207-
}
208-
209-
[Fact]
210-
public void MerchantStatementAggregate_BuildStatement_StatementIsNotGenerated_ExceptionThrown()
211-
{
212-
MerchantStatementAggregate merchantStatementAggregate = MerchantStatementAggregate.Create(TestData.MerchantStatementId);
213-
merchantStatementAggregate.AddDailySummaryRecord(TestData.TransactionDateTime.Date, 1, 100.00m, 1, 0.10m, 1, 1000, 1, 200);
214-
215-
Should.Throw<InvalidOperationException>(() => {
216-
merchantStatementAggregate.BuildStatement(TestData.StatementBuiltDate, TestData.StatementData);
217-
});
218-
}
219-
220-
[Fact]
221-
public void MerchantStatementAggregate_EmailStatement_StatementIsEmailed()
222-
{
223-
MerchantStatementAggregate merchantStatementAggregate = MerchantStatementAggregate.Create(TestData.MerchantStatementId);
224-
merchantStatementAggregate.AddDailySummaryRecord(TestData.TransactionDateTime.Date, 1, 100.00m, 1, 0.10m, 1, 1000, 1, 200);
225-
merchantStatementAggregate.GenerateStatement(TestData.StatementGeneratedDate);
226-
merchantStatementAggregate.BuildStatement(TestData.StatementBuiltDate, TestData.StatementData);
227-
228-
merchantStatementAggregate.EmailStatement(TestData.StatementEmailedDate, TestData.MessageId);
229-
230-
MerchantStatement merchantStatement = merchantStatementAggregate.GetStatement();
231-
merchantStatement.HasBeenEmailed.ShouldBeTrue();
232-
}
233-
234-
[Fact]
235-
public void MerchantStatementAggregate_EmailStatement_StatementIsAlreadyEmailed_ExceptionThrown()
236-
{
237-
MerchantStatementAggregate merchantStatementAggregate = MerchantStatementAggregate.Create(TestData.MerchantStatementId);
238-
merchantStatementAggregate.AddDailySummaryRecord(TestData.TransactionDateTime.Date, 1, 100.00m, 1, 0.10m, 1, 1000, 1, 200);
239-
merchantStatementAggregate.GenerateStatement(TestData.StatementGeneratedDate);
240-
merchantStatementAggregate.BuildStatement(TestData.StatementBuiltDate, TestData.StatementData);
241-
merchantStatementAggregate.EmailStatement(TestData.StatementEmailedDate, TestData.MessageId);
242-
243-
Should.Throw<InvalidOperationException>(() => {
244-
merchantStatementAggregate.EmailStatement(TestData.StatementEmailedDate, TestData.MessageId);
245-
});
246-
}
247-
248-
[Fact]
249-
public void MerchantStatementAggregate_EmailStatement_StatementIsNotBuilt_ExceptionThrown()
250-
{
251-
MerchantStatementAggregate merchantStatementAggregate = MerchantStatementAggregate.Create(TestData.MerchantStatementId);
252-
merchantStatementAggregate.AddDailySummaryRecord(TestData.TransactionDateTime.Date, 1, 100.00m, 1, 0.10m, 1, 1000, 1, 200);
253-
merchantStatementAggregate.GenerateStatement(TestData.StatementGeneratedDate);
254-
255-
Should.Throw<InvalidOperationException>(() => {
256-
merchantStatementAggregate.EmailStatement(TestData.StatementEmailedDate, TestData.MessageId);
257-
});
258-
}
130+
}
259131
}

0 commit comments

Comments
 (0)