Created
October 7, 2019 21:16
-
-
Save jimmcslim/8ffaa843e433099711d6ffe51b5fec6e to your computer and use it in GitHub Desktop.
Demonstrating constructing parent/child relationships via TestStack Dossier.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System; | |
using System.Collections.Generic; | |
using System.Linq; | |
using Shouldly; | |
using TestStack.Dossier; | |
using TestStack.Dossier.Lists; | |
using Xunit; | |
namespace Dossier | |
{ | |
public class BuilderTest | |
{ | |
[Fact] | |
public void TestBuilder() | |
{ | |
var placements = PlacementBuilder | |
.CreateListOfSize(10) | |
.All().WithPlacementReference("sdfsdf") | |
.BuildList(); | |
OrderBuilder b = OrderBuilder.Default; | |
Order order = b | |
.WithOrderReference("order") | |
.WithPlacements(10, pb => pb.WithPlacementReference("sdfsdf")); | |
order.OrderReference.ShouldBe("order"); | |
order.Placements.Count.ShouldBe(10); | |
} | |
} | |
public class Order | |
{ | |
public string OrderReference { get; set; } | |
public List<Placement> Placements { get; } | |
public Order() | |
{ | |
Placements = new List<Placement>(); | |
} | |
public void AddPlacement(Placement placement) | |
{ | |
Placements.Add(placement); | |
} | |
} | |
public class Placement | |
{ | |
public string PlacementReference { get; set; } | |
} | |
public class OrderBuilder : TestDataBuilder<Order, OrderBuilder> | |
{ | |
public static OrderBuilder Default => new OrderBuilder(); | |
public OrderBuilder WithOrderReference(string value) => Set(x => x.OrderReference, value); | |
public OrderBuilder WithPlacements(int count, Func<PlacementBuilder, PlacementBuilder> modifier = null) | |
=> Set(x => x.Placements, PlacementBuilder.CreateListOfSize(count).All().With(modifier).BuildList().ToList()); | |
protected override Order BuildObject() | |
{ | |
var o = new Order | |
{ | |
OrderReference = Get(x => x.OrderReference) | |
}; | |
o.Placements.AddRange(Get(x => x.Placements)); | |
return o; | |
} | |
} | |
public class PlacementBuilder : TestDataBuilder<Placement, PlacementBuilder> | |
{ | |
public static PlacementBuilder Default => new PlacementBuilder(); | |
public virtual PlacementBuilder WithPlacementReference(string value) => Set(x => x.PlacementReference, value); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment