Пример #1
0
        public void TfsWorkItemCtorShouldThrowIfWorkItemIsInvalid()
        {
            // ReSharper disable once UnusedVariable
            Action action = () => { var x = new TfsWorkItem(23); };

            action.ShouldThrow <ArgumentException>().And.ParamName.Should().Be("workItem");
        }
Пример #2
0
        public override async void GetIssuesAndResolvePortedTfsIssue(TfsWorkItem item, string title)
        {
            if (_gettingIssues)
            {
                return;
            }

            _gettingIssues = true;
            AllIssues.Clear();
            OnPropertyChanged("Issues");
            var wrapper = Repository;

            if (wrapper != null && wrapper.Repository != null)
            {
                var repository = wrapper.Repository;
                var request    = new RepositoryIssueRequest();
                request.State  = ItemState.Open;
                request.Filter = IssueFilter.All;
                await GetIssues(repository.Owner.Login, repository.Name, request);

                // Resolve and close TFS issue
                var matchingIssues = AllIssues.Where(i => i.Title == title);
                if (matchingIssues.Any())
                {
                    var number = matchingIssues.Max(i => i.Number);
                    var issue  = matchingIssues.FirstOrDefault(i => i.Number == number);
                    if (issue != null)
                    {
                        item.Resolve(issue);
                    }
                }
            }
            _gettingIssues = false;
        }
Пример #3
0
        public void TfsWorkItemCtorShouldThrowIfWorkItemIsNull()
        {
            // ReSharper disable once UnusedVariable
            Action action = () => { var x = new TfsWorkItem(null); };

            action.ShouldThrow<ArgumentNullException>().And.ParamName.Should().Be("workItem");
        }
Пример #4
0
 private Issue GetIssueFromTfsWorkItem(TfsWorkItem wi)
 {
     return(new Issue
     {
         Id = wi.Id.ToString(),
         Url = _tfsApi.ConnectionUri + "/web/wi.aspx?id=" + wi.Id
     });
 }
Пример #5
0
        public void SerializesTheTypeOfTheWorkItemByReferenceName()
        {
            // Arrange
            Mock <ITfsWorkItem> mockItem = CreateMockWorkItem();

            AddFieldToMockItem(mockItem, Constants.SystemWorkItemTypeFieldReferenceName, "wit");

            // Act
            XElement ans = TfsWorkItem.Serialize(mockItem.Object);

            // Assert
            TestHelper.AssertXmlNodeContent("wit", ans, "/wi:WorkItem/wi:Field[@name='System.WorkItemType']", "Work item type not serialized correctly or missing");
        }
Пример #6
0
        private ExternalIssueDetails GetDetails(TfsWorkItem wi)
        {
            var eid = new ExternalIssueDetails
            {
                Id          = wi.Id.ToString(),
                Created     = wi.Created.ToString("dd-MM-yyyy HH:mm:ss"),
                Comments    = wi.HistoryComments,
                Status      = wi.State,
                Summary     = wi.Title,
                Description = wi.Description,
            };

            return(eid);
        }
Пример #7
0
        public void SerializesOtherFieldsAsRequested()
        {
            // Arrange
            Mock <ITfsWorkItem> mockItem = CreateMockWorkItem();

            AddFieldToMockItem(mockItem, "A.B", "ab");
            AddFieldToMockItem(mockItem, "A.C", "ac");

            // Act
            XElement ans = TfsWorkItem.Serialize(mockItem.Object, "A.B", "A.C");

            // Assert
            TestHelper.AssertXmlNodeContent("ab", ans, "/wi:WorkItem/wi:Field[@name='A.B']", "Work item field not serialized correctly or missing");
            TestHelper.AssertXmlNodeContent("ac", ans, "/wi:WorkItem/wi:Field[@name='A.C']", "Work item field not serialized correctly or missing");
        }
Пример #8
0
        public void DoesNotSerializeRequestedFieldsNotInTheWorkItem()
        {
            // Arrange
            Mock <ITfsWorkItem> mockItem = CreateMockWorkItem();

            AddFieldToMockItem(mockItem, "A.B", "ab");
            AddFieldToMockItem(mockItem, "A.C", "ac");
            mockItem.Setup(wi => wi["A.D"]).Throws(new Exception("should not try to access this field"));

            // Act
            XElement ans = TfsWorkItem.Serialize(mockItem.Object, "A.B", "A.C", "A.D");

            // Assert
            TestHelper.AssertXmlNodeMissing(ans, "/wi:WorkItem/wi:A.D", "Work item field should not be serialized");
        }
Пример #9
0
        /// <summary>
        /// Saves the work items currently in the work item manager.
        /// </summary>
        /// <param name="fields">The fields to be extracted from the work items.</param>
        /// <param name="cancellationToken">Used to cancel the operation.</param>
        private void SaveWorkItemsInWorkItemManager(string[] fields, CancellationToken cancellationToken)
        {
            List <XElement> workItemElements = new List <XElement>();

            foreach (ITfsWorkItem wi in this.workItemManager.WorkItems)
            {
                workItemElements.Add(TfsWorkItem.Serialize(wi, fields));
                cancellationToken.ThrowIfCancellationRequested();
            }

            XElement root = new XElement(this.workItemsXName, workItemElements);

            this.wordDocument.DeleteXmlPart(Constants.WorkItemNamespace);
            this.wordDocument.AddXmlPart(root.ToString());
        }
        private void SetTfsIssueAssignee(TfsWorkItem item)
        {
            var assignedTo = TfsGitBridge.MapTfsUserNameToGitUserName(item.AssignedTo);

            if (assignedTo != null)
            {
                foreach (var assignee in Assignees)
                {
                    if (assignee.Login == assignedTo)
                    {
                        Assignee = assignee;
                        break;
                    }
                }
            }
        }
