Skip to content

Commit cca5a1d

Browse files
Handle duplicates on contract product addition
1 parent fec11b9 commit cca5a1d

5 files changed

Lines changed: 96 additions & 52 deletions

File tree

TransactionProcessor.Aggregates.Tests/ContractAggregateTests.cs

Lines changed: 29 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ public void ContractAggregate_AddFixedValueProduct_ProductAdded()
6868
ContractAggregate aggregate = ContractAggregate.Create(TestData.ContractId);
6969
aggregate.Create(TestData.EstateId, TestData.OperatorId, TestData.ContractDescription);
7070

71-
aggregate.AddFixedValueProduct(TestData.ContractProductId,
71+
aggregate.AddFixedValueProduct(TestData.FixedContractProductId,
7272
TestData.ProductName,
7373
TestData.ProductDisplayText,
7474
TestData.ProductFixedValue,
@@ -91,11 +91,11 @@ public void ContractAggregate_AddFixedValueProduct_DuplicateProduct_ErrorThrown(
9191
ContractAggregate aggregate = ContractAggregate.Create(TestData.ContractId);
9292
aggregate.Create(TestData.EstateId, TestData.OperatorId, TestData.ContractDescription);
9393

94-
aggregate.AddFixedValueProduct(TestData.ContractProductId, TestData.ProductName, TestData.ProductDisplayText, TestData.ProductFixedValue, TestData.ProductTypeMobileTopup);
94+
aggregate.AddFixedValueProduct(TestData.FixedContractProductId, TestData.ProductName, TestData.ProductDisplayText, TestData.ProductFixedValue, TestData.ProductTypeMobileTopup);
9595

9696
Should.Throw<InvalidOperationException>(() =>
9797
{
98-
aggregate.AddFixedValueProduct(TestData.ContractProductId, TestData.ProductName, TestData.ProductDisplayText, TestData.ProductFixedValue, TestData.ProductTypeMobileTopup);
98+
aggregate.AddFixedValueProduct(TestData.FixedContractProductId, TestData.ProductName, TestData.ProductDisplayText, TestData.ProductFixedValue, TestData.ProductTypeMobileTopup);
9999
});
100100
}
101101

@@ -109,7 +109,7 @@ public void ContractAggregate_AddFixedValueProduct_InvalidProductName_ErrorThrow
109109

110110
Should.Throw<ArgumentNullException>(() =>
111111
{
112-
aggregate.AddFixedValueProduct(TestData.ContractProductId, productName, TestData.ProductDisplayText, TestData.ProductFixedValue, TestData.ProductTypeMobileTopup);
112+
aggregate.AddFixedValueProduct(TestData.FixedContractProductId, productName, TestData.ProductDisplayText, TestData.ProductFixedValue, TestData.ProductTypeMobileTopup);
113113
});
114114
}
115115

@@ -123,7 +123,7 @@ public void ContractAggregate_AddFixedValueProduct_InvalidProductDisplayText_Err
123123

124124
Should.Throw<ArgumentNullException>(() =>
125125
{
126-
aggregate.AddFixedValueProduct(TestData.ContractProductId, TestData.ProductName, displayText, TestData.ProductFixedValue,TestData.ProductTypeMobileTopup);
126+
aggregate.AddFixedValueProduct(TestData.FixedContractProductId, TestData.ProductName, displayText, TestData.ProductFixedValue,TestData.ProductTypeMobileTopup);
127127
});
128128
}
129129

@@ -137,7 +137,7 @@ public void ContractAggregate_AddFixedValueProduct_InvalidProductValue_ErrorThro
137137

138138
Should.Throw<ArgumentOutOfRangeException>(() =>
139139
{
140-
aggregate.AddFixedValueProduct(TestData.ContractProductId, TestData.ProductName, TestData.ProductDisplayText, value, TestData.ProductTypeMobileTopup);
140+
aggregate.AddFixedValueProduct(TestData.FixedContractProductId, TestData.ProductName, TestData.ProductDisplayText, value, TestData.ProductTypeMobileTopup);
141141
});
142142
}
143143

