public async Task WorkItemManager_CreateTemplate_WithDefaultValues() { // arrange var workItemManager = new WorkItemManager(new InMemoryDataProvider(), new InMemoryDescriptorProvider( WorkItemDescriptor.Create("BAR", new PropertyDescriptor[] { PropertyDescriptor.Create("A", "String", initialValue: "a"), PropertyDescriptor.Create("B", "String"), }) )); // act var template = await workItemManager.CreateTemplateAsync("FOO", "BAR"); // assert Assert.NotNull(template); Assert.Equal("BAR", template.WorkItemType); Assert.Collection(template.Properties, p => { Assert.Equal("A", p.Name); Assert.Equal("a", p.Value); }, p => { Assert.Equal("B", p.Name); Assert.Equal("", p.Value); } ); }
public async Task <ActionResult> GetNewFromTemplate(string projectCode, string workItemType) { try { var item = await _workItemManager.CreateTemplateAsync(projectCode, workItemType); if (item != null) { return(Ok(new WorkItemApiResponse() { Success = true, ProjectCode = item.ProjectCode, WorkItemId = null, WorkItem = item, })); } else { return(NotFound(new WorkItemApiResponse() { Success = false, ProjectCode = projectCode, WorkItemId = null, WorkItem = null, })); } } catch (Exception e) { _logger.LogError(e, $"Exception in {nameof(WorkItemController)}.{nameof(GetNewFromTemplate)}"); return(BadRequest(new WorkItemBadRequestApiResponse() { Success = false, ProjectCode = projectCode, WorkItemId = null, })); } }
public static async Task <int> ExecuteAsync(WorkItemManager manager, string?projectCode, string?workItemType) { if (manager is null) { throw new ArgumentNullException(nameof(manager)); } if (string.IsNullOrWhiteSpace(projectCode)) { throw new ArgumentException("message", nameof(projectCode)); } if (string.IsNullOrWhiteSpace(workItemType)) { throw new ArgumentException("message", nameof(workItemType)); } var wi = await manager.CreateTemplateAsync(projectCode, workItemType); var propertyDescriptors = manager.DescriptorManager.GetCurrentPropertyDescriptors(wi); if (propertyDescriptors == null) { Console.WriteLine($"Cannot find type {workItemType} in project {projectCode}"); return(1); } var propertiesDictionary = new Dictionary <string, string>(); foreach (var propertyDescriptor in propertyDescriptors) { var value = await ValueProviderReadLineAutoCompletion.Readline(manager, wi, propertyDescriptor, string.Empty); propertiesDictionary.Add(propertyDescriptor.Name, value); } var properties = wi.Properties .Select(property => { if (propertiesDictionary.TryGetValue(property.Name, out var value)) { return(new Property(property.Name, property.DataType, value)); } else { return(property); } }) .Where(p => p != null) .ToArray(); var result = await manager.CreateAsync(projectCode, workItemType, properties); if (result.Success) { Console.WriteLine($"Created WorkItem in project {result.CreatedWorkItem?.ProjectCode} with id {result.Id}"); } else { Console.WriteLine($"Failed to create WorkItem"); foreach (var error in result.Errors) { Console.WriteLine($"{error.Property}: {error.Message}"); } } return(result.Success ? 0 : 1); }
public async Task <ValueProviderApiResponse> GetValuesForTemplateProperty(string projectCode, string workItemType, string propertyName, [FromQuery] string query) => await InternalGetValuesForWorkItemProperty(await _workItemManager.CreateTemplateAsync(projectCode, workItemType), propertyName, query);
public async Task <ActionResult> GetDescriptorForTemplate(string projectCode, string workItemType) => InternalGetDescriptorForWorkItem(await _workItemManager.CreateTemplateAsync(projectCode, workItemType));