public async Task ExecuteScheduleFailedGoldenPathTest() { // given var testVstsMessage = CreateValidTestVstsMessage(); testVstsMessage.CompleteSychronously = true; var mockMessage = CreateMockMessage(testVstsMessage); var mockTaskClient = new MockTaskClient(); var mockReportingHelper = new MockJobStatusReportingHelper(testVstsMessage); var executeCalled = false; var handler = new MockVstsHandler { MockExecuteFunc = (vstsMessage) => { executeCalled = true; return(Task.FromResult(new VstsScheduleResult() { Message = "some error message", ScheduleFailed = true })); } }; // when await ProcessTestMessage(mockMessage, null, mockTaskClient, handler, mockReportingHelper); // then - executed successfully Assert.IsTrue(executeCalled); // then - job assigned & job completed was called Assert.AreEqual(1, mockTaskClient.EventsReceived.Count); var assignedEvent = mockTaskClient.EventsReceived[0] as JobAssignedEvent; Assert.IsNotNull(assignedEvent); Assert.AreEqual(2, mockReportingHelper.JobStatusReceived.Count); var startedMessage = mockReportingHelper.JobStatusReceived[0]; Assert.AreEqual(MockJobStatusReportingHelper.JobStatusEnum.Started, startedMessage); var completedMessage = mockReportingHelper.JobStatusReceived[1]; Assert.AreEqual(MockJobStatusReportingHelper.JobStatusEnum.Completed, completedMessage); Assert.AreEqual(testVstsMessage.JobId, mockReportingHelper.VstsMessage.JobId); Assert.IsFalse(mockReportingHelper.JobStatusSuccess); }
private static async Task ProcessTestMessage(MockServiceBusMessage mockServiceBusMessage = null, MockServiceBusQueueMessageListener mockMessageListener = null, MockTaskClient mockTaskClient = null, MockVstsHandler handler = null, MockJobStatusReportingHelper mockReportingHelper = null, ILogger logger = null, int maxRetryAttempts = 1, IBuildClient mockBuildClient = null) { mockServiceBusMessage = mockServiceBusMessage ?? CreateMockMessage(CreateValidTestVstsMessage()); mockTaskClient = mockTaskClient ?? new MockTaskClient(); mockBuildClient = mockBuildClient ?? new MockBuildClient() { MockBuild = new Build() { Status = BuildStatus.InProgress } }; mockReportingHelper = mockReportingHelper ?? new MockJobStatusReportingHelper(new TestVstsMessage()); var mockReleaseClient = new MockReleaseClient() { MockRelease = new Release() { Status = ReleaseStatus.Active } }; handler = handler ?? new MockVstsHandler { MockExecuteFunc = (vstsMessage) => Task.FromResult(new VstsScheduleResult() { Message = "(test) mock execute requested", ScheduledId = "someId", ScheduleFailed = false }) }; logger = logger ?? new TraceLogger(); var settings = new ServiceBusQueueMessageHandlerSettings { MaxRetryAttempts = maxRetryAttempts, TimeLineNamePrefix = "someTimeline", WorkerName = "someWorker" }; mockMessageListener = mockMessageListener ?? new MockServiceBusQueueMessageListener(); var schedulingBroker = new TestableServiceBusQueueMessageHandler(mockMessageListener, handler, settings, logger, mockTaskClient, mockBuildClient, mockReportingHelper, mockReleaseClient); var cancelSource = new CancellationTokenSource(); await schedulingBroker.ReceiveAsync(mockServiceBusMessage, cancelSource.Token); }