Esempio n. 1
0
        public async Task RequestsColumnsFromQueryIfNoExpand()
        {
            var workitemReferences = new[] { new WorkItemReference(1), new WorkItemReference(2), new WorkItemReference(3) };
            var columns            = new[] { new ColumnReference("C1", "System.C1"), new ColumnReference("C2", "System.C2") };
            var queryResult        = new FlatWorkItemsQueryResult {
                QueryType = "flat", WorkItems = workitemReferences, Columns = columns
            };

            HttpClientMock.Setup(c => c.ExecuteGet <JObject>(It.IsAny <string>(), CancellationToken))
            .ReturnsAsync(JObject.FromObject(queryResult));

            var workitems = workitemReferences.Select(r => new WorkItem {
                Id = r.Id
            });

            SetupGetCollectionOf <WorkItem>(url => url.Contains(string.Join(',', columns.Select(c => c.ReferenceName))) && !url.Contains("$expand=All"))
            .ReturnsAsync(new CollectionResponse <WorkItem> {
                Value = workitems
            });

            var result = await Client.GetWorkItemsAsync(Guid.NewGuid(), expand : false, cancellationToken : CancellationToken);

            result.Should().NotBeEmpty();
            result.Should().BeEquivalentTo(workitems);

            HttpClientMock.VerifyAll();
        }
Esempio n. 2
0
        public async Task AggregatesWorkitemsFromFlatQuery()
        {
            var workitemReferences = new[] { new WorkItemReference(1), new WorkItemReference(2), new WorkItemReference(3) };
            var queryResult        = new FlatWorkItemsQueryResult {
                QueryType = "flat", WorkItems = workitemReferences
            };

            HttpClientMock.Setup(c => c.ExecuteGet <JObject>(It.IsAny <string>(), CancellationToken))
            .ReturnsAsync(JObject.FromObject(queryResult));

            var workitems = workitemReferences.Select(r => new WorkItem {
                Id = r.Id
            });

            SetupGetCollectionOf <WorkItem>(url => url.Contains("$expand=All"))
            .ReturnsAsync(new CollectionResponse <WorkItem> {
                Value = workitems
            });

            var result = await Client.GetWorkItemsAsync(Guid.NewGuid(), true, CancellationToken);

            result.Should().NotBeEmpty();
            result.Should().BeEquivalentTo(workitems);

            HttpClientMock.VerifyAll();
        }
Esempio n. 3
0
        public async Task GetWorkItemsShouldComposeCorrectUrlForFlatQueries()
        {
            var query       = WorkItemsQuery.Get("Dummy query");
            var queryResult = new FlatWorkItemsQueryResult
            {
                Columns   = new[] { new ColumnReference("Id", "System.Id"), new ColumnReference("Title", "System.Title") },
                WorkItems = new[] { new WorkItemReference(2), new WorkItemReference(34), new WorkItemReference(56) }
            };
            var fields    = queryResult.Columns.Select(c => c.ReferenceName);
            var ids       = queryResult.WorkItems.Select(w => w.Id);
            var workItems = ids.Select(i => new WorkItem {
                Id = i
            });

            HttpClientMock.Setup(c => c.ExecutePost <FlatWorkItemsQueryResult>(It.IsAny <string>(), It.Is <WorkItemsQuery>(q => !q.IsHierarchical), CancellationToken))
            .ReturnsAsync(queryResult)
            .Verifiable();

            HttpClientMock.Setup(c => c.ExecuteGet <CollectionResponse <WorkItem> >(It.Is <string>(u => VerifyWorkItemsUrl(u, fields, ids)), CancellationToken))
            .ReturnsAsync(new CollectionResponse <WorkItem> {
                Value = workItems
            })
            .Verifiable();

            var result = await Client.GetWorkItemsAsync(query, false, CancellationToken);

            result.Should().HaveCount(workItems.Count());
            result.Should().BeEquivalentTo(workItems);

            HttpClientMock.Verify();
        }
