public virtual void Setup() { _tfsListener = MockRepository.GenerateStub <ITfsListener>(); // configure deployer var deployer = MockRepository.GenerateStub <IDeployer>(); deployer.Stub(o => o.ExecuteDeploymentProcess(null, 0)) .IgnoreArguments() .WhenCalled(mi => _deployerExecuteCount++) .Repeat.Any(); _tfsListener.BuildStatusChangeEventReceived += null; _eventRaiser = _tfsListener.GetEventRaiser(mo => mo.BuildStatusChangeEventReceived += null); // we're using a real DuplicateEventDetector _duplicateEventDetector = new DuplicateEventDetector(); _statusChanged = new BuildStatusChangeEvent { StatusChange = new Change() }; var deploymentEventRecorder = MockRepository.GenerateStub <IDeploymentEventRecorder>(); _deployerExecuteCount = 0; _buildStatusTrigger = new TfsBuildStatusTrigger(_tfsListener, () => deployer, _duplicateEventDetector, deploymentEventRecorder); _buildStatusTrigger.Start(); }
public void TfsBuildStatusTrigger_should_record_all_required_triggered_event_details() { // Arrange var listener = MockRepository.GenerateStub <ITfsListener>(); var buildStatusEventRaiser = listener.GetEventRaiser(o => o.BuildStatusChangeEventReceived += null); var buildStatusEventArgs = new BuildStatusChangeEventArgs( new BuildStatusChangeEvent { ChangedBy = @"Domain\MrMcGoo", ChangedTime = new DateTime(2011, 1, 1, 1, 1, 1).ToString(), Id = "Foobar_123.4", StatusChange = new Change { FieldName = "Quality", NewValue = "Production", OldValue = "Staging" }, TeamFoundationServerUrl = "https://foo/tfs/foo", TeamProject = "Foo" }, new TfsIdentity() ); var deployer = MockRepository.GenerateStub <IDeployer>(); Func <IDeployer> deployerFactory = () => deployer; var duplicateEventDetector = MockRepository.GenerateStub <IDuplicateEventDetector>(); duplicateEventDetector.Stub(o => o.IsUnique(null)) .IgnoreArguments() .Return(true); var deploymentEventRecorder = MockRepository.GenerateStub <IDeploymentEventRecorder>(); var trigger = new TfsBuildStatusTrigger(listener, deployerFactory, duplicateEventDetector, deploymentEventRecorder); trigger.Start(); // Act buildStatusEventRaiser.Raise(listener, buildStatusEventArgs); // Assert deploymentEventRecorder.AssertWasCalled(o => o.RecordTriggered( Arg <string> .Is.Equal("Foobar_123.4"), Arg <string> .Is.Equal("Foo"), Arg <string> .Is.Equal("https://foo/tfs/foo"), Arg <string> .Is.Equal(@"Domain\MrMcGoo"), Arg <string> .Is.Equal("Staging"), Arg <string> .Is.Equal("Production") )); }
public void TfsBuildStatusTrigger_should_pass_recorded_event_id_to_deployer() { // Arrange const int eventId = 9; var listener = MockRepository.GenerateStub <ITfsListener>(); var buildStatusEventRaiser = listener.GetEventRaiser(o => o.BuildStatusChangeEventReceived += null); var buildStatusEventArgs = new BuildStatusChangeEventArgs( new BuildStatusChangeEvent { Id = "Foobar_123.5", StatusChange = new Change() }, new TfsIdentity() ); var deployer = MockRepository.GenerateStub <IDeployer>(); Func <IDeployer> deployerFactory = () => deployer; var duplicateEventDetector = MockRepository.GenerateStub <IDuplicateEventDetector>(); duplicateEventDetector.Stub(o => o.IsUnique(null)) .IgnoreArguments() .Return(true); var deploymentEventRecorder = MockRepository.GenerateStub <IDeploymentEventRecorder>(); deploymentEventRecorder.Stub(o => o.RecordTriggered(null, null, null, null, null, null)) .IgnoreArguments() .Return(eventId); var trigger = new TfsBuildStatusTrigger(listener, deployerFactory, duplicateEventDetector, deploymentEventRecorder); trigger.Start(); // Act buildStatusEventRaiser.Raise(listener, buildStatusEventArgs); // Assert deployer.AssertWasCalled(o => o.ExecuteDeploymentProcess( Arg <BuildStatusChangeEvent> .Is.Anything, Arg <int> .Is.Equal(eventId) )); }
public void TfsBuildStatusTrigger_should_not_record_duplicate_triggered_event() { // Arrange var listener = MockRepository.GenerateStub <ITfsListener>(); var buildStatusEventRaiser = listener.GetEventRaiser(o => o.BuildStatusChangeEventReceived += null); var buildStatusEventArgs = new BuildStatusChangeEventArgs( new BuildStatusChangeEvent { Id = "Foobar_123.4", StatusChange = new Change() }, new TfsIdentity() ); var deployer = MockRepository.GenerateStub <IDeployer>(); Func <IDeployer> deployerFactory = () => deployer; var duplicateEventDetector = MockRepository.GenerateStub <IDuplicateEventDetector>(); duplicateEventDetector.Stub(o => o.IsUnique(null)) .IgnoreArguments() .Return(false); var deploymentEventRecorder = MockRepository.GenerateStub <IDeploymentEventRecorder>(); var trigger = new TfsBuildStatusTrigger(listener, deployerFactory, duplicateEventDetector, deploymentEventRecorder); trigger.Start(); // Act buildStatusEventRaiser.Raise(listener, buildStatusEventArgs); // Assert deploymentEventRecorder.AssertWasNotCalled(o => o.RecordTriggered( Arg <string> .Is.Equal("Foobar_123.4"), Arg <string> .Is.Anything, Arg <string> .Is.Anything, Arg <string> .Is.Anything, Arg <string> .Is.Anything, Arg <string> .Is.Anything )); }