PageRenderTime 65ms CodeModel.GetById 15ms RepoModel.GetById 0ms app.codeStats 1ms

/Octokit.Tests.Integration/Clients/StarredClientTests.cs

https://gitlab.com/WoomyNightClub/GitHub-API-.NET
C# | 866 lines | 703 code | 163 blank | 0 comment | 33 complexity | 11125a8120c0a2eca0b4cd12e4277291 MD5 | raw file
  1. using System;
  2. using System.Linq;
  3. using System.Threading.Tasks;
  4. using Octokit.Tests.Integration.Helpers;
  5. using Xunit;
  6. namespace Octokit.Tests.Integration.Clients
  7. {
  8. public class StarredClientTests : IDisposable
  9. {
  10. private readonly IStarredClient _fixture;
  11. private readonly RepositoryContext _repositoryContext;
  12. public StarredClientTests()
  13. {
  14. var client = Helper.GetAuthenticatedClient();
  15. _fixture = client.Activity.Starring;
  16. var github = Helper.GetAuthenticatedClient();
  17. var repoName = Helper.MakeNameWithTimestamp("public-repo1");
  18. _repositoryContext = github.CreateRepositoryContext(new NewRepository(repoName)).Result;
  19. _fixture.RemoveStarFromRepo(_repositoryContext.RepositoryOwner, _repositoryContext.RepositoryName).Wait();
  20. _fixture.RemoveStarFromRepo("octokit", "octokit.net").Wait();
  21. _fixture.StarRepo(_repositoryContext.RepositoryOwner, _repositoryContext.RepositoryName).Wait();
  22. _fixture.StarRepo("octokit", "octokit.net").Wait();
  23. }
  24. [IntegrationTest]
  25. public async Task CanGetAllForCurrent()
  26. {
  27. var repositories = await _fixture.GetAllForCurrent();
  28. Assert.NotEmpty(repositories);
  29. var repo = repositories.FirstOrDefault(repository => repository.Owner.Login == _repositoryContext.RepositoryOwner && repository.Name == _repositoryContext.RepositoryName);
  30. Assert.NotNull(repo);
  31. }
  32. [IntegrationTest]
  33. public async Task ReturnsCorrectCountOfRepositoriesWithoutStartForCurrent()
  34. {
  35. var options = new ApiOptions
  36. {
  37. PageCount = 1,
  38. PageSize = 1
  39. };
  40. var repositories = await _fixture.GetAllForCurrent(options);
  41. Assert.Equal(1, repositories.Count);
  42. }
  43. [IntegrationTest]
  44. public async Task ReturnsCorrectCountOfRepositoriesWithStartForCurrent()
  45. {
  46. var options = new ApiOptions
  47. {
  48. PageCount = 1,
  49. PageSize = 1,
  50. StartPage = 2
  51. };
  52. var repositories = await _fixture.GetAllForCurrent(options);
  53. Assert.Equal(1, repositories.Count);
  54. }
  55. [IntegrationTest]
  56. public async Task ReturnsDistinctRepositoriesBasedOnStartPageForCurrent()
  57. {
  58. var startOptions = new ApiOptions
  59. {
  60. PageCount = 1,
  61. PageSize = 1,
  62. StartPage = 1
  63. };
  64. var firstPage = await _fixture.GetAllForCurrent(startOptions);
  65. var skipStartOptions = new ApiOptions
  66. {
  67. PageSize = 1,
  68. PageCount = 1,
  69. StartPage = 2
  70. };
  71. var secondPage = await _fixture.GetAllForCurrent(skipStartOptions);
  72. Assert.Equal(1, firstPage.Count);
  73. Assert.Equal(1, secondPage.Count);
  74. Assert.NotEqual(firstPage.First().Id, secondPage.First().Id);
  75. }
  76. [IntegrationTest]
  77. public async Task CanGetAllForCurrentParameterized()
  78. {
  79. var starredRequest = new StarredRequest { SortDirection = SortDirection.Ascending, SortProperty = StarredSort.Created };
  80. var repositories = await _fixture.GetAllForCurrent(starredRequest);
  81. Assert.NotEmpty(repositories);
  82. }
  83. [IntegrationTest]
  84. public async Task ReturnsCorrectCountOfRepositoriesWithoutStartForCurrentParameterized()
  85. {
  86. var starredRequest = new StarredRequest { SortDirection = SortDirection.Ascending, SortProperty = StarredSort.Created };
  87. var options = new ApiOptions
  88. {
  89. PageCount = 1,
  90. PageSize = 1
  91. };
  92. var repositories = await _fixture.GetAllForCurrent(starredRequest, options);
  93. Assert.Equal(1, repositories.Count);
  94. }
  95. [IntegrationTest]
  96. public async Task ReturnsCorrectCountOfRepositoriesWithStartForCurrentParameterized()
  97. {
  98. var starredRequest = new StarredRequest { SortDirection = SortDirection.Ascending, SortProperty = StarredSort.Created };
  99. var options = new ApiOptions
  100. {
  101. PageCount = 1,
  102. PageSize = 1,
  103. StartPage = 2
  104. };
  105. var repositories = await _fixture.GetAllForCurrent(starredRequest, options);
  106. Assert.Equal(1, repositories.Count);
  107. }
  108. [IntegrationTest]
  109. public async Task ReturnsDistinctRepositoriesBasedOnStartPageForCurrentParameterized()
  110. {
  111. var starredRequestFirstPage = new StarredRequest { SortDirection = SortDirection.Ascending, SortProperty = StarredSort.Created };
  112. var starredRequestSecondPage = new StarredRequest { SortDirection = SortDirection.Descending, SortProperty = StarredSort.Updated };
  113. var startOptions = new ApiOptions
  114. {
  115. PageCount = 1,
  116. PageSize = 1,
  117. StartPage = 1
  118. };
  119. var firstPage = await _fixture.GetAllForCurrent(starredRequestFirstPage, startOptions);
  120. var skipStartOptions = new ApiOptions
  121. {
  122. PageSize = 1,
  123. PageCount = 1,
  124. StartPage = 2
  125. };
  126. var secondPage = await _fixture.GetAllForCurrent(starredRequestSecondPage, skipStartOptions);
  127. Assert.Equal(1, firstPage.Count);
  128. Assert.Equal(1, secondPage.Count);
  129. Assert.NotEqual(firstPage.First().Id, secondPage.First().Id);
  130. }
  131. [IntegrationTest]
  132. public async Task CanGetAllForCurrentWithTimestamps()
  133. {
  134. var stars = await _fixture.GetAllForCurrentWithTimestamps();
  135. Assert.NotEmpty(stars);
  136. var repo = stars.FirstOrDefault(star => star.Repo.Owner.Login == _repositoryContext.RepositoryOwner && star.Repo.Name == _repositoryContext.RepositoryName);
  137. Assert.NotNull(repo);
  138. }
  139. [IntegrationTest]
  140. public async Task ReturnsCorrectCountOfRepositoriesWithoutStartForCurrentWithTimestamps()
  141. {
  142. var options = new ApiOptions
  143. {
  144. PageCount = 1,
  145. PageSize = 1
  146. };
  147. var repositories = await _fixture.GetAllForCurrentWithTimestamps(options);
  148. Assert.Equal(1, repositories.Count);
  149. }
  150. [IntegrationTest]
  151. public async Task ReturnsCorrectCountOfRepositoriesWithStartForCurrentWithTimestamps()
  152. {
  153. var options = new ApiOptions
  154. {
  155. PageCount = 1,
  156. PageSize = 1,
  157. StartPage = 2
  158. };
  159. var repositories = await _fixture.GetAllForCurrentWithTimestamps(options);
  160. Assert.Equal(1, repositories.Count);
  161. }
  162. [IntegrationTest]
  163. public async Task ReturnsDistinctRepositoriesBasedOnStartPageForCurrentWithTimestamps()
  164. {
  165. var startOptions = new ApiOptions
  166. {
  167. PageCount = 1,
  168. PageSize = 1,
  169. StartPage = 1
  170. };
  171. var firstPage = await _fixture.GetAllForCurrentWithTimestamps(startOptions);
  172. var skipStartOptions = new ApiOptions
  173. {
  174. PageSize = 1,
  175. PageCount = 1,
  176. StartPage = 2
  177. };
  178. var secondPage = await _fixture.GetAllForCurrentWithTimestamps(skipStartOptions);
  179. Assert.Equal(1, firstPage.Count);
  180. Assert.Equal(1, secondPage.Count);
  181. Assert.NotEqual(firstPage.First().Repo.Id, secondPage.First().Repo.Id);
  182. }
  183. [IntegrationTest]
  184. public async Task CanGetAllForCurrentWithTimestampsParameterized()
  185. {
  186. var starredRequest = new StarredRequest { SortProperty = StarredSort.Created, SortDirection = SortDirection.Descending };
  187. var stars = await _fixture.GetAllForCurrentWithTimestamps(starredRequest);
  188. Assert.NotEmpty(stars);
  189. var repo = stars.FirstOrDefault(star => star.Repo.Owner.Login == _repositoryContext.RepositoryOwner && star.Repo.Name == _repositoryContext.RepositoryName);
  190. Assert.NotNull(repo);
  191. for (int i = 1; i < stars.Count; i++)
  192. {
  193. Assert.True(stars[i - 1].StarredAt >= stars[i].StarredAt);
  194. }
  195. }
  196. [IntegrationTest]
  197. public async Task ReturnsCorrectCountOfRepositoriesWithoutStartForCurrentWithTimestampsParameterized()
  198. {
  199. var starredRequest = new StarredRequest { SortProperty = StarredSort.Created, SortDirection = SortDirection.Descending };
  200. var options = new ApiOptions
  201. {
  202. PageCount = 1,
  203. PageSize = 1
  204. };
  205. var stars = await _fixture.GetAllForCurrentWithTimestamps(starredRequest, options);
  206. Assert.Equal(1, stars.Count);
  207. for (int i = 1; i < stars.Count; i++)
  208. {
  209. Assert.True(stars[i - 1].StarredAt >= stars[i].StarredAt);
  210. }
  211. }
  212. [IntegrationTest]
  213. public async Task ReturnsCorrectCountOfRepositoriesWithStartForCurrentWithTimestampsParameterized()
  214. {
  215. var starredRequest = new StarredRequest { SortProperty = StarredSort.Created, SortDirection = SortDirection.Descending };
  216. var options = new ApiOptions
  217. {
  218. PageCount = 1,
  219. PageSize = 1,
  220. StartPage = 2
  221. };
  222. var stars = await _fixture.GetAllForCurrentWithTimestamps(starredRequest, options);
  223. Assert.Equal(1, stars.Count);
  224. for (int i = 1; i < stars.Count; i++)
  225. {
  226. Assert.True(stars[i - 1].StarredAt >= stars[i].StarredAt);
  227. }
  228. }
  229. [IntegrationTest]
  230. public async Task ReturnsDistinctRepositoriesBasedOnStartPageForCurrentWithTimestampsParameterized()
  231. {
  232. var starredRequest = new StarredRequest { SortDirection = SortDirection.Descending, SortProperty = StarredSort.Created };
  233. var startOptions = new ApiOptions
  234. {
  235. PageCount = 1,
  236. PageSize = 1,
  237. StartPage = 1
  238. };
  239. var firstPage = await _fixture.GetAllForCurrentWithTimestamps(starredRequest, startOptions);
  240. var skipStartOptions = new ApiOptions
  241. {
  242. PageSize = 1,
  243. PageCount = 1,
  244. StartPage = 2
  245. };
  246. var secondPage = await _fixture.GetAllForCurrentWithTimestamps(starredRequest, skipStartOptions);
  247. Assert.Equal(1, firstPage.Count);
  248. Assert.Equal(1, secondPage.Count);
  249. Assert.NotEqual(firstPage.First().Repo.Id, secondPage.First().Repo.Id);
  250. for (int i = 1; i < firstPage.Count; i++)
  251. {
  252. Assert.True(firstPage[i].StarredAt >= secondPage[i].StarredAt);
  253. }
  254. }
  255. [IntegrationTest]
  256. public async Task CanGetAllForUser()
  257. {
  258. var repositories = await _fixture.GetAllForUser(Helper.UserName);
  259. Assert.NotEmpty(repositories);
  260. var repo = repositories.FirstOrDefault(repository => repository.Owner.Login == _repositoryContext.RepositoryOwner && repository.Name == _repositoryContext.RepositoryName);
  261. Assert.NotNull(repo);
  262. }
  263. [IntegrationTest]
  264. public async Task ReturnsCorrectCountOfRepositoriesWithoutStartForUser()
  265. {
  266. var options = new ApiOptions
  267. {
  268. PageCount = 1,
  269. PageSize = 1
  270. };
  271. var repositories = await _fixture.GetAllForUser(Helper.UserName, options);
  272. Assert.Equal(1, repositories.Count);
  273. }
  274. [IntegrationTest]
  275. public async Task ReturnsCorrectCountOfRepositoriesWithStartForUser()
  276. {
  277. var options = new ApiOptions
  278. {
  279. PageCount = 1,
  280. PageSize = 1,
  281. StartPage = 2
  282. };
  283. var repositories = await _fixture.GetAllForUser(Helper.UserName, options);
  284. Assert.Equal(1, repositories.Count);
  285. }
  286. [IntegrationTest]
  287. public async Task ReturnsDistinctRepositoriesBasedOnStartPageForUser()
  288. {
  289. var startOptions = new ApiOptions
  290. {
  291. PageCount = 1,
  292. PageSize = 1,
  293. StartPage = 1
  294. };
  295. var firstPage = await _fixture.GetAllForUser(Helper.UserName, startOptions);
  296. var skipStartOptions = new ApiOptions
  297. {
  298. PageSize = 1,
  299. PageCount = 1,
  300. StartPage = 2
  301. };
  302. var secondPage = await _fixture.GetAllForUser(Helper.UserName, skipStartOptions);
  303. Assert.Equal(1, firstPage.Count);
  304. Assert.Equal(1, secondPage.Count);
  305. Assert.NotEqual(firstPage.First().Id, secondPage.First().Id);
  306. }
  307. [IntegrationTest]
  308. public async Task CanGetAllForUserParameterized()
  309. {
  310. var starredRequest = new StarredRequest { SortDirection = SortDirection.Ascending, SortProperty = StarredSort.Created };
  311. var repositories = await _fixture.GetAllForUser(Helper.UserName, starredRequest);
  312. Assert.NotEmpty(repositories);
  313. var repo = repositories.FirstOrDefault(repository => repository.Owner.Login == _repositoryContext.RepositoryOwner && repository.Name == _repositoryContext.RepositoryName);
  314. Assert.NotNull(repo);
  315. }
  316. [IntegrationTest]
  317. public async Task ReturnsCorrectCountOfRepositoriesWithoutStartForUserParameterized()
  318. {
  319. var starredRequest = new StarredRequest { SortDirection = SortDirection.Ascending, SortProperty = StarredSort.Created };
  320. var options = new ApiOptions
  321. {
  322. PageCount = 1,
  323. PageSize = 1
  324. };
  325. var repositories = await _fixture.GetAllForUser(Helper.UserName, starredRequest, options);
  326. Assert.Equal(1, repositories.Count);
  327. }
  328. [IntegrationTest]
  329. public async Task ReturnsCorrectCountOfRepositoriesWithStartForUserParameterized()
  330. {
  331. var starredRequest = new StarredRequest { SortDirection = SortDirection.Ascending, SortProperty = StarredSort.Created };
  332. var options = new ApiOptions
  333. {
  334. PageCount = 1,
  335. PageSize = 1,
  336. StartPage = 2
  337. };
  338. var repositories = await _fixture.GetAllForUser(Helper.UserName, starredRequest, options);
  339. Assert.Equal(1, repositories.Count);
  340. }
  341. [IntegrationTest]
  342. public async Task ReturnsDistinctRepositoriesBasedOnStartPageForUserParameterized()
  343. {
  344. var starredRequestFirstPage = new StarredRequest { SortDirection = SortDirection.Ascending, SortProperty = StarredSort.Created };
  345. var starredRequestSecondPage = new StarredRequest { SortDirection = SortDirection.Ascending, SortProperty = StarredSort.Created };
  346. var startOptions = new ApiOptions
  347. {
  348. PageCount = 1,
  349. PageSize = 1,
  350. StartPage = 1
  351. };
  352. var firstPage = await _fixture.GetAllForUser(Helper.UserName, starredRequestFirstPage, startOptions);
  353. var skipStartOptions = new ApiOptions
  354. {
  355. PageSize = 1,
  356. PageCount = 1,
  357. StartPage = 2
  358. };
  359. var secondPage = await _fixture.GetAllForUser(Helper.UserName, starredRequestSecondPage, skipStartOptions);
  360. Assert.Equal(1, firstPage.Count);
  361. Assert.Equal(1, secondPage.Count);
  362. Assert.NotEqual(firstPage.First().Id, secondPage.First().Id);
  363. }
  364. [IntegrationTest]
  365. public async Task CanGetAllForUserWithTimestamps()
  366. {
  367. var stars = await _fixture.GetAllForUserWithTimestamps(Helper.UserName);
  368. Assert.NotEmpty(stars);
  369. var star = stars.FirstOrDefault(repositoryStar => repositoryStar.Repo.Owner.Login == _repositoryContext.RepositoryOwner && repositoryStar.Repo.Name == _repositoryContext.RepositoryName);
  370. Assert.NotNull(star);
  371. }
  372. [IntegrationTest]
  373. public async Task ReturnsCorrectCountOfRepositoriesWithoutStartForUserWithTimestamps()
  374. {
  375. var options = new ApiOptions
  376. {
  377. PageCount = 1,
  378. PageSize = 1
  379. };
  380. var stars = await _fixture.GetAllForUserWithTimestamps(Helper.UserName, options);
  381. Assert.Equal(1, stars.Count);
  382. }
  383. [IntegrationTest]
  384. public async Task ReturnsCorrectCountOfRepositoriesWithStartForUserWithTimestamps()
  385. {
  386. var options = new ApiOptions
  387. {
  388. PageCount = 1,
  389. PageSize = 1,
  390. StartPage = 2
  391. };
  392. var stars = await _fixture.GetAllForUserWithTimestamps(Helper.UserName, options);
  393. Assert.Equal(1, stars.Count);
  394. }
  395. [IntegrationTest]
  396. public async Task ReturnsDistinctRepositoriesBasedOnStartPageForUserWithTimestamps()
  397. {
  398. var startOptions = new ApiOptions
  399. {
  400. PageCount = 1,
  401. PageSize = 1,
  402. StartPage = 1
  403. };
  404. var firstPage = await _fixture.GetAllForUserWithTimestamps(Helper.UserName, startOptions);
  405. var skipStartOptions = new ApiOptions
  406. {
  407. PageSize = 1,
  408. PageCount = 1,
  409. StartPage = 2
  410. };
  411. var secondPage = await _fixture.GetAllForUserWithTimestamps(Helper.UserName, skipStartOptions);
  412. Assert.Equal(1, firstPage.Count);
  413. Assert.Equal(1, secondPage.Count);
  414. Assert.NotEqual(firstPage.First().Repo.Id, secondPage.First().Repo.Id);
  415. }
  416. [IntegrationTest]
  417. public async Task CanGetAllForUserWithTimestampsParameterized()
  418. {
  419. var starredRequest = new StarredRequest { SortProperty = StarredSort.Created, SortDirection = SortDirection.Descending };
  420. var stars = await _fixture.GetAllForUserWithTimestamps(Helper.UserName, starredRequest);
  421. Assert.NotEmpty(stars);
  422. var repo = stars.FirstOrDefault(repository => repository.Repo.Owner.Login == _repositoryContext.RepositoryOwner && repository.Repo.Name == _repositoryContext.RepositoryName);
  423. Assert.NotNull(repo);
  424. for (int i = 1; i < stars.Count; i++)
  425. {
  426. Assert.True(stars[i - 1].StarredAt >= stars[i].StarredAt);
  427. }
  428. }
  429. [IntegrationTest]
  430. public async Task ReturnsCorrectCountOfRepositoriesWithoutStartForUserWithTimestampsParameterized()
  431. {
  432. var starredRequest = new StarredRequest { SortProperty = StarredSort.Created, SortDirection = SortDirection.Descending };
  433. var options = new ApiOptions
  434. {
  435. PageCount = 1,
  436. PageSize = 1
  437. };
  438. var stars = await _fixture.GetAllForUserWithTimestamps(Helper.UserName, starredRequest, options);
  439. Assert.Equal(1, stars.Count);
  440. for (int i = 1; i < stars.Count; i++)
  441. {
  442. Assert.True(stars[i - 1].StarredAt >= stars[i].StarredAt);
  443. }
  444. }
  445. [IntegrationTest]
  446. public async Task ReturnsCorrectCountOfRepositoriesWithStartForUserWithTimestampsParameterized()
  447. {
  448. var starredRequest = new StarredRequest { SortProperty = StarredSort.Created, SortDirection = SortDirection.Ascending };
  449. var options = new ApiOptions
  450. {
  451. PageCount = 1,
  452. PageSize = 1,
  453. StartPage = 2
  454. };
  455. var stars = await _fixture.GetAllForUserWithTimestamps(Helper.UserName, starredRequest, options);
  456. Assert.Equal(1, stars.Count);
  457. for (int i = 1; i < stars.Count; i++)
  458. {
  459. Assert.True(stars[i - 1].StarredAt >= stars[i].StarredAt);
  460. }
  461. }
  462. [IntegrationTest]
  463. public async Task ReturnsDistinctRepositoriesBasedOnStartPageForUserWithTimestampsParameterized()
  464. {
  465. var starredRequest = new StarredRequest { SortProperty = StarredSort.Created, SortDirection = SortDirection.Descending };
  466. var startOptions = new ApiOptions
  467. {
  468. PageCount = 1,
  469. PageSize = 1,
  470. StartPage = 1
  471. };
  472. var firstPage = await _fixture.GetAllForUserWithTimestamps(Helper.UserName, starredRequest, startOptions);
  473. var skipStartOptions = new ApiOptions
  474. {
  475. PageSize = 1,
  476. PageCount = 1,
  477. StartPage = 2
  478. };
  479. var secondPage = await _fixture.GetAllForUserWithTimestamps(Helper.UserName, starredRequest, skipStartOptions);
  480. Assert.Equal(1, firstPage.Count);
  481. Assert.Equal(1, secondPage.Count);
  482. Assert.NotEqual(firstPage.First().Repo.Id, secondPage.First().Repo.Id);
  483. for (int i = 0; i < firstPage.Count; i++)
  484. {
  485. Assert.True(firstPage[i].StarredAt >= secondPage[i].StarredAt);
  486. }
  487. }
  488. [IntegrationTest]
  489. public async Task CanGetAllStargazers()
  490. {
  491. var users = await _fixture.GetAllStargazers(_repositoryContext.RepositoryOwner, _repositoryContext.RepositoryName);
  492. Assert.NotEmpty(users);
  493. var user = users.FirstOrDefault(u => u.Login == Helper.UserName);
  494. Assert.NotNull(user);
  495. }
  496. [IntegrationTest]
  497. public async Task CanGetAllStargazersWithRepositoryId()
  498. {
  499. var users = await _fixture.GetAllStargazers(_repositoryContext.Repository.Id);
  500. Assert.NotEmpty(users);
  501. var user = users.FirstOrDefault(u => u.Login == Helper.UserName);
  502. Assert.NotNull(user);
  503. }
  504. [IntegrationTest]
  505. public async Task ReturnsCorrectCountOfRepositoriesWithoutStartAllStargazers()
  506. {
  507. var options = new ApiOptions
  508. {
  509. PageCount = 1,
  510. PageSize = 1
  511. };
  512. var users = await _fixture.GetAllStargazers("octokit", "octokit.net", options);
  513. Assert.Equal(1, users.Count);
  514. }
  515. [IntegrationTest]
  516. public async Task ReturnsCorrectCountOfRepositoriesWithoutStartAllStargazersWithRepositoryId()
  517. {
  518. var options = new ApiOptions
  519. {
  520. PageCount = 1,
  521. PageSize = 1
  522. };
  523. var users = await _fixture.GetAllStargazers(7528679, options);
  524. Assert.Equal(1, users.Count);
  525. }
  526. [IntegrationTest]
  527. public async Task ReturnsCorrectCountOfRepositoriesWithStartAllStargazers()
  528. {
  529. var options = new ApiOptions
  530. {
  531. PageCount = 1,
  532. PageSize = 1,
  533. StartPage = 2
  534. };
  535. var users = await _fixture.GetAllStargazers("octokit", "octokit.net", options);
  536. Assert.Equal(1, users.Count);
  537. }
  538. [IntegrationTest]
  539. public async Task ReturnsCorrectCountOfRepositoriesWithStartAllStargazersWithRepositoryId()
  540. {
  541. var options = new ApiOptions
  542. {
  543. PageCount = 1,
  544. PageSize = 1,
  545. StartPage = 2
  546. };
  547. var users = await _fixture.GetAllStargazers(7528679, options);
  548. Assert.Equal(1, users.Count);
  549. }
  550. [IntegrationTest]
  551. public async Task ReturnsDistinctRepositoriesBasedOnStartPageAllStargazers()
  552. {
  553. var startOptions = new ApiOptions
  554. {
  555. PageCount = 1,
  556. PageSize = 1,
  557. StartPage = 1
  558. };
  559. var firstPage = await _fixture.GetAllStargazers("octokit", "octokit.net", startOptions);
  560. var skipStartOptions = new ApiOptions
  561. {
  562. PageSize = 1,
  563. PageCount = 1,
  564. StartPage = 2
  565. };
  566. var secondPage = await _fixture.GetAllStargazers("octokit", "octokit.net", skipStartOptions);
  567. Assert.Equal(1, firstPage.Count);
  568. Assert.Equal(1, secondPage.Count);
  569. Assert.NotEqual(firstPage.First().Id, secondPage.First().Id);
  570. }
  571. [IntegrationTest]
  572. public async Task ReturnsDistinctRepositoriesBasedOnStartPageAllStargazersWithRepositoryId()
  573. {
  574. var startOptions = new ApiOptions
  575. {
  576. PageCount = 1,
  577. PageSize = 1,
  578. StartPage = 1
  579. };
  580. var firstPage = await _fixture.GetAllStargazers(7528679, startOptions);
  581. var skipStartOptions = new ApiOptions
  582. {
  583. PageSize = 1,
  584. PageCount = 1,
  585. StartPage = 2
  586. };
  587. var secondPage = await _fixture.GetAllStargazers(7528679, skipStartOptions);
  588. Assert.Equal(1, firstPage.Count);
  589. Assert.Equal(1, secondPage.Count);
  590. Assert.NotEqual(firstPage.First().Id, secondPage.First().Id);
  591. }
  592. [IntegrationTest]
  593. public async Task CanGetAllStargazersWithTimestamps()
  594. {
  595. var users = await _fixture.GetAllStargazersWithTimestamps(_repositoryContext.RepositoryOwner, _repositoryContext.RepositoryName);
  596. Assert.NotEmpty(users);
  597. var userStar = users.FirstOrDefault(star => star.User.Login == _repositoryContext.RepositoryOwner);
  598. Assert.NotNull(userStar);
  599. Assert.True(DateTimeOffset.UtcNow.Subtract(userStar.StarredAt) < TimeSpan.FromMinutes(5));
  600. }
  601. [IntegrationTest]
  602. public async Task CanGetAllStargazersWithTimestampsWithRepositoryId()
  603. {
  604. var users = await _fixture.GetAllStargazersWithTimestamps(_repositoryContext.Repository.Id);
  605. Assert.NotEmpty(users);
  606. var userStar = users.FirstOrDefault(star => star.User.Login == _repositoryContext.RepositoryOwner);
  607. Assert.NotNull(userStar);
  608. Assert.True(DateTimeOffset.UtcNow.Subtract(userStar.StarredAt) < TimeSpan.FromMinutes(5));
  609. }
  610. [IntegrationTest]
  611. public async Task ReturnsCorrectCountOfRepositoriesWithoutStartAllStargazersWithTimestamps()
  612. {
  613. var options = new ApiOptions
  614. {
  615. PageCount = 1,
  616. PageSize = 1
  617. };
  618. var userStars = await _fixture.GetAllStargazersWithTimestamps("octokit", "octokit.net", options);
  619. Assert.Equal(1, userStars.Count);
  620. }
  621. [IntegrationTest]
  622. public async Task ReturnsCorrectCountOfRepositoriesWithoutStartAllStargazersWithTimestampsWithRepositoryId()
  623. {
  624. var options = new ApiOptions
  625. {
  626. PageCount = 1,
  627. PageSize = 1
  628. };
  629. var userStars = await _fixture.GetAllStargazersWithTimestamps(7528679, options);
  630. Assert.Equal(1, userStars.Count);
  631. }
  632. [IntegrationTest]
  633. public async Task ReturnsCorrectCountOfRepositoriesWithStartAllStargazersWithTimestamps()
  634. {
  635. var options = new ApiOptions
  636. {
  637. PageCount = 1,
  638. PageSize = 1,
  639. StartPage = 2
  640. };
  641. var userStars = await _fixture.GetAllStargazersWithTimestamps("octokit", "octokit.net", options);
  642. Assert.Equal(1, userStars.Count);
  643. }
  644. [IntegrationTest]
  645. public async Task ReturnsCorrectCountOfRepositoriesWithStartAllStargazersWithTimestampsWithRepositoryId()
  646. {
  647. var options = new ApiOptions
  648. {
  649. PageCount = 1,
  650. PageSize = 1,
  651. StartPage = 2
  652. };
  653. var userStars = await _fixture.GetAllStargazersWithTimestamps(7528679, options);
  654. Assert.Equal(1, userStars.Count);
  655. }
  656. [IntegrationTest]
  657. public async Task ReturnsDistinctRepositoriesBasedOnStartPageAllStargazersWithTimestamps()
  658. {
  659. var startOptions = new ApiOptions
  660. {
  661. PageCount = 1,
  662. PageSize = 1,
  663. StartPage = 1
  664. };
  665. var firstPage = await _fixture.GetAllStargazersWithTimestamps("octokit", "octokit.net", startOptions);
  666. var skipStartOptions = new ApiOptions
  667. {
  668. PageSize = 1,
  669. PageCount = 1,
  670. StartPage = 2
  671. };
  672. var secondPage = await _fixture.GetAllStargazersWithTimestamps("octokit", "octokit.net", skipStartOptions);
  673. Assert.Equal(1, firstPage.Count);
  674. Assert.Equal(1, secondPage.Count);
  675. Assert.NotEqual(firstPage.First().StarredAt, secondPage.First().StarredAt);
  676. }
  677. [IntegrationTest]
  678. public async Task ReturnsDistinctRepositoriesBasedOnStartPageAllStargazersWithTimestampsWithRepositoryId()
  679. {
  680. var startOptions = new ApiOptions
  681. {
  682. PageCount = 1,
  683. PageSize = 1,
  684. StartPage = 1
  685. };
  686. var firstPage = await _fixture.GetAllStargazersWithTimestamps(7528679, startOptions);
  687. var skipStartOptions = new ApiOptions
  688. {
  689. PageSize = 1,
  690. PageCount = 1,
  691. StartPage = 2
  692. };
  693. var secondPage = await _fixture.GetAllStargazersWithTimestamps(7528679, skipStartOptions);
  694. Assert.Equal(1, firstPage.Count);
  695. Assert.Equal(1, secondPage.Count);
  696. Assert.NotEqual(firstPage.First().StarredAt, secondPage.First().StarredAt);
  697. }
  698. public void Dispose()
  699. {
  700. _repositoryContext.Dispose();
  701. }
  702. }
  703. }