Esempio n. 4
0
        public void ThrowsIfUnknownQueryType()
        {
            var queryResult = new FlatWorkItemsQueryResult {
                QueryType = "3D"
            };

            HttpClientMock.Setup(c => c.ExecuteGet <JObject>(It.IsAny <string>(), CancellationToken))
            .ReturnsAsync(JObject.FromObject(queryResult));
            Client.Awaiting(c => c.GetWorkItemsAsync(Guid.NewGuid(), false, CancellationToken))
            .Should().Throw <UnknownWorkItemQueryTypeException>();
        }
Esempio n. 5
0
        public async Task GetWorkItemsShouldReturnEmptyIfNoItemsFound()
        {
            var query       = WorkItemsQuery.Get("Dummy query");
            var queryResult = new FlatWorkItemsQueryResult
            {
                Columns   = new ColumnReference[0],
                WorkItems = new WorkItemReference[0]
            };

            HttpClientMock.Setup(c => c.ExecutePost <FlatWorkItemsQueryResult>(It.IsAny <string>(), It.Is <WorkItemsQuery>(q => !q.IsHierarchical), CancellationToken))
            .ReturnsAsync(queryResult)
            .Verifiable();

            var result = await Client.GetWorkItemsAsync(query, false, CancellationToken);

            result.Should().BeEmpty();

            HttpClientMock.Verify();
            HttpClientMock.Verify(c => c.ExecuteGet <CollectionResponse <WorkItem> >(It.IsAny <string>(), CancellationToken), Times.Never());
        }
Esempio n. 6
0
        private async Task RunFlatQuery(Func <Task <WorkItemsQueryResult> > queryExecutor, bool expand)
        {
            var workitems = new[] { new WorkItem {
                                        Id = 1
                                    }, new WorkItem()
                                    {
                                        Id = 2
                                    }, new WorkItem {
                                        Id = 3
                                    } };
            var workitemReferences  = workitems.Select(w => new WorkItemReference(w.Id)).ToArray();
            var expectedQueryResult = new FlatWorkItemsQueryResult
            {
                QueryType   = QueryType.Flat,
                WorkItems   = workitemReferences,
                Columns     = new[] { new ColumnReference("Id", "System.Id"), new ColumnReference("Title", "System.Title") },
                SortColumns = new[] { new SortColumn {
                                          Field = new ColumnReference("Title", "System.Title")
                                      } }
            };

            HttpClientMock.Setup(c => c.ExecuteGet <JObject>(It.IsAny <string>(), CancellationToken))
            .ReturnsAsync(JObject.FromObject(expectedQueryResult));
            HttpClientMock.Setup(c => c.ExecutePost <JObject>(It.IsAny <string>(), It.IsAny <WorkItemsQuery>(), CancellationToken))
            .ReturnsAsync(JObject.FromObject(expectedQueryResult));
            SetupGetCollectionOf <WorkItem>(url => GetWorkitemsUrlPredicate(url, expand))
            .ReturnsAsync(new CollectionResponse <WorkItem> {
                Value = workitems
            });

            var result = await queryExecutor();

            result.Should().BeOfType <FlatWorkItemsQueryResultWithWorkItems>();
            var flatQueryResult = result.As <FlatWorkItemsQueryResultWithWorkItems>();

            flatQueryResult.WorkItems.Should().BeEquivalentTo(workitems);
            flatQueryResult.QueryType.Should().Be(expectedQueryResult.QueryType);
            flatQueryResult.Columns.Should().BeEquivalentTo(expectedQueryResult.Columns);
            flatQueryResult.SortColumns.Should().BeEquivalentTo(expectedQueryResult.SortColumns);
        }
Esempio n. 7
0
 private int[] GetWorkitemIdsFromQuery(FlatWorkItemsQueryResult query)
 {
     return(query.WorkItems.Select(w => w.Id).ToArray());
 }