private void BuildWatcherStatusChecked(object sender, StatusCheckedEventArgsArgs args) { ApplyUserMappings(args); SendCiServerConnectedEvents(); TryToGetAndSendNewSosOnlineAlerts(); BuildStatus[] allBuildStatuses = BuildStatusUtil.Merge(_previousBuildStatuses, args.BuildStatuses); IList <BuildStatus> changedBuildStatuses = GetChangedBuildStatuses(allBuildStatuses); if (!changedBuildStatuses.Any()) { return; } InvokeSetTrayIcon(changedBuildStatuses); InvokeRefreshStatusIfAnythingChanged(allBuildStatuses, changedBuildStatuses); AddAnyNewPeopleToSettings(changedBuildStatuses); UpdateBuildNamesInSettingsIfAnyChanged(changedBuildStatuses); IList <ChangedBuildStatusesAndTheirPreviousState> changedBuildStatusesAndTheirPreviousState = GetChangedBuildStatusesAndTheirPreviousState(changedBuildStatuses); FireApplicableRulesEngineEvents(changedBuildStatusesAndTheirPreviousState); WriteNewBuildsToSosDb(changedBuildStatusesAndTheirPreviousState); NotifyIfNewAchievements(changedBuildStatuses); InvokeStatsChanged(changedBuildStatuses); SyncNewBuildsToSos(changedBuildStatuses); InvokeNewNewsItemIfAny(changedBuildStatusesAndTheirPreviousState); CacheBuildStatuses(changedBuildStatuses); }
public void ExecuteNewBuilds(IList <BuildStatus> newBuildStatuses) { try { ApplyUserMappings(newBuildStatuses); SendCiServerConnectedEvents(); TryToGetAndSendNewSosOnlineAlerts(); var allBuildStatuses = BuildStatusUtil.Merge(_previousBuildStatuses, newBuildStatuses); var changedBuildStatuses = GetChangedBuildStatuses(allBuildStatuses); if (!changedBuildStatuses.Any()) { if (_restarting) { InvokeRefreshStatus(allBuildStatuses); } return; } InvokeSetTrayIcon(changedBuildStatuses); InvokeRefreshStatusIfAnythingChanged(allBuildStatuses, changedBuildStatuses); AddAnyNewPeopleToSettings(changedBuildStatuses); UpdateBuildNamesInSettingsIfAnyChanged(changedBuildStatuses); var changedBuildStatusesAndTheirPreviousState = GetChangedBuildStatusesAndTheirPreviousState(changedBuildStatuses); FireApplicableRulesEngineEvents(changedBuildStatusesAndTheirPreviousState); WriteNewBuildsToSosDb(changedBuildStatusesAndTheirPreviousState); NotifyIfNewAchievements(changedBuildStatuses); InvokeStatsChanged(changedBuildStatuses); SyncNewBuildsToSos(changedBuildStatuses); InvokeNewNewsItemIfAny(changedBuildStatusesAndTheirPreviousState); CacheBuildStatuses(changedBuildStatuses); } finally { _restarting = false; } }
public void Merge_RemovedBuildStatus_Retained() { var oldStatus = new[] { new BuildStatus { BuildDefinitionId = "1", BuildStatusEnum = BuildStatusEnum.Working } }; var newStatuses = new BuildStatus[] {}; var result = BuildStatusUtil.Merge(oldStatus, newStatuses); Assert.AreEqual(1, result.Count()); }
public void Merge_NewBuildStatus_Added() { var oldStatus = new BuildStatus[] {}; var newStatuses = new[] { new BuildStatus { BuildDefinitionId = "1", BuildStatusEnum = BuildStatusEnum.Working } }; var result = BuildStatusUtil.Merge(oldStatus, newStatuses); Assert.AreEqual(1, result.Count()); Assert.AreEqual("1", result[0].BuildDefinitionId); Assert.AreEqual(BuildStatusEnum.Working, result[0].BuildStatusEnum); }
public void Merge_ExistingUnchangedBuildStatus_NotOverwritten() { var oldStatus = new[] { new BuildStatus { BuildDefinitionId = "1", BuildStatusEnum = BuildStatusEnum.Working, LocalStartTime = new DateTime(2010, 1, 1) } }; var newStatuses = new[] { new BuildStatus { BuildDefinitionId = "1", BuildStatusEnum = BuildStatusEnum.Working, LocalStartTime = new DateTime(2012, 2, 2) } }; var result = BuildStatusUtil.Merge(oldStatus, newStatuses); Assert.AreEqual(1, result.Count()); Assert.AreEqual("1", result[0].BuildDefinitionId); Assert.AreEqual(BuildStatusEnum.Working, result[0].BuildStatusEnum); Assert.AreEqual(new DateTime(2010, 1, 1), result[0].LocalStartTime); }