From a28dffd5eefebf31edc261d6118a98122b060e35 Mon Sep 17 00:00:00 2001 From: Rob Moore Date: Thu, 18 Jun 2015 22:22:04 +0800 Subject: [PATCH 1/4] Added contributing.md to the .sln --- TestStack.Dossier.sln | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/TestStack.Dossier.sln b/TestStack.Dossier.sln index 954293b..f467254 100644 --- a/TestStack.Dossier.sln +++ b/TestStack.Dossier.sln @@ -1,11 +1,12 @@  Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 2013 -VisualStudioVersion = 12.0.30723.0 +VisualStudioVersion = 12.0.31101.0 MinimumVisualStudioVersion = 10.0.40219.1 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{BC8508D1-6FCB-46B2-9C14-F41F6AD76B09}" ProjectSection(SolutionItems) = preProject BREAKING_CHANGES.md = BREAKING_CHANGES.md + CONTRIBUTING.md = CONTRIBUTING.md LICENSE = LICENSE logo.png = logo.png NextVersion.txt = NextVersion.txt From fc2660016fa8c9549ad6b08f24ab1e778834d087 Mon Sep 17 00:00:00 2001 From: Rob Moore Date: Thu, 18 Jun 2015 22:33:51 +0800 Subject: [PATCH 2/4] Added failing test for #40 --- TestStack.Dossier.Tests/BuildListTests.cs | 19 +++++++++++++++++++ .../Builders/BuilderWithDefaults.cs | 16 ++++++++++++++++ .../TestStack.Dossier.Tests.csproj | 1 + 3 files changed, 36 insertions(+) create mode 100644 TestStack.Dossier.Tests/TestHelpers/Builders/BuilderWithDefaults.cs diff --git a/TestStack.Dossier.Tests/BuildListTests.cs b/TestStack.Dossier.Tests/BuildListTests.cs index 5e0e15b..5c28a61 100644 --- a/TestStack.Dossier.Tests/BuildListTests.cs +++ b/TestStack.Dossier.Tests/BuildListTests.cs @@ -172,5 +172,24 @@ public void WhenBuildingEntitiesImplicitly_ThenTheAnonymousValueFixtureIsSharedA customers[3].CustomerClass.ShouldBe(CustomerClass.Gold); customers[4].CustomerClass.ShouldBe(CustomerClass.Platinum); } + + [Fact] + public void GivenBuilderWithSetCallsInConstructor_WhenBuildingAListOfTheBuilders_ThenDefaultValuesShouldBeRespectedUnlessOverridden() + { + const string overriddenFirstName = "FirstOverride"; + const string overriddenLastName = "LastOverride"; + + var customers = BuilderWithDefaults.CreateListOfSize(3) + .TheFirst(1).With(x => x.Set(y => y.FirstName, overriddenFirstName)) + .TheNext(1).With(x => x.Set(y => y.LastName, overriddenLastName)) + .BuildList(); + + customers[0].FirstName.ShouldBe(overriddenFirstName); + customers[0].LastName.ShouldBe(BuilderWithDefaults.DefaultLastName); + customers[1].FirstName.ShouldBe(BuilderWithDefaults.DefaultFirstName); + customers[1].LastName.ShouldBe(overriddenLastName); + customers[2].FirstName.ShouldBe(BuilderWithDefaults.DefaultFirstName); + customers[2].LastName.ShouldBe(BuilderWithDefaults.DefaultLastName); + } } } diff --git a/TestStack.Dossier.Tests/TestHelpers/Builders/BuilderWithDefaults.cs b/TestStack.Dossier.Tests/TestHelpers/Builders/BuilderWithDefaults.cs new file mode 100644 index 0000000..32f9bec --- /dev/null +++ b/TestStack.Dossier.Tests/TestHelpers/Builders/BuilderWithDefaults.cs @@ -0,0 +1,16 @@ +using TestStack.Dossier.Tests.TestHelpers.Objects.Entities; + +namespace TestStack.Dossier.Tests.TestHelpers.Builders +{ + public class BuilderWithDefaults : TestDataBuilder + { + public const string DefaultFirstName = "Joe"; + public const string DefaultLastName = "Bloggs"; + + public BuilderWithDefaults() + { + Set(x => x.FirstName, DefaultFirstName); + Set(x => x.LastName, DefaultLastName); + } + } +} diff --git a/TestStack.Dossier.Tests/TestStack.Dossier.Tests.csproj b/TestStack.Dossier.Tests/TestStack.Dossier.Tests.csproj index 380dd50..4391a4f 100644 --- a/TestStack.Dossier.Tests/TestStack.Dossier.Tests.csproj +++ b/TestStack.Dossier.Tests/TestStack.Dossier.Tests.csproj @@ -65,6 +65,7 @@ + From 3ad539e8a6023f641669e39dabc55cdd032a1d58 Mon Sep 17 00:00:00 2001 From: Ivan Lukic Date: Thu, 18 Jun 2015 13:51:16 +0200 Subject: [PATCH 3/4] fixed exception using defaults in constructors when creating lists (issue #40) --- TestStack.Dossier/Lists/ListBuilder.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TestStack.Dossier/Lists/ListBuilder.cs b/TestStack.Dossier/Lists/ListBuilder.cs index 370a800..148a36f 100644 --- a/TestStack.Dossier/Lists/ListBuilder.cs +++ b/TestStack.Dossier/Lists/ListBuilder.cs @@ -20,10 +20,10 @@ public class ListBuilder internal ListBuilder(int size) { + _list = new List(); BuilderProxy = (TBuilder) ListBuilderGenerator.Generator .CreateClassProxy(typeof (TBuilder), new ProxyGenerationOptions(new EnsureAllMethodsVirtual()), new ListBuilderInterceptor(this)); BuilderProxy.ListBuilder = this; - _list = new List(); var fixture = new AnonymousValueFixture(); for (var i = 0; i < size; i++) _list.Add(new TBuilder {Any = fixture}); From aace6e461ba06d0e1f241708dceafe928df989d7 Mon Sep 17 00:00:00 2001 From: Rob Moore Date: Thu, 18 Jun 2015 22:36:16 +0800 Subject: [PATCH 4/4] Removing redundant code --- TestStack.Dossier/Lists/ListBuilder.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/TestStack.Dossier/Lists/ListBuilder.cs b/TestStack.Dossier/Lists/ListBuilder.cs index 148a36f..595e94b 100644 --- a/TestStack.Dossier/Lists/ListBuilder.cs +++ b/TestStack.Dossier/Lists/ListBuilder.cs @@ -14,8 +14,8 @@ public class ListBuilder where TBuilder : TestDataBuilder, new() where TObject : class { - private int _start = 0; - private int _count = 0; + private int _start; + private int _count; private readonly List _list; internal ListBuilder(int size)