@@ -147,7 +147,7 @@ public void ContractAggregate_AddVariableValueProduct_ProductAdded()
147147
ContractAggregate aggregate = ContractAggregate.Create(TestData.ContractId);
148148
aggregate.Create(TestData.EstateId, TestData.OperatorId, TestData.ContractDescription);
149149

150-
aggregate.AddVariableValueProduct(TestData.ContractProductId, TestData.ProductName, TestData.ProductDisplayText, TestData.ProductTypeMobileTopup);
150+
aggregate.AddVariableValueProduct(TestData.VariableContractProductId, TestData.ProductName, TestData.ProductDisplayText, TestData.ProductTypeMobileTopup);
151151

152152
List<Product> products = aggregate.GetProducts();
153153
products.Count.ShouldBe(1);
@@ -166,11 +166,11 @@ public void ContractAggregate_AddVariableValueProduct_DuplicateProduct_ErrorThro
166166
ContractAggregate aggregate = ContractAggregate.Create(TestData.ContractId);
167167
aggregate.Create(TestData.EstateId, TestData.OperatorId, TestData.ContractDescription);
168168

169-
aggregate.AddVariableValueProduct(TestData.ContractProductId, TestData.ProductName, TestData.ProductDisplayText, TestData.ProductTypeMobileTopup);
169+
aggregate.AddVariableValueProduct(TestData.VariableContractProductId, TestData.ProductName, TestData.ProductDisplayText, TestData.ProductTypeMobileTopup);
170170

171171
Should.Throw<InvalidOperationException>(() =>
172172
{
173-
aggregate.AddVariableValueProduct(TestData.ContractProductId, TestData.ProductName, TestData.ProductDisplayText, TestData.ProductTypeMobileTopup);
173+
aggregate.AddVariableValueProduct(TestData.VariableContractProductId, TestData.ProductName, TestData.ProductDisplayText, TestData.ProductTypeMobileTopup);
174174
});
175175
}
176176

@@ -184,7 +184,7 @@ public void ContractAggregate_AddVariableValueProduct_InvalidProductName_ErrorTh
184184

185185
Should.Throw<ArgumentNullException>(() =>
186186
{
187-
aggregate.AddVariableValueProduct(TestData.ContractProductId, productName, TestData.ProductDisplayText, TestData.ProductTypeMobileTopup);
187+
aggregate.AddVariableValueProduct(TestData.VariableContractProductId, productName, TestData.ProductDisplayText, TestData.ProductTypeMobileTopup);
188188
});
189189
}
190190

@@ -198,7 +198,7 @@ public void ContractAggregate_AddVariableValueProduct_InvalidProductDisplayText_
198198

199199
Should.Throw<ArgumentNullException>(() =>
200200
{
201-
aggregate.AddVariableValueProduct(TestData.ContractProductId, TestData.ProductName, displayText, TestData.ProductTypeMobileTopup);
201+
aggregate.AddVariableValueProduct(TestData.VariableContractProductId, TestData.ProductName, displayText, TestData.ProductTypeMobileTopup);
202202
});
203203
}
204204

