Пример #1
0
    /// <inheritdoc/>
    public void UpdateWorkItem(NamespacedName namespacedName, UpdateWorkItem <TResource> update)
    {
        if (update is null)
        {
            throw new ArgumentNullException(nameof(update));
        }

        lock (_workItemsSync)
        {
            if (_workItems.TryGetValue(namespacedName, out var workItem))
            {
                // alter an existing entry
                workItem = update(workItem);
                if (workItem.IsEmpty)
                {
                    // remove if result has no information
                    _workItems.Remove(namespacedName);
                }
                else
                {
                    // otherwise update struct in dictionary
                    _workItems[namespacedName] = workItem;
                }
            }
            else
            {
                workItem = update(OperatorCacheWorkItem <TResource> .Empty);
                if (workItem.IsEmpty == false)
                {
                    // add if result has information
                    _workItems.Add(namespacedName, workItem);
                }
            }
        }
    }
		public void Test_UpdateIsFalse_When_TypeDoesNotHaveIntegratedInField()
		{
			using (var context = ShimsContext.Create())
			{
				var args = GetWorkflowArgs(false, true);

				var activity = new UpdateWorkItem();
				IDictionary<string, object> outputs;
				var result = WorkflowInvoker.Invoke(activity, args, out outputs, TimeSpan.FromMinutes(1));
				Assert.IsFalse(result);
				Assert.IsTrue(outputs["WarningMessage"].ToString().Contains("TF42093"));
			}
		}
        public void Test_UpdateIsFalse_When_TypeDoesNotHaveIntegratedInField()
        {
            using (var context = ShimsContext.Create())
            {
                var args = GetWorkflowArgs(false, true);

                var activity = new UpdateWorkItem();
                IDictionary <string, object> outputs;
                var result = WorkflowInvoker.Invoke(activity, args, out outputs, TimeSpan.FromMinutes(1));
                Assert.IsFalse(result);
                Assert.IsTrue(outputs["WarningMessage"].ToString().Contains("TF42093"));
            }
        }
        private async Task <UpdateWorkItem> mergeUpdatedWorkItemWithOriginal(WorkItem workItem)
        {
            var originalWorkItems = await _repository.GetWorkItemsAsync(new[]
            {
                workItem.Id
            });

            var originalWorkItem = originalWorkItems.FirstOrDefault();

            if (originalWorkItem == null)
            {
                throw new VisualStudioOnlineApiException("Could not find original work item!");
            }

            var updateWorkItem = new UpdateWorkItem
            {
                Id       = workItem.Id,
                Revision = workItem.Revision,
            };

            // Find all fields that need to be updated
            var modifiedFields = (from originalField in originalWorkItem.Fields
                                  let newField = workItem[originalField.ReferenceName]
                                                 where newField != null && newField.Value != originalField.Value
                                                 select new UpdateWorkItemField
            {
                Metadata = new UpdateWorkItemFieldMetadata
                {
                    ReferenceName = newField.ReferenceName
                },
                Value = newField.Value
            });

            updateWorkItem.Fields.AddRange(modifiedFields);

            // Find new fields
            var newFields =
                workItem.Fields.Where(newField => originalWorkItem[newField.ReferenceName] == null)
                .Select(newField => new UpdateWorkItemField
            {
                Metadata = new UpdateWorkItemFieldMetadata
                {
                    ReferenceName = newField.ReferenceName
                },
                Value = newField.Value
            });

            updateWorkItem.Fields.AddRange(newFields);

            return(updateWorkItem);
        }
Пример #5
0
        public async Task <WorkItem> UpdateWorkItemAsync(UpdateWorkItem workItem)
        {
            var item =
                await
                _visualStudioOnlineConnector.GetApiRequestAsync <WorkItem>("wit/workitems/" + workItem.Id, request =>
            {
                // HttpMethod doesn't support "patch", so we're implementing this hack
                request.Method = HttpMethod.Post;
                request.AddHeader("X-HTTP-Method-Override", "PATCH");
                request.ContentType = ContentTypes.Json;

                request.AddParameter(workItem);
            });

            return(item);
        }