PageRenderTime 26ms CodeModel.GetById 1ms RepoModel.GetById 0ms app.codeStats 0ms

/Octokit.Tests.Integration/Clients/MilestonesClientTests.cs

https://gitlab.com/WoomyNightClub/GitHub-API-.NET
C# | 531 lines | 424 code | 107 blank | 0 comment | 0 complexity | e9c0019565091f4e731eb0f41d699678 MD5 | raw file
  1. using System;
  2. using System.Threading.Tasks;
  3. using Octokit;
  4. using Octokit.Tests.Integration;
  5. using Xunit;
  6. using Octokit.Tests.Integration.Helpers;
  7. public class MilestonesClientTests : IDisposable
  8. {
  9. private readonly IMilestonesClient _milestonesClient;
  10. private readonly RepositoryContext _context;
  11. public MilestonesClientTests()
  12. {
  13. var github = Helper.GetAuthenticatedClient();
  14. _milestonesClient = github.Issue.Milestone;
  15. var repoName = Helper.MakeNameWithTimestamp("public-repo");
  16. _context = github.CreateRepositoryContext(new NewRepository(repoName)).Result;
  17. }
  18. [IntegrationTest]
  19. public async Task CanRetrieveOneMilestone()
  20. {
  21. var newMilestone = new NewMilestone("a milestone") { DueOn = DateTime.Now };
  22. var created = await _milestonesClient.Create(_context.RepositoryOwner, _context.RepositoryName, newMilestone);
  23. var result = await _milestonesClient.Get(_context.RepositoryOwner, _context.RepositoryName, created.Number);
  24. Assert.Equal("a milestone", result.Title);
  25. }
  26. [IntegrationTest]
  27. public async Task CanRetrieveOneMilestoneWithRepositoryId()
  28. {
  29. var newMilestone = new NewMilestone("a milestone") { DueOn = DateTime.Now };
  30. var created = await _milestonesClient.Create(_context.Repository.Id, newMilestone);
  31. var result = await _milestonesClient.Get(_context.Repository.Id, created.Number);
  32. Assert.Equal("a milestone", result.Title);
  33. }
  34. [IntegrationTest]
  35. public async Task CanDeleteOneMilestone()
  36. {
  37. var newMilestone = new NewMilestone("a milestone") { DueOn = DateTime.Now };
  38. var created = await _milestonesClient.Create(_context.RepositoryOwner, _context.RepositoryName, newMilestone);
  39. var milestone = await _milestonesClient.Get(_context.RepositoryOwner, _context.RepositoryName, created.Number);
  40. Assert.Equal("a milestone", milestone.Title);
  41. await _milestonesClient.Delete(_context.RepositoryOwner, _context.RepositoryName, created.Number);
  42. await Assert.ThrowsAsync<NotFoundException>(() => _milestonesClient.Get(_context.RepositoryOwner, _context.RepositoryName, created.Number));
  43. }
  44. [IntegrationTest]
  45. public async Task CanDeleteOneMilestoneWithRepositoryId()
  46. {
  47. var newMilestone = new NewMilestone("a milestone") { DueOn = DateTime.Now };
  48. var created = await _milestonesClient.Create(_context.Repository.Id, newMilestone);
  49. var milestone = await _milestonesClient.Get(_context.Repository.Id, created.Number);
  50. Assert.Equal("a milestone", milestone.Title);
  51. await _milestonesClient.Delete(_context.Repository.Id, created.Number);
  52. await Assert.ThrowsAsync<NotFoundException>(() => _milestonesClient.Get(_context.Repository.Id, created.Number));
  53. }
  54. [IntegrationTest]
  55. public async Task CanUpdateOneMilestone()
  56. {
  57. var newMilestone = new NewMilestone("a milestone") { DueOn = DateTime.Now };
  58. var created = await _milestonesClient.Create(_context.RepositoryOwner, _context.RepositoryName, newMilestone);
  59. var result1 = await _milestonesClient.Get(_context.RepositoryOwner, _context.RepositoryName, created.Number);
  60. Assert.Equal("a milestone", result1.Title);
  61. await _milestonesClient.Update(_context.RepositoryOwner, _context.RepositoryName, created.Number, new MilestoneUpdate { Title = "New title" });
  62. var result2 = await _milestonesClient.Get(_context.RepositoryOwner, _context.RepositoryName, created.Number);
  63. Assert.Equal("New title", result2.Title);
  64. }
  65. [IntegrationTest]
  66. public async Task CanUpdateOneMilestoneWithRepositoryId()
  67. {
  68. var newMilestone = new NewMilestone("a milestone") { DueOn = DateTime.Now };
  69. var created = await _milestonesClient.Create(_context.Repository.Id, newMilestone);
  70. var result1 = await _milestonesClient.Get(_context.Repository.Id, created.Number);
  71. Assert.Equal("a milestone", result1.Title);
  72. await _milestonesClient.Update(_context.Repository.Id, created.Number, new MilestoneUpdate {Title = "New title"});
  73. var result2 = await _milestonesClient.Get(_context.Repository.Id, created.Number);
  74. Assert.Equal("New title", result2.Title);
  75. }
  76. [IntegrationTest]
  77. public async Task CanListEmptyMilestones()
  78. {
  79. var milestones = await _milestonesClient.GetAllForRepository(_context.RepositoryOwner, _context.RepositoryName);
  80. Assert.Empty(milestones);
  81. }
  82. [IntegrationTest]
  83. public async Task CanListEmptyMilestonesWithRepositoryId()
  84. {
  85. var milestones = await _milestonesClient.GetAllForRepository(_context.Repository.Id);
  86. Assert.Empty(milestones);
  87. }
  88. [IntegrationTest]
  89. public async Task CanListMilestonesWithDefaultSortByDueDateAsc()
  90. {
  91. var milestone1 = new NewMilestone("milestone 1") { DueOn = DateTime.Now };
  92. var milestone2 = new NewMilestone("milestone 2") { DueOn = DateTime.Now.AddDays(1) };
  93. var milestone3 = new NewMilestone("milestone 3") { DueOn = DateTime.Now.AddDays(3), State = ItemState.Closed };
  94. await _milestonesClient.Create(_context.RepositoryOwner, _context.RepositoryName, milestone1);
  95. await _milestonesClient.Create(_context.RepositoryOwner, _context.RepositoryName, milestone2);
  96. await _milestonesClient.Create(_context.RepositoryOwner, _context.RepositoryName, milestone3);
  97. var milestones = await _milestonesClient.GetAllForRepository(_context.RepositoryOwner, _context.RepositoryName);
  98. Assert.Equal(2, milestones.Count);
  99. Assert.Equal("milestone 1", milestones[0].Title);
  100. Assert.Equal("milestone 2", milestones[1].Title);
  101. }
  102. [IntegrationTest]
  103. public async Task CanListMilestonesWithDefaultSortByDueDateAscWithRepositoryId()
  104. {
  105. var milestone1 = new NewMilestone("milestone 1") { DueOn = DateTime.Now };
  106. var milestone2 = new NewMilestone("milestone 2") { DueOn = DateTime.Now.AddDays(1) };
  107. var milestone3 = new NewMilestone("milestone 3") { DueOn = DateTime.Now.AddDays(3), State = ItemState.Closed };
  108. await _milestonesClient.Create(_context.Repository.Id, milestone1);
  109. await _milestonesClient.Create(_context.Repository.Id, milestone2);
  110. await _milestonesClient.Create(_context.Repository.Id, milestone3);
  111. var milestones = await _milestonesClient.GetAllForRepository(_context.Repository.Id);
  112. Assert.Equal(2, milestones.Count);
  113. Assert.Equal("milestone 1", milestones[0].Title);
  114. Assert.Equal("milestone 2", milestones[1].Title);
  115. }
  116. [IntegrationTest]
  117. public async Task CanListMilestonesWithSortByDueDateDesc()
  118. {
  119. var milestone1 = new NewMilestone("milestone 1") { DueOn = DateTime.Now };
  120. var milestone2 = new NewMilestone("milestone 2") { DueOn = DateTime.Now.AddDays(1) };
  121. var milestone3 = new NewMilestone("milestone 3") { DueOn = DateTime.Now.AddDays(3), State = ItemState.Closed };
  122. await _milestonesClient.Create(_context.RepositoryOwner, _context.RepositoryName, milestone1);
  123. await _milestonesClient.Create(_context.RepositoryOwner, _context.RepositoryName, milestone2);
  124. await _milestonesClient.Create(_context.RepositoryOwner, _context.RepositoryName, milestone3);
  125. var milestones = await _milestonesClient.GetAllForRepository(_context.RepositoryOwner, _context.RepositoryName,
  126. new MilestoneRequest { SortDirection = SortDirection.Descending });
  127. Assert.Equal(2, milestones.Count);
  128. Assert.Equal("milestone 2", milestones[0].Title);
  129. Assert.Equal("milestone 1", milestones[1].Title);
  130. }
  131. [IntegrationTest]
  132. public async Task CanListMilestonesWithSortByDueDateDescWithRepositoryId()
  133. {
  134. var milestone1 = new NewMilestone("milestone 1") { DueOn = DateTime.Now };
  135. var milestone2 = new NewMilestone("milestone 2") { DueOn = DateTime.Now.AddDays(1) };
  136. var milestone3 = new NewMilestone("milestone 3") { DueOn = DateTime.Now.AddDays(3), State = ItemState.Closed };
  137. await _milestonesClient.Create(_context.Repository.Id, milestone1);
  138. await _milestonesClient.Create(_context.Repository.Id, milestone2);
  139. await _milestonesClient.Create(_context.Repository.Id, milestone3);
  140. var milestones = await _milestonesClient.GetAllForRepository(_context.Repository.Id,
  141. new MilestoneRequest { SortDirection = SortDirection.Descending });
  142. Assert.Equal(2, milestones.Count);
  143. Assert.Equal("milestone 2", milestones[0].Title);
  144. Assert.Equal("milestone 1", milestones[1].Title);
  145. }
  146. [IntegrationTest]
  147. public async Task CanListClosedMilestones()
  148. {
  149. var milestone1 = new NewMilestone("milestone 1") { DueOn = DateTime.Now };
  150. var milestone2 = new NewMilestone("milestone 2") { DueOn = DateTime.Now.AddDays(1) };
  151. var milestone3 = new NewMilestone("milestone 3") { DueOn = DateTime.Now.AddDays(3), State = ItemState.Closed };
  152. await _milestonesClient.Create(_context.RepositoryOwner, _context.RepositoryName, milestone1);
  153. await _milestonesClient.Create(_context.RepositoryOwner, _context.RepositoryName, milestone2);
  154. await _milestonesClient.Create(_context.RepositoryOwner, _context.RepositoryName, milestone3);
  155. var milestones = await _milestonesClient.GetAllForRepository(_context.RepositoryOwner, _context.RepositoryName,
  156. new MilestoneRequest { State = ItemStateFilter.Closed });
  157. Assert.Equal(1, milestones.Count);
  158. Assert.Equal("milestone 3", milestones[0].Title);
  159. }
  160. [IntegrationTest]
  161. public async Task CanListClosedMilestonesWithRepositoryId()
  162. {
  163. var milestone1 = new NewMilestone("milestone 1") { DueOn = DateTime.Now };
  164. var milestone2 = new NewMilestone("milestone 2") { DueOn = DateTime.Now.AddDays(1) };
  165. var milestone3 = new NewMilestone("milestone 3") { DueOn = DateTime.Now.AddDays(3), State = ItemState.Closed };
  166. await _milestonesClient.Create(_context.Repository.Id, milestone1);
  167. await _milestonesClient.Create(_context.Repository.Id, milestone2);
  168. await _milestonesClient.Create(_context.Repository.Id, milestone3);
  169. var milestones = await _milestonesClient.GetAllForRepository(_context.Repository.Id,
  170. new MilestoneRequest { State = ItemStateFilter.Closed });
  171. Assert.Equal(1, milestones.Count);
  172. Assert.Equal("milestone 3", milestones[0].Title);
  173. }
  174. [IntegrationTest]
  175. public async Task ReturnsCorrectCountOfMilestonesWithoutStart()
  176. {
  177. var milestone1 = new NewMilestone("milestone 1") { DueOn = DateTime.Now };
  178. var milestone2 = new NewMilestone("milestone 2") { DueOn = DateTime.Now.AddDays(1) };
  179. var milestone3 = new NewMilestone("milestone 3") { DueOn = DateTime.Now.AddDays(3) };
  180. await _milestonesClient.Create(_context.RepositoryOwner, _context.RepositoryName, milestone1);
  181. await _milestonesClient.Create(_context.RepositoryOwner, _context.RepositoryName, milestone2);
  182. await _milestonesClient.Create(_context.RepositoryOwner, _context.RepositoryName, milestone3);
  183. var options = new ApiOptions
  184. {
  185. PageSize = 3,
  186. PageCount = 1
  187. };
  188. var milestones = await _milestonesClient.GetAllForRepository(_context.RepositoryOwner, _context.RepositoryName, options);
  189. Assert.Equal(3, milestones.Count);
  190. }
  191. [IntegrationTest]
  192. public async Task ReturnsCorrectCountOfMilestonesWithoutStartWithRepositoryId()
  193. {
  194. var milestone1 = new NewMilestone("milestone 1") { DueOn = DateTime.Now };
  195. var milestone2 = new NewMilestone("milestone 2") { DueOn = DateTime.Now.AddDays(1) };
  196. var milestone3 = new NewMilestone("milestone 3") { DueOn = DateTime.Now.AddDays(3) };
  197. await _milestonesClient.Create(_context.RepositoryOwner, _context.RepositoryName, milestone1);
  198. await _milestonesClient.Create(_context.RepositoryOwner, _context.RepositoryName, milestone2);
  199. await _milestonesClient.Create(_context.RepositoryOwner, _context.RepositoryName, milestone3);
  200. var options = new ApiOptions
  201. {
  202. PageSize = 3,
  203. PageCount = 1
  204. };
  205. var milestones = await _milestonesClient.GetAllForRepository(_context.Repository.Id, options);
  206. Assert.Equal(3, milestones.Count);
  207. }
  208. [IntegrationTest]
  209. public async Task ReturnsCorrectCountOfMilestonesWithStart()
  210. {
  211. var milestone1 = new NewMilestone("milestone 1") { DueOn = DateTime.Now };
  212. var milestone2 = new NewMilestone("milestone 2") { DueOn = DateTime.Now.AddDays(1) };
  213. var milestone3 = new NewMilestone("milestone 3") { DueOn = DateTime.Now.AddDays(3) };
  214. await _milestonesClient.Create(_context.RepositoryOwner, _context.RepositoryName, milestone1);
  215. await _milestonesClient.Create(_context.RepositoryOwner, _context.RepositoryName, milestone2);
  216. await _milestonesClient.Create(_context.RepositoryOwner, _context.RepositoryName, milestone3);
  217. var options = new ApiOptions
  218. {
  219. PageSize = 2,
  220. PageCount = 1,
  221. StartPage = 2
  222. };
  223. var milestones = await _milestonesClient.GetAllForRepository(_context.RepositoryOwner, _context.RepositoryName, options);
  224. Assert.Equal(1, milestones.Count);
  225. }
  226. [IntegrationTest]
  227. public async Task ReturnsCorrectCountOfMilestonesWithStartWithRepositoryId()
  228. {
  229. var milestone1 = new NewMilestone("milestone 1") { DueOn = DateTime.Now };
  230. var milestone2 = new NewMilestone("milestone 2") { DueOn = DateTime.Now.AddDays(1) };
  231. var milestone3 = new NewMilestone("milestone 3") { DueOn = DateTime.Now.AddDays(3) };
  232. await _milestonesClient.Create(_context.RepositoryOwner, _context.RepositoryName, milestone1);
  233. await _milestonesClient.Create(_context.RepositoryOwner, _context.RepositoryName, milestone2);
  234. await _milestonesClient.Create(_context.RepositoryOwner, _context.RepositoryName, milestone3);
  235. var options = new ApiOptions
  236. {
  237. PageSize = 2,
  238. PageCount = 1,
  239. StartPage = 2
  240. };
  241. var milestones = await _milestonesClient.GetAllForRepository(_context.Repository.Id, options);
  242. Assert.Equal(1, milestones.Count);
  243. }
  244. [IntegrationTest]
  245. public async Task ReturnsDistinctResultsBasedOnStartPage()
  246. {
  247. var milestone1 = new NewMilestone("milestone 1") { DueOn = DateTime.Now };
  248. var milestone2 = new NewMilestone("milestone 2") { DueOn = DateTime.Now.AddDays(1) };
  249. var milestone3 = new NewMilestone("milestone 3") { DueOn = DateTime.Now.AddDays(3), State = ItemState.Closed };
  250. await _milestonesClient.Create(_context.RepositoryOwner, _context.RepositoryName, milestone1);
  251. await _milestonesClient.Create(_context.RepositoryOwner, _context.RepositoryName, milestone2);
  252. await _milestonesClient.Create(_context.RepositoryOwner, _context.RepositoryName, milestone3);
  253. var startOptions = new ApiOptions
  254. {
  255. PageSize = 1,
  256. PageCount = 1
  257. };
  258. var firstPage = await _milestonesClient.GetAllForRepository(_context.RepositoryOwner, _context.RepositoryName, startOptions);
  259. var skipStartOptions = new ApiOptions
  260. {
  261. PageSize = 1,
  262. PageCount = 1,
  263. StartPage = 2
  264. };
  265. var secondPage = await _milestonesClient.GetAllForRepository(_context.RepositoryOwner, _context.RepositoryName, skipStartOptions);
  266. Assert.NotEqual(firstPage[0].Number, secondPage[0].Number);
  267. }
  268. [IntegrationTest]
  269. public async Task ReturnsDistinctResultsBasedOnStartPageWithRepositoryId()
  270. {
  271. var milestone1 = new NewMilestone("milestone 1") { DueOn = DateTime.Now };
  272. var milestone2 = new NewMilestone("milestone 2") { DueOn = DateTime.Now.AddDays(1) };
  273. var milestone3 = new NewMilestone("milestone 3") { DueOn = DateTime.Now.AddDays(3), State = ItemState.Closed };
  274. await _milestonesClient.Create(_context.RepositoryOwner, _context.RepositoryName, milestone1);
  275. await _milestonesClient.Create(_context.RepositoryOwner, _context.RepositoryName, milestone2);
  276. await _milestonesClient.Create(_context.RepositoryOwner, _context.RepositoryName, milestone3);
  277. var startOptions = new ApiOptions
  278. {
  279. PageSize = 1,
  280. PageCount = 1
  281. };
  282. var firstPage = await _milestonesClient.GetAllForRepository(_context.Repository.Id, startOptions);
  283. var skipStartOptions = new ApiOptions
  284. {
  285. PageSize = 1,
  286. PageCount = 1,
  287. StartPage = 2
  288. };
  289. var secondPage = await _milestonesClient.GetAllForRepository(_context.Repository.Id, skipStartOptions);
  290. Assert.NotEqual(firstPage[0].Number, secondPage[0].Number);
  291. }
  292. [IntegrationTest]
  293. public async Task ReturnsCorrectCountOfMilestonesWithoutStartParametrized()
  294. {
  295. var milestone1 = new NewMilestone("milestone 1") { DueOn = DateTime.Now };
  296. var milestone2 = new NewMilestone("milestone 2") { DueOn = DateTime.Now.AddDays(1), State = ItemState.Closed };
  297. var milestone3 = new NewMilestone("milestone 3") { DueOn = DateTime.Now.AddDays(3), State = ItemState.Closed };
  298. var milestone4 = new NewMilestone("milestone 4") { DueOn = DateTime.Now.AddDays(4), State = ItemState.Closed };
  299. await _milestonesClient.Create(_context.RepositoryOwner, _context.RepositoryName, milestone1);
  300. await _milestonesClient.Create(_context.RepositoryOwner, _context.RepositoryName, milestone2);
  301. await _milestonesClient.Create(_context.RepositoryOwner, _context.RepositoryName, milestone3);
  302. await _milestonesClient.Create(_context.RepositoryOwner, _context.RepositoryName, milestone4);
  303. var options = new ApiOptions
  304. {
  305. PageSize = 3,
  306. PageCount = 1
  307. };
  308. var milestones = await _milestonesClient.GetAllForRepository(_context.RepositoryOwner, _context.RepositoryName, new MilestoneRequest { State = ItemStateFilter.Closed }, options);
  309. Assert.Equal(3, milestones.Count);
  310. }
  311. [IntegrationTest]
  312. public async Task ReturnsCorrectCountOfMilestonesWithoutStartParametrizedWithRepositoryId()
  313. {
  314. var milestone1 = new NewMilestone("milestone 1") { DueOn = DateTime.Now };
  315. var milestone2 = new NewMilestone("milestone 2") { DueOn = DateTime.Now.AddDays(1), State = ItemState.Closed };
  316. var milestone3 = new NewMilestone("milestone 3") { DueOn = DateTime.Now.AddDays(3), State = ItemState.Closed };
  317. var milestone4 = new NewMilestone("milestone 4") { DueOn = DateTime.Now.AddDays(4), State = ItemState.Closed };
  318. await _milestonesClient.Create(_context.RepositoryOwner, _context.RepositoryName, milestone1);
  319. await _milestonesClient.Create(_context.RepositoryOwner, _context.RepositoryName, milestone2);
  320. await _milestonesClient.Create(_context.RepositoryOwner, _context.RepositoryName, milestone3);
  321. await _milestonesClient.Create(_context.RepositoryOwner, _context.RepositoryName, milestone4);
  322. var options = new ApiOptions
  323. {
  324. PageSize = 3,
  325. PageCount = 1
  326. };
  327. var milestones = await _milestonesClient.GetAllForRepository(_context.Repository.Id, new MilestoneRequest { State = ItemStateFilter.Closed }, options);
  328. Assert.Equal(3, milestones.Count);
  329. }
  330. [IntegrationTest]
  331. public async Task ReturnsCorrectCountOfMilestonesWithStartParametrized()
  332. {
  333. var milestone1 = new NewMilestone("milestone 1") { DueOn = DateTime.Now };
  334. var milestone2 = new NewMilestone("milestone 2") { DueOn = DateTime.Now.AddDays(1), State = ItemState.Closed };
  335. var milestone3 = new NewMilestone("milestone 3") { DueOn = DateTime.Now.AddDays(3), State = ItemState.Closed };
  336. var milestone4 = new NewMilestone("milestone 4") { DueOn = DateTime.Now.AddDays(4), State = ItemState.Closed };
  337. await _milestonesClient.Create(_context.RepositoryOwner, _context.RepositoryName, milestone1);
  338. await _milestonesClient.Create(_context.RepositoryOwner, _context.RepositoryName, milestone2);
  339. await _milestonesClient.Create(_context.RepositoryOwner, _context.RepositoryName, milestone3);
  340. await _milestonesClient.Create(_context.RepositoryOwner, _context.RepositoryName, milestone4);
  341. var options = new ApiOptions
  342. {
  343. PageSize = 2,
  344. PageCount = 1,
  345. StartPage = 2
  346. };
  347. var milestones = await _milestonesClient.GetAllForRepository(_context.RepositoryOwner, _context.RepositoryName, new MilestoneRequest { State = ItemStateFilter.Closed }, options);
  348. Assert.Equal(1, milestones.Count);
  349. }
  350. [IntegrationTest]
  351. public async Task ReturnsCorrectCountOfMilestonesWithStartParametrizedWithRepositoryId()
  352. {
  353. var milestone1 = new NewMilestone("milestone 1") { DueOn = DateTime.Now };
  354. var milestone2 = new NewMilestone("milestone 2") { DueOn = DateTime.Now.AddDays(1), State = ItemState.Closed };
  355. var milestone3 = new NewMilestone("milestone 3") { DueOn = DateTime.Now.AddDays(3), State = ItemState.Closed };
  356. var milestone4 = new NewMilestone("milestone 4") { DueOn = DateTime.Now.AddDays(4), State = ItemState.Closed };
  357. await _milestonesClient.Create(_context.RepositoryOwner, _context.RepositoryName, milestone1);
  358. await _milestonesClient.Create(_context.RepositoryOwner, _context.RepositoryName, milestone2);
  359. await _milestonesClient.Create(_context.RepositoryOwner, _context.RepositoryName, milestone3);
  360. await _milestonesClient.Create(_context.RepositoryOwner, _context.RepositoryName, milestone4);
  361. var options = new ApiOptions
  362. {
  363. PageSize = 2,
  364. PageCount = 1,
  365. StartPage = 2
  366. };
  367. var milestones = await _milestonesClient.GetAllForRepository(_context.Repository.Id, new MilestoneRequest { State = ItemStateFilter.Closed }, options);
  368. Assert.Equal(1, milestones.Count);
  369. }
  370. [IntegrationTest]
  371. public async Task ReturnsDistinctResultsBasedOnStartPageParametrized()
  372. {
  373. var milestone1 = new NewMilestone("milestone 1") { DueOn = DateTime.Now };
  374. var milestone2 = new NewMilestone("milestone 2") { DueOn = DateTime.Now.AddDays(1), State = ItemState.Closed };
  375. var milestone3 = new NewMilestone("milestone 3") { DueOn = DateTime.Now.AddDays(3), State = ItemState.Closed };
  376. await _milestonesClient.Create(_context.RepositoryOwner, _context.RepositoryName, milestone1);
  377. await _milestonesClient.Create(_context.RepositoryOwner, _context.RepositoryName, milestone2);
  378. await _milestonesClient.Create(_context.RepositoryOwner, _context.RepositoryName, milestone3);
  379. var milestoneRequest = new MilestoneRequest { State = ItemStateFilter.Closed };
  380. var startOptions = new ApiOptions
  381. {
  382. PageSize = 1,
  383. PageCount = 1
  384. };
  385. var firstPage = await _milestonesClient.GetAllForRepository(_context.RepositoryOwner, _context.RepositoryName, milestoneRequest, startOptions);
  386. var skipStartOptions = new ApiOptions
  387. {
  388. PageSize = 1,
  389. PageCount = 1,
  390. StartPage = 2
  391. };
  392. var secondPage = await _milestonesClient.GetAllForRepository(_context.RepositoryOwner, _context.RepositoryName, milestoneRequest, skipStartOptions);
  393. Assert.NotEqual(firstPage[0].Number, secondPage[0].Number);
  394. }
  395. [IntegrationTest]
  396. public async Task ReturnsDistinctResultsBasedOnStartPageParametrizedWithRepositoryId()
  397. {
  398. var milestone1 = new NewMilestone("milestone 1") { DueOn = DateTime.Now };
  399. var milestone2 = new NewMilestone("milestone 2") { DueOn = DateTime.Now.AddDays(1), State = ItemState.Closed };
  400. var milestone3 = new NewMilestone("milestone 3") { DueOn = DateTime.Now.AddDays(3), State = ItemState.Closed };
  401. await _milestonesClient.Create(_context.RepositoryOwner, _context.RepositoryName, milestone1);
  402. await _milestonesClient.Create(_context.RepositoryOwner, _context.RepositoryName, milestone2);
  403. await _milestonesClient.Create(_context.RepositoryOwner, _context.RepositoryName, milestone3);
  404. var milestoneRequest = new MilestoneRequest { State = ItemStateFilter.Closed };
  405. var startOptions = new ApiOptions
  406. {
  407. PageSize = 1,
  408. PageCount = 1
  409. };
  410. var firstPage = await _milestonesClient.GetAllForRepository(_context.Repository.Id, milestoneRequest, startOptions);
  411. var skipStartOptions = new ApiOptions
  412. {
  413. PageSize = 1,
  414. PageCount = 1,
  415. StartPage = 2
  416. };
  417. var secondPage = await _milestonesClient.GetAllForRepository(_context.Repository.Id, milestoneRequest, skipStartOptions);
  418. Assert.NotEqual(firstPage[0].Number, secondPage[0].Number);
  419. }
  420. public void Dispose()
  421. {
  422. _context.Dispose();
  423. }
  424. }