Created
October 7, 2019 21:16
Revisions
-
jimmcslim created this gist
Oct 7, 2019 .There are no files selected for viewing
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 charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,80 @@ 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); } }