public void Integration_Execute_Should_GetOriginalBreakerForSubseqFailedBuild() { string keeperFileName = @"c:\build\tools.buildkeeper.state.xml"; string requestorEmail = "*****@*****.**"; string requestorDisplayName = "Stanislav Dvoychenko"; string dateFormat = "dd-MMM-yyyTHH:mm:ss"; // First lets have a good build BuildGateKeeper keeper = new BuildGateKeeper { BuildStatus = "Success", RequestorDisplayName = requestorDisplayName, RequestorMailAddress = requestorEmail, DateFormat = dateFormat, StateFilePath = keeperFileName }; keeper.Execute(); // Second, lets have a failed build requestorDisplayName = "Stanislav TheBad"; requestorEmail = "*****@*****.**"; keeper = new BuildGateKeeper { BuildStatus = "Failure", RequestorDisplayName = requestorDisplayName, RequestorMailAddress = requestorEmail, DateFormat = dateFormat, StateFilePath = keeperFileName }; keeper.Execute(); // Third, lets have a failed build again requestorDisplayName = "Stanislav Undetermined"; requestorEmail = "*****@*****.**"; keeper = new BuildGateKeeper { BuildStatus = "Failure", RequestorDisplayName = requestorDisplayName, RequestorMailAddress = requestorEmail, DateFormat = dateFormat, StateFilePath = keeperFileName }; keeper.Execute(); Assert.AreEqual("*****@*****.**", keeper.BreakerMailAddress); Assert.AreEqual("Stanislav TheBad", keeper.BreakerDisplayName); }
private void UnitTestHelper(string status, Action<IStatePersistor, string> expectationSetup, Action<BuildGateKeeper> validateKeeper) { // Set values. string keeperFileName = @"c:\build\tools.buildkeeper.state.xml"; string requestorEmail = "*****@*****.**"; string requestorDisplayName = "Stanislav Dvoychenko"; DateTime expectedTimeStamp = DateTime.Now; string dateFormat = "dd-MMM-yyyTHH:mm:ss"; string expectedRecord = String.Format("{0};{1};{2};{3}", expectedTimeStamp.ToString(dateFormat), requestorDisplayName, requestorEmail, status); // Create date provider and state provider stubs/mocks MockRepository mocks = new MockRepository(); IDateProvider dateProvider = mocks.Stub<IDateProvider>(); IStatePersistor statePersistor = mocks.DynamicMock<IStatePersistor>(); // Set up stubbed/mocked methods dateProvider.Stub<IDateProvider>((p) => p.GetTimeStamp()).Return(expectedTimeStamp); using (mocks.Record()) { expectationSetup(statePersistor, expectedRecord); } // Create task instance BuildGateKeeper keeper = new BuildGateKeeper(); // Setup properties. keeper.BuildStatus = status; keeper.StateFilePath = keeperFileName; keeper.RequestorMailAddress = requestorEmail; keeper.RequestorDisplayName = requestorDisplayName; // Assert input properties are set alright. Assert.AreEqual(keeperFileName, keeper.StateFilePath); Assert.AreEqual(status, keeper.BuildStatus); // Prepare a string builder to hold the keeper output StringBuilder sb = new StringBuilder(); using (StringWriter writer = new StringWriter(sb)) { using (mocks.Playback()) { keeper.StatePersistor = statePersistor; keeper.DateProvider = dateProvider; keeper.Execute(); } } validateKeeper(keeper); }