TestDataBuilders: ValidOrder()/ValidClient() with explicit Build(); After tests migrated
Domain objects in After-side tests are constructed only through the builders, so the upcoming OrderLines evolution changes builder internals instead of every test. Before keeps object initializers (legacy world). yak: testdatabuilders-validordervalidclient-after-test-migration-91vl
This commit is contained in:
@@ -1,4 +1,6 @@
|
||||
using After;
|
||||
using static BeforeAfter.Tests.TestData.ClientBuilder;
|
||||
using static BeforeAfter.Tests.TestData.OrderBuilder;
|
||||
|
||||
namespace BeforeAfter.Tests;
|
||||
|
||||
@@ -16,7 +18,7 @@ public class DiscountCalculatorTests
|
||||
[Fact]
|
||||
public void A_total_below_the_barrier_gets_no_discount()
|
||||
{
|
||||
var order = new Order { Id = Guid.NewGuid(), Description = "small", TotalInCents = 50_00 };
|
||||
var order = ValidOrder().WithTotal(50_00).Build();
|
||||
|
||||
var discounted = DiscountCalculator.CalculateDiscount(order, discountBarrierCents: 100_00, discountPercentage: 10);
|
||||
|
||||
@@ -28,7 +30,7 @@ public class DiscountCalculatorTests
|
||||
[Fact]
|
||||
public void A_total_exactly_at_the_barrier_gets_no_discount()
|
||||
{
|
||||
var order = new Order { Id = Guid.NewGuid(), TotalInCents = 100_00 };
|
||||
var order = ValidOrder().WithTotal(100_00).Build();
|
||||
|
||||
var discounted = DiscountCalculator.CalculateDiscount(order, discountBarrierCents: 100_00, discountPercentage: 10);
|
||||
|
||||
@@ -42,7 +44,7 @@ public class DiscountCalculatorTests
|
||||
[Fact]
|
||||
public void A_total_above_the_barrier_gets_the_percentage_discount()
|
||||
{
|
||||
var order = new Order { Id = Guid.NewGuid(), TotalInCents = 150_00 };
|
||||
var order = ValidOrder().WithTotal(150_00).Build();
|
||||
|
||||
var discounted = DiscountCalculator.CalculateDiscount(order, discountBarrierCents: 100_00, discountPercentage: 10);
|
||||
|
||||
@@ -54,7 +56,7 @@ public class DiscountCalculatorTests
|
||||
[Fact]
|
||||
public void A_zero_percentage_discounts_nothing_even_above_the_barrier()
|
||||
{
|
||||
var order = new Order { Id = Guid.NewGuid(), TotalInCents = 150_00 };
|
||||
var order = ValidOrder().WithTotal(150_00).Build();
|
||||
|
||||
var discounted = DiscountCalculator.CalculateDiscount(order, discountBarrierCents: 100_00, discountPercentage: 0);
|
||||
|
||||
@@ -65,7 +67,7 @@ public class DiscountCalculatorTests
|
||||
[Fact]
|
||||
public void A_hundred_percent_discount_leaves_nothing()
|
||||
{
|
||||
var order = new Order { Id = Guid.NewGuid(), TotalInCents = 150_00 };
|
||||
var order = ValidOrder().WithTotal(150_00).Build();
|
||||
|
||||
var discounted = DiscountCalculator.CalculateDiscount(order, discountBarrierCents: 100_00, discountPercentage: 100);
|
||||
|
||||
@@ -83,7 +85,7 @@ public class DiscountCalculatorTests
|
||||
[InlineData(151, 15, 136)] // 15.1 rounds down to 15
|
||||
public void The_discount_amount_is_rounded_half_up(int totalInCents, int expectedDiscountCents, int expectedDiscountedTotal)
|
||||
{
|
||||
var order = new Order { Id = Guid.NewGuid(), TotalInCents = totalInCents };
|
||||
var order = ValidOrder().WithTotal(totalInCents).Build();
|
||||
|
||||
var discounted = DiscountCalculator.CalculateDiscount(order, discountBarrierCents: 100, discountPercentage: 10);
|
||||
|
||||
@@ -98,7 +100,7 @@ public class DiscountCalculatorTests
|
||||
public void The_result_is_correlated_to_the_order_by_id()
|
||||
{
|
||||
var id = Guid.NewGuid();
|
||||
var order = new Order { Id = id, TotalInCents = 150_00 };
|
||||
var order = ValidOrder().WithId(id).WithTotal(150_00).Build();
|
||||
|
||||
var discounted = DiscountCalculator.CalculateDiscount(order, discountBarrierCents: 100_00, discountPercentage: 10);
|
||||
|
||||
@@ -108,7 +110,7 @@ public class DiscountCalculatorTests
|
||||
[Fact]
|
||||
public void Calculating_does_not_mutate_the_order()
|
||||
{
|
||||
var order = new Order { Id = Guid.NewGuid(), Description = "one", TotalInCents = 150_00 };
|
||||
var order = ValidOrder().WithDescription("one").WithTotal(150_00).Build();
|
||||
|
||||
DiscountCalculator.CalculateDiscount(order, discountBarrierCents: 100_00, discountPercentage: 10);
|
||||
|
||||
@@ -120,13 +122,13 @@ public class DiscountCalculatorTests
|
||||
// Input validation: invalid arguments throw (loudly, not silently).
|
||||
// ---------------------------------------------------------------------
|
||||
[Theory]
|
||||
[InlineData(-1, 100_00, 10)] // negative total
|
||||
[InlineData(150_00, -1, 10)] // negative barrier
|
||||
[InlineData(150_00, 100_00, -1)]// percentage below 0
|
||||
[InlineData(-1, 100_00, 10)] // negative total
|
||||
[InlineData(150_00, -1, 10)] // negative barrier
|
||||
[InlineData(150_00, 100_00, -1)] // percentage below 0
|
||||
[InlineData(150_00, 100_00, 101)]// percentage above 100
|
||||
public void Invalid_arguments_throw(int totalInCents, int discountBarrierCents, int discountPercentage)
|
||||
{
|
||||
var order = new Order { Id = Guid.NewGuid(), TotalInCents = totalInCents };
|
||||
var order = ValidOrder().WithTotal(totalInCents).Build();
|
||||
|
||||
Assert.Throws<ArgumentOutOfRangeException>(
|
||||
() => DiscountCalculator.CalculateDiscount(order, discountBarrierCents, discountPercentage));
|
||||
|
||||
Reference in New Issue
Block a user