Пример #11
0
        public async Task <IEnumerable <TfsWorkItem> > GetCurrentSprintAsync()
        {
            var workItems = await _client.QueryByWiqlAsync(new Wiql { Query = _getWorkItemsQry }, new TeamContext("STDrive"));

            return((await _client
                    .GetWorkItemsAsync(workItems.WorkItems.Select(i => i.Id)))
                   .Select(item =>
            {
                var tfsItem = new TfsWorkItem
                {
                    Id = item.Id ?? 0,
                    IterationPath = item.Fields["System.IterationPath"].ToString(),
                    Title = item.Fields["System.Title"].ToString(),
                    WorkItemType = item.Fields["System.WorkItemType"].ToString(),
                    AssignedTo = item.Fields["System.AssignedTo"].ToString(),
                    State = item.Fields["System.State"].ToString()
                };
                return tfsItem;
            }));
        }
Пример #12
0
        public void AddIssue()
        {
            var add = Factory.Get <IIssueEditor>();

            TfsWorkItem tfsBugToPort = null;

            if (!string.IsNullOrEmpty(TFSBugIDToPort))
            {
                var savedSearchId = TfsApi.SearchId;
                TfsApi.SearchId = TFSBugIDToPort;
                tfsBugToPort    = TfsApi.Issues.SingleOrDefault();
                TfsApi.SearchId = savedSearchId;
                add.SetTfsIssue(tfsBugToPort);
            }
            else
            {
                add.SetIssue(null);
            }

            add.ShowModal();
        }
        public void SetTfsIssue(TfsWorkItem item)
        {
            if (item == null)
            {
                SetIssue(null);
                return;
            }

            Title = item.Title;

            Body = MarkdownConverter.ConvertHtmlToMarkdown(item.Body);

            TfsGitBridge.ShowMessageBox = ShowMessageBox;

            var gitMilestone = TfsGitBridge.MapTfsMilestoneToGitMilestone(item.Milestone);

            foreach (var milestone in Milestones)
            {
                if (string.Equals(milestone.Title, gitMilestone, StringComparison.OrdinalIgnoreCase))
                {
                    Milestone = milestone;
                    break;
                }
            }

            foreach (var labelName in TfsGitBridge.GetGitLabels(item))
            {
                foreach (var label in Labels)
                {
                    if (label.Name.Equals(labelName, StringComparison.OrdinalIgnoreCase))
                    {
                        label.Checked = true;
                    }
                }
            }

            _portedTfsItem = item;
            LoadAssignees();
        }
        /// <inheritdoc/>
        public void SaveWorkItem(TfsWorkItem tfsWorkItem)
        {
            var workItem = tfsWorkItem.Item as InMemoryWorkItem;

            if (workItem == null)
            {
                throw new InvalidOperationException("Invalid TfsWorkItem type.");
            }

            if (this.workItems.Contains(workItem))
            {
                var parentWorkItem = this.workItems.Single(w => w.Id == this.parentWorkItemId);
                var workItemLink   = parentWorkItem.Links.Single(l => l.RelatedWorkItemId == workItem.Id);

                workItemLink.Comment = tfsWorkItem.IssueSignature;
            }
            else
            {
                workItem.Validate();
                this.workItems.Add(workItem);
                this.AddLinkToWorkItem(this.parentWorkItemId, workItem.Id, tfsWorkItem.IssueSignature);
            }
        }
Пример #15
0
 public abstract void GetIssuesAndResolvePortedTfsIssue(TfsWorkItem item, string title);
Пример #16
0
 public void SetTfsIssue(TfsWorkItem issue)
 {
     throw new NotImplementedException();
 }
Пример #17
0
 public override void GetIssuesAndResolvePortedTfsIssue(TfsWorkItem item, string title)
 {
     throw new NotImplementedException();
 }
Пример #18
0
        /// <inheritdoc/>
        public void SaveWorkItem(TfsWorkItem tfsWorkItem)
        {
            var workItem = tfsWorkItem.Item as InMemoryWorkItem;
            if (workItem == null)
            {
                throw new InvalidOperationException("Invalid TfsWorkItem type.");
            }

            if (this.workItems.Contains(workItem))
            {
                var parentWorkItem = this.workItems.Single(w => w.Id == this.parentWorkItemId);
                var workItemLink = parentWorkItem.Links.Single(l => l.RelatedWorkItemId == workItem.Id);

                workItemLink.Comment = tfsWorkItem.IssueSignature;
            }
            else
            {
                workItem.Validate();
                this.workItems.Add(workItem);
                this.AddLinkToWorkItem(this.parentWorkItemId, workItem.Id, tfsWorkItem.IssueSignature);
            }
        }
Пример #19
0
 private void GetWorkItemsRelevantForTheseTests()
 {
     _requirement = (TfsWorkItem)_adapter.WorkItems.Find(CommonConfiguration.RequirementId);
     _issue       = (TfsWorkItem)_adapter.WorkItems.Find(CommonConfiguration.IssueId);
 }
Пример #20
0
 public void SetTfsIssue(TfsWorkItem issue)
 {
     _gitHubViewModel.SetTfsIssue(issue);
     PreviewTab.Focus();
 }
Пример #21
0
 public void SerializeThrowsExceptionForNullArgument()
 {
     TestHelper.TestForArgumentNullException(() => TfsWorkItem.Serialize(null), "workItem");
 }