@@ -225,7 +225,7 @@ public void ContractAggregate_AddTransactionFee_FixedValueProduct_TransactionFee
225225
{
226226
ContractAggregate aggregate = ContractAggregate.Create(TestData.ContractId);
227227
aggregate.Create(TestData.EstateId, TestData.OperatorId, TestData.ContractDescription);
228-
aggregate.AddFixedValueProduct(TestData.ContractProductId, TestData.ProductName, TestData.ProductDisplayText, TestData.ProductFixedValue, TestData.ProductTypeMobileTopup);
228+
aggregate.AddFixedValueProduct(TestData.FixedContractProductId, TestData.ProductName, TestData.ProductDisplayText, TestData.ProductFixedValue, TestData.ProductTypeMobileTopup);
229229

230230
List<Product> products = aggregate.GetProducts();
231231
Product product = products.Single();
@@ -253,7 +253,7 @@ public void ContractAggregate_AddTransactionFee_FixedValueProduct_InvalidFeeId_E
253253
{
254254
ContractAggregate aggregate = ContractAggregate.Create(TestData.ContractId);
255255
aggregate.Create(TestData.EstateId, TestData.OperatorId, TestData.ContractDescription);
256-
aggregate.AddFixedValueProduct(TestData.ContractProductId, TestData.ProductName, TestData.ProductDisplayText, TestData.ProductFixedValue, TestData.ProductTypeMobileTopup);
256+
aggregate.AddFixedValueProduct(TestData.FixedContractProductId, TestData.ProductName, TestData.ProductDisplayText, TestData.ProductFixedValue, TestData.ProductTypeMobileTopup);
257257

258258
List<Product> products = aggregate.GetProducts();
259259
Product product = products.Single();
@@ -277,7 +277,7 @@ public void ContractAggregate_AddTransactionFee_FixedValueProduct_InvalidFeeDesc
277277
{
278278
ContractAggregate aggregate = ContractAggregate.Create(TestData.ContractId);
279279
aggregate.Create(TestData.EstateId, TestData.OperatorId, TestData.ContractDescription);
280-
aggregate.AddFixedValueProduct(TestData.ContractProductId, TestData.ProductName, TestData.ProductDisplayText, TestData.ProductFixedValue, TestData.ProductTypeMobileTopup);
280+
aggregate.AddFixedValueProduct(TestData.FixedContractProductId, TestData.ProductName, TestData.ProductDisplayText, TestData.ProductFixedValue, TestData.ProductTypeMobileTopup);
281281

282282
List<Product> products = aggregate.GetProducts();
283283
Product product = products.Single();
@@ -297,7 +297,7 @@ public void ContractAggregate_AddTransactionFee_VariableValueProduct_Transaction
297297
{
298298
ContractAggregate aggregate = ContractAggregate.Create(TestData.ContractId);
299299
aggregate.Create(TestData.EstateId, TestData.OperatorId, TestData.ContractDescription);
300-
aggregate.AddVariableValueProduct(TestData.ContractProductId, TestData.ProductName, TestData.ProductDisplayText, TestData.ProductTypeMobileTopup);
300+
aggregate.AddVariableValueProduct(TestData.VariableContractProductId, TestData.ProductName, TestData.ProductDisplayText, TestData.ProductTypeMobileTopup);
301301

302302
List<Product> products = aggregate.GetProducts();
303303
Product product = products.Single();
@@ -325,7 +325,7 @@ public void ContractAggregate_AddTransactionFee_VariableValueProduct_InvalidFeeI
325325
{
326326
ContractAggregate aggregate = ContractAggregate.Create(TestData.ContractId);
327327
aggregate.Create(TestData.EstateId, TestData.OperatorId, TestData.ContractDescription);
328-
aggregate.AddVariableValueProduct(TestData.ContractProductId, TestData.ProductName, TestData.ProductDisplayText, TestData.ProductTypeMobileTopup);
328+
aggregate.AddVariableValueProduct(TestData.VariableContractProductId, TestData.ProductName, TestData.ProductDisplayText, TestData.ProductTypeMobileTopup);
329329

330330
List<Product> products = aggregate.GetProducts();
331331
Product product = products.Single();
@@ -349,7 +349,7 @@ public void ContractAggregate_AddTransactionFee_VariableValueProduct_InvalidFeeD
349349
{
350350
ContractAggregate aggregate = ContractAggregate.Create(TestData.ContractId);
351351
aggregate.Create(TestData.EstateId, TestData.OperatorId, TestData.ContractDescription);
352-
aggregate.AddVariableValueProduct(TestData.ContractProductId, TestData.ProductName, TestData.ProductDisplayText, TestData.ProductTypeMobileTopup);
352+
aggregate.AddVariableValueProduct(TestData.VariableContractProductId, TestData.ProductName, TestData.ProductDisplayText, TestData.ProductTypeMobileTopup);
353353

354354
List<Product> products = aggregate.GetProducts();
355355
Product product = products.Single();
@@ -385,7 +385,7 @@ public void ContractAggregate_AddTransactionFee_ProductNotFound_ErrorThrown(Calc
385385
{
386386
ContractAggregate aggregate = ContractAggregate.Create(TestData.ContractId);
387387
aggregate.Create(TestData.EstateId, TestData.OperatorId, TestData.ContractDescription);
388-
aggregate.AddFixedValueProduct(TestData.ContractProductId,TestData.ProductName, TestData.ProductDisplayText, TestData.ProductFixedValue, TestData.ProductTypeMobileTopup);
388+
aggregate.AddFixedValueProduct(TestData.FixedContractProductId,TestData.ProductName, TestData.ProductDisplayText, TestData.ProductFixedValue, TestData.ProductTypeMobileTopup);
389389

390390
Should.Throw<InvalidOperationException>(() =>
391391
{
@@ -400,7 +400,7 @@ public void ContractAggregate_AddTransactionFee_FixedValueProduct_InvalidCalcula
400400
{
401401
ContractAggregate aggregate = ContractAggregate.Create(TestData.ContractId);
402402
aggregate.Create(TestData.EstateId, TestData.OperatorId, TestData.ContractDescription);
403-
aggregate.AddVariableValueProduct(TestData.ContractProductId, TestData.ProductName, TestData.ProductDisplayText, TestData.ProductTypeMobileTopup);
403+
aggregate.AddVariableValueProduct(TestData.VariableContractProductId, TestData.ProductName, TestData.ProductDisplayText, TestData.ProductTypeMobileTopup);
404404

405405
List<Product> products = aggregate.GetProducts();
406406
Product product = products.Single();
@@ -418,7 +418,7 @@ public void ContractAggregate_AddTransactionFee_FixedValueProduct_InvalidFeeType
418418
{
419419
ContractAggregate aggregate = ContractAggregate.Create(TestData.ContractId);
420420
aggregate.Create(TestData.EstateId, TestData.OperatorId, TestData.ContractDescription);
421-
aggregate.AddVariableValueProduct(TestData.ContractProductId, TestData.ProductName, TestData.ProductDisplayText, TestData.ProductTypeMobileTopup);
421+
aggregate.AddVariableValueProduct(TestData.VariableContractProductId, TestData.ProductName, TestData.ProductDisplayText, TestData.ProductTypeMobileTopup);
422422

423423
List<Product> products = aggregate.GetProducts();
424424
Product product = products.Single();
@@ -442,7 +442,7 @@ public void ContractAggregate_AddTransactionFee_VariableValueProduct_InvalidFeeV
442442
{
443443
ContractAggregate aggregate = ContractAggregate.Create(TestData.ContractId);
444444
aggregate.Create(TestData.EstateId, TestData.OperatorId, TestData.ContractDescription);
445-
aggregate.AddVariableValueProduct(TestData.ContractProductId, TestData.ProductName, TestData.ProductDisplayText, TestData.ProductTypeMobileTopup);
445+
aggregate.AddVariableValueProduct(TestData.VariableContractProductId, TestData.ProductName, TestData.ProductDisplayText, TestData.ProductTypeMobileTopup);
446446

447447
List<Product> products = aggregate.GetProducts();
448448
Product product = products.Single();
@@ -466,7 +466,7 @@ public void ContractAggregate_AddTransactionFee_FixedValueProduct_InvalidFeeValu
466466
{
467467
ContractAggregate aggregate = ContractAggregate.Create(TestData.ContractId);
468468
aggregate.Create(TestData.EstateId, TestData.OperatorId, TestData.ContractDescription);
469-
aggregate.AddVariableValueProduct(TestData.ContractProductId, TestData.ProductName, TestData.ProductDisplayText, TestData.ProductTypeMobileTopup);
469+
aggregate.AddVariableValueProduct(TestData.VariableContractProductId, TestData.ProductName, TestData.ProductDisplayText, TestData.ProductTypeMobileTopup);
470470

471471
List<Product> products = aggregate.GetProducts();
472472
Product product = products.Single();
@@ -484,7 +484,7 @@ public void ContractAggregate_AddTransactionFee_VariableValueProduct_InvalidCalc
484484
{
485485
ContractAggregate aggregate = ContractAggregate.Create(TestData.ContractId);
486486
aggregate.Create(TestData.EstateId, TestData.OperatorId, TestData.ContractDescription);
487-
aggregate.AddVariableValueProduct(TestData.ContractProductId, TestData.ProductName, TestData.ProductDisplayText, TestData.ProductTypeMobileTopup);
487+
aggregate.AddVariableValueProduct(TestData.VariableContractProductId, TestData.ProductName, TestData.ProductDisplayText, TestData.ProductTypeMobileTopup);
488488

489489
List<Product> products = aggregate.GetProducts();
490490
Product product = products.Single();
@@ -502,7 +502,7 @@ public void ContractAggregate_AddTransactionFee_VariableValueProduct_InvalidFeeT
502502
{
503503
ContractAggregate aggregate = ContractAggregate.Create(TestData.ContractId);
504504
aggregate.Create(TestData.EstateId, TestData.OperatorId, TestData.ContractDescription);
505-
aggregate.AddVariableValueProduct(TestData.ContractProductId, TestData.ProductName, TestData.ProductDisplayText, TestData.ProductTypeMobileTopup);
505+
aggregate.AddVariableValueProduct(TestData.VariableContractProductId, TestData.ProductName, TestData.ProductDisplayText, TestData.ProductTypeMobileTopup);
506506

507507
List<Product> products = aggregate.GetProducts();
508508
Product product = products.Single();
@@ -522,7 +522,7 @@ public void ContractAggregate_DisableTransactionFee_TransactionFeeIsDisabled(Cal
522522
{
523523
ContractAggregate aggregate = ContractAggregate.Create(TestData.ContractId);
524524
aggregate.Create(TestData.EstateId, TestData.OperatorId, TestData.ContractDescription);
525-
aggregate.AddVariableValueProduct(TestData.ContractProductId, TestData.ProductName, TestData.ProductDisplayText, TestData.ProductTypeMobileTopup);
525+
aggregate.AddVariableValueProduct(TestData.VariableContractProductId, TestData.ProductName, TestData.ProductDisplayText, TestData.ProductTypeMobileTopup);
526526

527527
List<Product> products = aggregate.GetProducts();
528528
Product product = products.Single();
@@ -535,7 +535,7 @@ public void ContractAggregate_DisableTransactionFee_TransactionFeeIsDisabled(Cal
535535
ContractProductTransactionFee? fee = productWithFees.TransactionFees.Single();
536536
fee.IsEnabled.ShouldBeTrue();
537537

538-
aggregate.DisableTransactionFee(TestData.ContractProductId, TestData.TransactionFeeId);
538+
aggregate.DisableTransactionFee(TestData.VariableContractProductId, TestData.TransactionFeeId);
539539

540540
productsAfterFeeAdded = aggregate.GetProducts();
541541
productWithFees = productsAfterFeeAdded.Single();
@@ -552,7 +552,7 @@ public void ContractAggregate_DisableTransactionFee_ProductNotFound_ErrorThrown(
552552

553553
Should.Throw<InvalidOperationException>(() =>
554554
{
555-
aggregate.DisableTransactionFee(TestData.ContractProductId, TestData.TransactionFeeId);
555+
aggregate.DisableTransactionFee(TestData.VariableContractProductId, TestData.TransactionFeeId);
556556
});
557557
}
558558

@@ -561,11 +561,11 @@ public void ContractAggregate_DisableTransactionFee_TransactionFeeNotFound_Error
561561
{
562562
ContractAggregate aggregate = ContractAggregate.Create(TestData.ContractId);
563563
aggregate.Create(TestData.EstateId, TestData.OperatorId, TestData.ContractDescription);
564-
aggregate.AddVariableValueProduct(TestData.ContractProductId, TestData.ProductName, TestData.ProductDisplayText, TestData.ProductTypeMobileTopup);
564+
aggregate.AddVariableValueProduct(TestData.VariableContractProductId, TestData.ProductName, TestData.ProductDisplayText, TestData.ProductTypeMobileTopup);
565565

566566
Should.Throw<InvalidOperationException>(() =>
567567
{
568-
aggregate.DisableTransactionFee(TestData.ContractProductId, TestData.TransactionFeeId);
568+
aggregate.DisableTransactionFee(TestData.VariableContractProductId, TestData.TransactionFeeId);
569569
});
570570
}
571571
}

0 commit comments

Comments
 (0)