public static async Task Main()
        {
            var options     = new AzureDevOpsClientOptions();
            var workItemIds = new HashSet <int>();

#if DEBUG
            if (TryReadSettings(out var settings))
            {
                options.Organization        = settings.GetValueOrDefault("Organization", () => string.Empty);
                options.PersonalAccessToken = settings.GetValueOrDefault("PersonalAccessToken", () => string.Empty);
                options.Project             = settings.GetValueOrDefault("Project", () => string.Empty);
                workItemIds = settings.GetValueOrDefault("WorkItemIds", () => string.Empty)
                              .Split(new[] { ' ', ',', ';' }, StringSplitOptions.RemoveEmptyEntries)
                              .Select(int.Parse)
                              .ToHashSet();
            }
#endif

            var includeWorkItemTypes = new HashSet <WorkItemType>
            {
                WorkItemType.Epic,
                WorkItemType.Feature,
                WorkItemType.PBI
            };

            var client  = new AzureDevOpsClient(options);
            var crawler = new DirectLinksCrawler(client);
            var data    = await crawler.GetData(workItemIds, includeWorkItemTypes, includeFinishedWorkItems : false);

            var graph = new GraphGenerator().GenerateGraph(data, workItemIds, "LR");

            // http://magjac.com/graphviz-visual-editor/ can be used to test the graph

            System.Console.WriteLine(graph);
        }
Exemple #2
0
        public async Task ShouldCrawl()
        {
            var crawler = new DirectLinksCrawler(TestClient.Create());

            var collection = await crawler.GetData(new HashSet <int> {
                2
            }, new HashSet <WorkItemType> {
                WorkItemType.Feature
            }, false);

            collection.Links.ShouldContain(x => x.FromWorkItemId == 1 && x.ToWorkItemId == 2);
            collection.Links.ShouldContain(x => x.FromWorkItemId == 2 && x.ToWorkItemId == 3);
            collection.Links.ShouldContain(x => x.FromWorkItemId == 3 && x.ToWorkItemId == 4);

            collection.Links.Count.ShouldBe(3);

            collection.WorkItems.Select(x => x.Id).OrderBy(x => x).ShouldBe(new[] { 1, 2, 3, 4 });
        }