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);
            }
                              );
        }
示例#2
0
        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,
                }));
            }
        }
示例#3
0
        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);
        }
示例#4
0
 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));