Skip to content

Commit 92bf513

Browse files
committed
Merge pull request #42 from TestStack/issue-40-fix
Issue 40 fix
2 parents 3d53abb + aace6e4 commit 92bf513

File tree

5 files changed

+41
-4
lines changed

5 files changed

+41
-4
lines changed

TestStack.Dossier.Tests/BuildListTests.cs

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -172,5 +172,24 @@ public void WhenBuildingEntitiesImplicitly_ThenTheAnonymousValueFixtureIsSharedA
172172
customers[3].CustomerClass.ShouldBe(CustomerClass.Gold);
173173
customers[4].CustomerClass.ShouldBe(CustomerClass.Platinum);
174174
}
175+
176+
[Fact]
177+
public void GivenBuilderWithSetCallsInConstructor_WhenBuildingAListOfTheBuilders_ThenDefaultValuesShouldBeRespectedUnlessOverridden()
178+
{
179+
const string overriddenFirstName = "FirstOverride";
180+
const string overriddenLastName = "LastOverride";
181+
182+
var customers = BuilderWithDefaults.CreateListOfSize(3)
183+
.TheFirst(1).With(x => x.Set(y => y.FirstName, overriddenFirstName))
184+
.TheNext(1).With(x => x.Set(y => y.LastName, overriddenLastName))
185+
.BuildList();
186+
187+
customers[0].FirstName.ShouldBe(overriddenFirstName);
188+
customers[0].LastName.ShouldBe(BuilderWithDefaults.DefaultLastName);
189+
customers[1].FirstName.ShouldBe(BuilderWithDefaults.DefaultFirstName);
190+
customers[1].LastName.ShouldBe(overriddenLastName);
191+
customers[2].FirstName.ShouldBe(BuilderWithDefaults.DefaultFirstName);
192+
customers[2].LastName.ShouldBe(BuilderWithDefaults.DefaultLastName);
193+
}
175194
}
176195
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
using TestStack.Dossier.Tests.TestHelpers.Objects.Entities;
2+
3+
namespace TestStack.Dossier.Tests.TestHelpers.Builders
4+
{
5+
public class BuilderWithDefaults : TestDataBuilder<Customer, BuilderWithDefaults>
6+
{
7+
public const string DefaultFirstName = "Joe";
8+
public const string DefaultLastName = "Bloggs";
9+
10+
public BuilderWithDefaults()
11+
{
12+
Set(x => x.FirstName, DefaultFirstName);
13+
Set(x => x.LastName, DefaultLastName);
14+
}
15+
}
16+
}

TestStack.Dossier.Tests/TestStack.Dossier.Tests.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@
6565
<Compile Include="Factories\AutoFixtureFactoryTests.cs" />
6666
<Compile Include="Factories\CallConstructorFactoryTests.cs" />
6767
<Compile Include="Factories\PublicPropertySettersFactoryTests.cs" />
68+
<Compile Include="TestHelpers\Builders\BuilderWithDefaults.cs" />
6869
<Compile Include="TestHelpers\Objects\Entities\Company.cs" />
6970
<Compile Include="TestHelpers\Objects\Entities\Customer.cs" />
7071
<Compile Include="TestHelpers\Objects\Entities\CustomerClass.cs" />

TestStack.Dossier.sln

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11

22
Microsoft Visual Studio Solution File, Format Version 12.00
33
# Visual Studio 2013
4-
VisualStudioVersion = 12.0.30723.0
4+
VisualStudioVersion = 12.0.31101.0
55
MinimumVisualStudioVersion = 10.0.40219.1
66
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{BC8508D1-6FCB-46B2-9C14-F41F6AD76B09}"
77
ProjectSection(SolutionItems) = preProject
88
BREAKING_CHANGES.md = BREAKING_CHANGES.md
9+
CONTRIBUTING.md = CONTRIBUTING.md
910
LICENSE = LICENSE
1011
logo.png = logo.png
1112
NextVersion.txt = NextVersion.txt

TestStack.Dossier/Lists/ListBuilder.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,16 +14,16 @@ public class ListBuilder<TObject, TBuilder>
1414
where TBuilder : TestDataBuilder<TObject, TBuilder>, new()
1515
where TObject : class
1616
{
17-
private int _start = 0;
18-
private int _count = 0;
17+
private int _start;
18+
private int _count;
1919
private readonly List<TBuilder> _list;
2020

2121
internal ListBuilder(int size)
2222
{
23+
_list = new List<TBuilder>();
2324
BuilderProxy = (TBuilder) ListBuilderGenerator.Generator
2425
.CreateClassProxy(typeof (TBuilder), new ProxyGenerationOptions(new EnsureAllMethodsVirtual()), new ListBuilderInterceptor<TObject, TBuilder>(this));
2526
BuilderProxy.ListBuilder = this;
26-
_list = new List<TBuilder>();
2727
var fixture = new AnonymousValueFixture();
2828
for (var i = 0; i < size; i++)
2929
_list.Add(new TBuilder {Any = fixture});

0 commit comments

Comments
 (0)