public void CreateEvaluatesPostBuildActionsInOrderOfDescendingPriorityTest() { var firstAction = Substitute.For<IPostBuildAction>(); var secondAction = Substitute.For<IPostBuildAction>(); var buildStrategy = new DefaultBuildStrategyCompiler().Add(firstAction).Add(secondAction).Compile(); var executeCount = 0; firstAction.IsSupported(Arg.Any<Type>(), Arg.Any<string>(), Arg.Any<LinkedList<object>>()).Returns(true); secondAction.IsSupported(Arg.Any<Type>(), Arg.Any<string>(), Arg.Any<LinkedList<object>>()).Returns(true); firstAction.WhenForAnyArgs(x => x.Execute(null, null, null)).Do( x => { executeCount++; executeCount.Should().Be(1); }); secondAction.WhenForAnyArgs(x => x.Execute(null, null, null)).Do( x => { executeCount++; executeCount.Should().Be(2); }); var target = new DefaultExecuteStrategy(); target.Initialize(buildStrategy, buildStrategy.GetBuildLog()); target.Create(typeof(Simple)); firstAction.Received().Execute(Arg.Any<Type>(), Arg.Any<string>(), Arg.Any<LinkedList<object>>()); secondAction.Received().Execute(Arg.Any<Type>(), Arg.Any<string>(), Arg.Any<LinkedList<object>>()); }
public void CreateEvaluatesPostBuildActionsThatSupportTheBuildScenarioTest() { var firstAction = Substitute.For<IPostBuildAction>(); var secondAction = Substitute.For<IPostBuildAction>(); var buildStrategy = new DefaultBuildStrategyCompiler().Add(firstAction).Add(secondAction).Compile(); firstAction.IsSupported(Arg.Any<Type>(), Arg.Any<string>(), Arg.Any<LinkedList<object>>()).Returns(false); secondAction.IsSupported(Arg.Any<Type>(), Arg.Any<string>(), Arg.Any<LinkedList<object>>()).Returns(true); var target = new DefaultExecuteStrategy(); target.Initialize(buildStrategy, buildStrategy.GetBuildLog()); target.Create(typeof(Simple)); firstAction.DidNotReceive().Execute(Arg.Any<Type>(), Arg.Any<string>(), Arg.Any<LinkedList<object>>()); secondAction.Received().Execute(Arg.Any<Type>(), Arg.Any<string>(), Arg.Any<LinkedList<object>>()); }
public void CreateThrowsExceptionWhenPropertyCannotBeCreatedTest() { var typeCreator = Substitute.For<ITypeCreator>(); typeCreator.CanCreate(typeof(Address), "Address", Arg.Any<LinkedList<object>>()).Returns(true); typeCreator.Priority.Returns(int.MaxValue); typeCreator.AutoDetectConstructor.Returns(true); typeCreator.AutoPopulate.Returns(true); typeCreator.Create(typeof(Address), "Address", Arg.Any<LinkedList<object>>()) .Throws(new InvalidOperationException()); var buildStrategy = new DefaultBuildStrategyCompiler().Add(typeCreator).Compile(); var target = new DefaultExecuteStrategy<Company>(); target.Initialize(buildStrategy, buildStrategy.GetBuildLog()); Action action = () => target.CreateWith(); var exception = action.ShouldThrow<BuildException>().Where(x => x.Message != null).Where(x => x.BuildLog != null).Which; _output.WriteLine(exception.Message); }