private void ValidateConnectionSwitch(Action connectionSwitchAction) { OctaneConfiguration.Url = Guid.NewGuid().ToString(); CollectionAssert.AreEqual(new List <string>(), WorkspaceSessionPersistanceManager.History, "Invalid initial history"); WorkspaceSessionPersistanceManager.UpdateHistory("1"); var defect = new Defect(111) { SubType = WorkItem.SUBTYPE_DEFECT }; WorkspaceSessionPersistanceManager.SetActiveEntity(defect); connectionSwitchAction(); CollectionAssert.AreEqual(new List <string>(), WorkspaceSessionPersistanceManager.History, "Mismatched history after reset"); ValidateActiveEntity(null); WorkspaceSessionPersistanceManager.UpdateHistory("2"); WorkspaceSessionPersistanceManager.SetActiveEntity(defect); CollectionAssert.AreEqual(new List <string> { "2" }, WorkspaceSessionPersistanceManager.History, "Mismatched history"); ValidateActiveEntity(defect); }
protected override void TestCleanupInternal() { OctaneConfiguration.Url = _url; OctaneConfiguration.SharedSpaceId = _ssid; OctaneConfiguration.WorkSpaceId = _wsid; OctaneConfiguration.Username = _username; OctaneConfiguration.Password = _password; WorkspaceSessionPersistanceManager.ClearActiveEntity(); }
protected override void TestInitializeInternal() { _url = OctaneConfiguration.Url; _ssid = OctaneConfiguration.SharedSpaceId; _wsid = OctaneConfiguration.WorkSpaceId; _username = OctaneConfiguration.Username; _password = OctaneConfiguration.Password; WorkspaceSessionPersistanceManager.ClearActiveEntity(); }
/// <summary> /// Clear the current active item /// </summary> public static void ClearActiveItem() { if (CurrentActiveItem != null) { CurrentActiveItem.IsActiveWorkItem = false; } CurrentActiveItem = null; WorkspaceSessionPersistanceManager.ClearActiveEntity(); }
private void SearchInternal(object parameter) { if (string.IsNullOrEmpty(SearchFilter) || string.IsNullOrEmpty(SearchFilter.Trim())) { return; } SearchFilter = SearchFilter.Trim(); WorkspaceSessionPersistanceManager.UpdateHistory(SearchFilter); NotifyPropertyChanged("SearchHistory"); PluginWindowManager.ShowSearchWindow(MainWindow.PluginPackage, SearchFilter); }
public void WorkspaceSessionPersistanceManagerTests_SetActiveEntity_ValidEntity_Success() { ValidateActiveEntity(null); var story = new Story(123) { SubType = WorkItem.SUBTYPE_STORY }; WorkspaceSessionPersistanceManager.SetActiveEntity(story); ValidateActiveEntity(story); WorkspaceSessionPersistanceManager.ClearActiveEntity(); ValidateActiveEntity(null); }
private void ValidateActiveEntity(BaseEntity expectedEntity) { if (expectedEntity == null) { Assert.IsNull(WorkspaceSessionPersistanceManager.GetActiveEntity(), "There shouldn't be any active entity"); return; } var activeEntity = WorkspaceSessionPersistanceManager.GetActiveEntity(); Assert.AreEqual(expectedEntity.Id, activeEntity.Id, "Mismatched entity ids"); Assert.AreEqual(VisualStudio.Common.Utility.GetConcreteEntityType(expectedEntity), VisualStudio.Common.Utility.GetConcreteEntityType(activeEntity), "Mismatched entity types"); Assert.IsTrue(WorkspaceSessionPersistanceManager.IsActiveEntity(expectedEntity), "Entity isn't the active entity"); }
/// <summary> /// Set the given item as the current active item /// </summary> public static void SetActiveItem(OctaneItemViewModel octaneItem) { if (octaneItem == null) { return; } if (CurrentActiveItem != null) { CurrentActiveItem.IsActiveWorkItem = false; } CurrentActiveItem = octaneItem; CurrentActiveItem.IsActiveWorkItem = true; WorkspaceSessionPersistanceManager.SetActiveEntity(CurrentActiveItem.Entity); }
public void WorkspaceSessionPersistanceManagerTests_UpdateHistory_EmptyFilter_Success() { OctaneConfiguration.Url = Guid.NewGuid().ToString(); CollectionAssert.AreEqual(new List <string>(), WorkspaceSessionPersistanceManager.History, "Invalid initial history"); WorkspaceSessionPersistanceManager.UpdateHistory("a"); WorkspaceSessionPersistanceManager.UpdateHistory("b"); var expectedHistory = new List <string> { "b", "a" }; CollectionAssert.AreEqual(expectedHistory, WorkspaceSessionPersistanceManager.History, "Mismatched history"); WorkspaceSessionPersistanceManager.UpdateHistory(string.Empty); CollectionAssert.AreEqual(expectedHistory, WorkspaceSessionPersistanceManager.History, "Mismatched history after trying to add empty string"); }
public void WorkspaceSessionPersistanceManagerTests_UpdateHistory_SaveExactlyMaxElements_Success() { OctaneConfiguration.Url = Guid.NewGuid().ToString(); CollectionAssert.AreEqual(new List <string>(), WorkspaceSessionPersistanceManager.History, "Invalid initial history"); var expectedHistory = new List <string>(); for (var i = 0; i < WorkspaceSessionPersistanceManager.MaxSearchHistorySize; i++) { expectedHistory.Add(i.ToString()); WorkspaceSessionPersistanceManager.UpdateHistory(i.ToString()); } expectedHistory.Reverse(); CollectionAssert.AreEqual(expectedHistory, WorkspaceSessionPersistanceManager.History, "Mismatched history"); }
public void WorkspaceSessionPersistanceManagerTests_SetActiveEntity_ChangeActiveEntity_Success() { ValidateActiveEntity(null); var story = new Story(123) { SubType = WorkItem.SUBTYPE_STORY }; WorkspaceSessionPersistanceManager.SetActiveEntity(story); ValidateActiveEntity(story); var defect = new Defect(456) { SubType = WorkItem.SUBTYPE_DEFECT }; WorkspaceSessionPersistanceManager.SetActiveEntity(defect); ValidateActiveEntity(defect); }
public void WorkspaceSessionPersistanceManagerTests_UpdateHistory_ResetApplication_Success() { OctaneConfiguration.Url = Guid.NewGuid().ToString(); CollectionAssert.AreEqual(new List <string>(), WorkspaceSessionPersistanceManager.History, "Invalid initial history"); WorkspaceSessionPersistanceManager.UpdateHistory("1"); var exposedHistoryManager = ExposedClass.From(typeof(WorkspaceSessionPersistanceManager)); exposedHistoryManager._metadata = null; CollectionAssert.AreEqual(new List <string> { "1" }, WorkspaceSessionPersistanceManager.History, "Mismatched history after reset"); WorkspaceSessionPersistanceManager.UpdateHistory("2"); CollectionAssert.AreEqual(new List <string> { "2", "1" }, WorkspaceSessionPersistanceManager.History, "Mismatched history"); }
/// <summary> /// Update active item button in toolbar with the current active item's information /// </summary> public void UpdateActiveItemInToolbar() { try { var activeEntity = WorkspaceSessionPersistanceManager.GetActiveEntity(); if (activeEntity != null) { _activeItemMenuCommand.Text = EntityTypeRegistry.GetEntityTypeInformation(activeEntity).ShortLabel + " " + activeEntity.Id; _activeItemMenuCommand.Enabled = true; _copyCommitMessageCommand.Enabled = true; _stopWorkCommand.Enabled = true; } else { DisableActiveItemToolbar(); } } catch (Exception ex) { MessageBox.Show("Unable to update active item in Octane toolbar.\n\n" + "Failed with message: " + ex.Message, ToolWindowHelper.AppName, MessageBoxButton.OK, MessageBoxImage.Error); } }
private static void OpenActiveItemInDetailsWindowCallback(object caller, EventArgs args) { try { var command = caller as OleMenuCommand; if (command == null) { return; } var activeEntity = WorkspaceSessionPersistanceManager.GetActiveEntity(); if (activeEntity == null) { return; } PluginWindowManager.ShowDetailsWindow(MainWindow.PluginPackage, activeEntity); } catch (Exception ex) { MessageBox.Show("Unable to open details window for active item.\n\n" + "Failed with message: " + ex.Message, ToolWindowHelper.AppName, MessageBoxButton.OK, MessageBoxImage.Error); } }
/// <summary> /// Retrieve all the entities related to the current user /// </summary> internal async System.Threading.Tasks.Task LoadMyItemsAsync() { if (string.IsNullOrEmpty(OctaneConfiguration.Url)) { // No URL which means it's the first time use. Mode = MainWindowMode.FirstTime; return; } // If we already loading wait for the runnung load to complete. if (Mode == MainWindowMode.LoadingItems) { return; } Mode = MainWindowMode.LoadingItems; try { OctaneServices octaneService; try { octaneService = OctaneServices.GetInstance(); } catch (Exception e) { if (e.GetBaseException().Message.Equals("Object not created")) { OctaneServices.Create(OctaneConfiguration.Url, OctaneConfiguration.SharedSpaceId, OctaneConfiguration.WorkSpaceId); } octaneService = OctaneServices.GetInstance(); await octaneService.Connect(); } _myItems.Clear(); _totalItems = 0; bool foundActiveItem = false; IEnumerable <BaseEntity> items = await octaneService.GetMyItems(); // when a user story is converted to feature it might still be in the list of my work items, // the plugins do not support features in my work, so we just remove those entities items = items.Where(entity => !WorkItem.SUBTYPE_FEATURE.Equals(entity.GetStringValue(CommonFields.SubType))); if (sublistsMap == null) { sublistsMap = createMyWorkItemsSublistsMap(); } else { cleanSubListsMap(sublistsMap); } foreach (BaseEntity entity in items) { var octaneItem = new OctaneItemViewModel(entity); _totalItems++; if (WorkspaceSessionPersistanceManager.IsActiveEntity(entity)) { foundActiveItem = true; OctaneItemViewModel.SetActiveItem(octaneItem); } MyWorkItemsSublist itemSublist; string concreteEntityType = Utility.GetConcreteEntityType(entity); if (sublistsMap.TryGetValue(concreteEntityType, out itemSublist)) { itemSublist.Items.Add(octaneItem); } } myWorkItemSublists = sublistsMap.Values.ToList(); if (!foundActiveItem) { OctaneItemViewModel.ClearActiveItem(); MainWindowCommand.Instance?.DisableActiveItemToolbar(); } IList <BaseEntity> comments = await octaneService.GetMyCommentItems(); foreach (BaseEntity comment in comments) { _totalItems++; MyWorkItemsSublist itemSublist; if (sublistsMap.TryGetValue("comment", out itemSublist)) { itemSublist.Items.Add(new CommentViewModel(comment)); } } myWorkItemSublists.ForEach(ms => { if (ms.IsSelected) { foreach (var myWorkItem in ms.Items) { _myItems.Add(myWorkItem); } } }); Mode = MainWindowMode.ItemsLoaded; SearchFilter = ""; MainWindowCommand.Instance?.UpdateActiveItemInToolbar(); NotifyPropertyChanged(); } catch (Exception ex) { MainWindowCommand.Instance?.DisableActiveItemToolbar(); Mode = MainWindowMode.FailToLoad; if (ex is NotConnectedException) { LastExceptionMessage = "Failed to load \"My Work\""; } else { LastExceptionMessage = ex.Message; } } }
public void WorkspaceSessionPersistanceManagerTests_IsActiveEntity_Null_Success() { Assert.IsFalse(WorkspaceSessionPersistanceManager.IsActiveEntity(null)); }