PageRenderTime 42ms CodeModel.GetById 15ms RepoModel.GetById 0ms app.codeStats 0ms

/Octokit.Tests.Integration/Clients/RepositoryForksClientTests.cs

https://gitlab.com/WoomyNightClub/GitHub-API-.NET
C# | 475 lines | 357 code | 106 blank | 12 comment | 8 complexity | c3f180777043c244b016d4a92d26cdfd MD5 | raw file
  1. using System.Linq;
  2. using System.Threading.Tasks;
  3. using Xunit;
  4. namespace Octokit.Tests.Integration.Clients
  5. {
  6. public class RepositoryForksClientTests
  7. {
  8. public class TheGetAllMethod
  9. {
  10. [IntegrationTest]
  11. public async Task ReturnsForksForRepository()
  12. {
  13. var github = Helper.GetAuthenticatedClient();
  14. var forks = await github.Repository.Forks.GetAll("octokit", "octokit.net");
  15. var masterFork = forks.FirstOrDefault(fork => fork.FullName == "TeamBinary/octokit.net");
  16. Assert.NotNull(masterFork);
  17. Assert.Equal("TeamBinary", masterFork.Owner.Login);
  18. }
  19. [IntegrationTest]
  20. public async Task ReturnsForksForRepositoryWithRepositoryId()
  21. {
  22. var github = Helper.GetAuthenticatedClient();
  23. var forks = await github.Repository.Forks.GetAll(7528679);
  24. var masterFork = forks.FirstOrDefault(fork => fork.FullName == "TeamBinary/octokit.net");
  25. Assert.NotNull(masterFork);
  26. Assert.Equal("TeamBinary", masterFork.Owner.Login);
  27. }
  28. [IntegrationTest]
  29. public async Task ReturnsCorrectCountOfForksWithoutStart()
  30. {
  31. var github = Helper.GetAuthenticatedClient();
  32. var options = new ApiOptions
  33. {
  34. PageCount = 1,
  35. PageSize = 1
  36. };
  37. var forks = await github.Repository.Forks.GetAll("octokit", "octokit.net", options);
  38. Assert.Equal(1, forks.Count);
  39. }
  40. [IntegrationTest]
  41. public async Task ReturnsCorrectCountOfForksWithoutStartWithRepositoryId()
  42. {
  43. var github = Helper.GetAuthenticatedClient();
  44. var options = new ApiOptions
  45. {
  46. PageCount = 1,
  47. PageSize = 1
  48. };
  49. var forks = await github.Repository.Forks.GetAll(7528679, options);
  50. Assert.Equal(1, forks.Count);
  51. }
  52. [IntegrationTest]
  53. public async Task ReturnsCorrectCountOfForksWithStart()
  54. {
  55. var github = Helper.GetAuthenticatedClient();
  56. var options = new ApiOptions
  57. {
  58. PageCount = 1,
  59. PageSize = 1,
  60. StartPage = 1
  61. };
  62. var forks = await github.Repository.Forks.GetAll("octokit", "octokit.net", options);
  63. Assert.Equal(1, forks.Count);
  64. }
  65. [IntegrationTest]
  66. public async Task ReturnsCorrectCountOfForksWithStartWithRepositoryId()
  67. {
  68. var github = Helper.GetAuthenticatedClient();
  69. var options = new ApiOptions
  70. {
  71. PageCount = 1,
  72. PageSize = 1,
  73. StartPage = 1
  74. };
  75. var forks = await github.Repository.Forks.GetAll(7528679, options);
  76. Assert.Equal(1, forks.Count);
  77. }
  78. [IntegrationTest]
  79. public async Task ReturnsDistinctForksBasedOnStartPage()
  80. {
  81. var github = Helper.GetAuthenticatedClient();
  82. var startOptions = new ApiOptions
  83. {
  84. PageCount = 1,
  85. PageSize = 3,
  86. StartPage = 1
  87. };
  88. var firstPage = await github.Repository.Forks.GetAll("octokit", "octokit.net", startOptions);
  89. var skipStartOptions = new ApiOptions
  90. {
  91. PageCount = 1,
  92. PageSize = 3,
  93. StartPage = 2
  94. };
  95. var secondPage = await github.Repository.Forks.GetAll("octokit", "octokit.net", skipStartOptions);
  96. Assert.Equal(3, firstPage.Count);
  97. Assert.Equal(3, secondPage.Count);
  98. Assert.NotEqual(firstPage[0].Id, secondPage[0].Id);
  99. Assert.NotEqual(firstPage[1].Id, secondPage[1].Id);
  100. Assert.NotEqual(firstPage[2].Id, secondPage[2].Id);
  101. }
  102. [IntegrationTest]
  103. public async Task ReturnsDistinctForksBasedOnStartPageWithRepositoryId()
  104. {
  105. var github = Helper.GetAuthenticatedClient();
  106. var startOptions = new ApiOptions
  107. {
  108. PageCount = 1,
  109. PageSize = 3,
  110. StartPage = 1
  111. };
  112. var firstPage = await github.Repository.Forks.GetAll(7528679, startOptions);
  113. var skipStartOptions = new ApiOptions
  114. {
  115. PageCount = 1,
  116. PageSize = 3,
  117. StartPage = 2
  118. };
  119. var secondPage = await github.Repository.Forks.GetAll(7528679, skipStartOptions);
  120. Assert.Equal(3, firstPage.Count);
  121. Assert.Equal(3, secondPage.Count);
  122. Assert.NotEqual(firstPage[0].Id, secondPage[0].Id);
  123. Assert.NotEqual(firstPage[1].Id, secondPage[1].Id);
  124. Assert.NotEqual(firstPage[2].Id, secondPage[2].Id);
  125. }
  126. [IntegrationTest]
  127. public async Task ReturnsCorrectCountOfForksWithoutStartParameterized()
  128. {
  129. var github = Helper.GetAuthenticatedClient();
  130. var options = new ApiOptions
  131. {
  132. PageCount = 1,
  133. PageSize = 1
  134. };
  135. var repositoryForksListRequest = new RepositoryForksListRequest { Sort = Sort.Newest };
  136. var forks = await github.Repository.Forks.GetAll("octokit", "octokit.net", repositoryForksListRequest, options);
  137. Assert.Equal(1, forks.Count);
  138. }
  139. [IntegrationTest]
  140. public async Task ReturnsCorrectCountOfForksWithoutStartParameterizedWithRepositoryId()
  141. {
  142. var github = Helper.GetAuthenticatedClient();
  143. var options = new ApiOptions
  144. {
  145. PageCount = 1,
  146. PageSize = 1
  147. };
  148. var repositoryForksListRequest = new RepositoryForksListRequest { Sort = Sort.Newest };
  149. var forks = await github.Repository.Forks.GetAll(7528679, repositoryForksListRequest, options);
  150. Assert.Equal(1, forks.Count);
  151. }
  152. [IntegrationTest]
  153. public async Task ReturnsCorrectCountOfForksWithStartParameterized()
  154. {
  155. var github = Helper.GetAuthenticatedClient();
  156. var options = new ApiOptions
  157. {
  158. PageCount = 1,
  159. PageSize = 1,
  160. StartPage = 1
  161. };
  162. var repositoryForksListRequest = new RepositoryForksListRequest { Sort = Sort.Newest };
  163. var forks = await github.Repository.Forks.GetAll("octokit", "octokit.net", repositoryForksListRequest, options);
  164. Assert.Equal(1, forks.Count);
  165. }
  166. [IntegrationTest]
  167. public async Task ReturnsCorrectCountOfForksWithStartParameterizedWithRepositoryId()
  168. {
  169. var github = Helper.GetAuthenticatedClient();
  170. var options = new ApiOptions
  171. {
  172. PageCount = 1,
  173. PageSize = 1,
  174. StartPage = 1
  175. };
  176. var repositoryForksListRequest = new RepositoryForksListRequest { Sort = Sort.Newest };
  177. var forks = await github.Repository.Forks.GetAll(7528679, repositoryForksListRequest, options);
  178. Assert.Equal(1, forks.Count);
  179. }
  180. [IntegrationTest]
  181. public async Task ReturnsDistinctForksBasedOnStartPageParameterized()
  182. {
  183. var github = Helper.GetAuthenticatedClient();
  184. var repositoryForksListRequest = new RepositoryForksListRequest { Sort = Sort.Newest };
  185. var startOptions = new ApiOptions
  186. {
  187. PageCount = 1,
  188. PageSize = 3,
  189. StartPage = 1
  190. };
  191. var firstPage = await github.Repository.Forks.GetAll("octokit", "octokit.net", repositoryForksListRequest, startOptions);
  192. var skipStartOptions = new ApiOptions
  193. {
  194. PageCount = 1,
  195. PageSize = 3,
  196. StartPage = 2
  197. };
  198. var secondPage = await github.Repository.Forks.GetAll("octokit", "octokit.net", repositoryForksListRequest, skipStartOptions);
  199. Assert.Equal(3, firstPage.Count);
  200. Assert.Equal(3, secondPage.Count);
  201. Assert.NotEqual(firstPage[0].Id, secondPage[0].Id);
  202. Assert.NotEqual(firstPage[1].Id, secondPage[1].Id);
  203. Assert.NotEqual(firstPage[2].Id, secondPage[2].Id);
  204. }
  205. [IntegrationTest]
  206. public async Task ReturnsDistinctForksBasedOnStartPageParameterizedWithRepositoryId()
  207. {
  208. var github = Helper.GetAuthenticatedClient();
  209. var repositoryForksListRequest = new RepositoryForksListRequest { Sort = Sort.Newest };
  210. var startOptions = new ApiOptions
  211. {
  212. PageCount = 1,
  213. PageSize = 3,
  214. StartPage = 1
  215. };
  216. var firstPage = await github.Repository.Forks.GetAll(7528679, repositoryForksListRequest, startOptions);
  217. var skipStartOptions = new ApiOptions
  218. {
  219. PageCount = 1,
  220. PageSize = 3,
  221. StartPage = 2
  222. };
  223. var secondPage = await github.Repository.Forks.GetAll(7528679, repositoryForksListRequest, skipStartOptions);
  224. Assert.Equal(3, firstPage.Count);
  225. Assert.Equal(3, secondPage.Count);
  226. Assert.NotEqual(firstPage[0].Id, secondPage[0].Id);
  227. Assert.NotEqual(firstPage[1].Id, secondPage[1].Id);
  228. Assert.NotEqual(firstPage[2].Id, secondPage[2].Id);
  229. }
  230. [IntegrationTest]
  231. public async Task ReturnsForksForRepositorySortingTheResultWithOldestFirstWithApiOptions()
  232. {
  233. var github = Helper.GetAuthenticatedClient();
  234. var repositoryForksListRequest = new RepositoryForksListRequest { Sort = Sort.Oldest };
  235. var startOptions = new ApiOptions
  236. {
  237. PageCount = 1,
  238. PageSize = 3,
  239. StartPage = 1
  240. };
  241. var firstPage = await github.Repository.Forks.GetAll("octokit", "octokit.net", repositoryForksListRequest, startOptions);
  242. var firstPageOrdered = firstPage.OrderBy(r => r.CreatedAt).ToList();
  243. var skipStartOptions = new ApiOptions
  244. {
  245. PageCount = 1,
  246. PageSize = 3,
  247. StartPage = 1
  248. };
  249. var secondPage = await github.Repository.Forks.GetAll("octokit", "octokit.net", repositoryForksListRequest, skipStartOptions);
  250. var secondPageOrdered = secondPage.OrderBy(r => r.CreatedAt).ToList();
  251. for (var index = 0; index < firstPage.Count; index++)
  252. {
  253. Assert.Equal(firstPageOrdered[index].FullName, firstPage[index].FullName);
  254. }
  255. for (var index = 0; index < firstPage.Count; index++)
  256. {
  257. Assert.Equal(secondPageOrdered[index].FullName, secondPage[index].FullName);
  258. }
  259. }
  260. [IntegrationTest]
  261. public async Task ReturnsForksForRepositorySortingTheResultWithOldestFirstWithApiOptionsWithRepositoryId()
  262. {
  263. var github = Helper.GetAuthenticatedClient();
  264. var repositoryForksListRequest = new RepositoryForksListRequest { Sort = Sort.Oldest };
  265. var startOptions = new ApiOptions
  266. {
  267. PageCount = 1,
  268. PageSize = 3,
  269. StartPage = 1
  270. };
  271. var firstPage = await github.Repository.Forks.GetAll(7528679, repositoryForksListRequest, startOptions);
  272. var firstPageOrdered = firstPage.OrderBy(r => r.CreatedAt).ToList();
  273. var skipStartOptions = new ApiOptions
  274. {
  275. PageCount = 1,
  276. PageSize = 3,
  277. StartPage = 1
  278. };
  279. var secondPage = await github.Repository.Forks.GetAll(7528679, repositoryForksListRequest, skipStartOptions);
  280. var secondPageOrdered = secondPage.OrderBy(r => r.CreatedAt).ToList();
  281. for (var index = 0; index < firstPage.Count; index++)
  282. {
  283. Assert.Equal(firstPageOrdered[index].FullName, firstPage[index].FullName);
  284. }
  285. for (var index = 0; index < firstPage.Count; index++)
  286. {
  287. Assert.Equal(secondPageOrdered[index].FullName, secondPage[index].FullName);
  288. }
  289. }
  290. [IntegrationTest]
  291. public async Task ReturnsForksForRepositorySortingTheResultWithOldestFirst()
  292. {
  293. var github = Helper.GetAuthenticatedClient();
  294. var actualForks = (await github.Repository.Forks.GetAll("octokit", "octokit.net", new RepositoryForksListRequest { Sort = Sort.Oldest })).ToArray();
  295. var sortedForks = actualForks.OrderBy(fork => fork.CreatedAt).ToArray();
  296. for (var index = 0; index < actualForks.Length; index++)
  297. {
  298. Assert.Equal(sortedForks[index].FullName, actualForks[index].FullName);
  299. }
  300. }
  301. [IntegrationTest]
  302. public async Task ReturnsForksForRepositorySortingTheResultWithOldestFirstWithRepositoryId()
  303. {
  304. var github = Helper.GetAuthenticatedClient();
  305. var actualForks = (await github.Repository.Forks.GetAll(7528679, new RepositoryForksListRequest { Sort = Sort.Oldest })).ToArray();
  306. var sortedForks = actualForks.OrderBy(fork => fork.CreatedAt).ToArray();
  307. for (var index = 0; index < actualForks.Length; index++)
  308. {
  309. Assert.Equal(sortedForks[index].FullName, actualForks[index].FullName);
  310. }
  311. }
  312. }
  313. public class TheCreateMethod
  314. {
  315. [IntegrationTest]
  316. public async Task ForkCreatedForUserLoggedIn()
  317. {
  318. // The fork is created asynchronously by github and therefore it cannot
  319. // be certain that the repo exists when the test ends. It is therefore deleted
  320. // before the test starts instead of after.
  321. Helper.DeleteRepo(Helper.GetAuthenticatedClient().Connection, Helper.Credentials.Login, "octokit.net");
  322. var github = Helper.GetAuthenticatedClient();
  323. var forkCreated = await github.Repository.Forks.Create("octokit", "octokit.net", new NewRepositoryFork());
  324. Assert.NotNull(forkCreated);
  325. Assert.Equal(string.Format("{0}/octokit.net", Helper.UserName), forkCreated.FullName);
  326. Assert.Equal(true, forkCreated.Fork);
  327. }
  328. [IntegrationTest]
  329. public async Task ForkCreatedForUserLoggedInWithRepositoryId()
  330. {
  331. // The fork is created asynchronously by github and therefore it cannot
  332. // be certain that the repo exists when the test ends. It is therefore deleted
  333. // before the test starts instead of after.
  334. Helper.DeleteRepo(Helper.GetAuthenticatedClient().Connection, Helper.Credentials.Login, "octokit.net");
  335. var github = Helper.GetAuthenticatedClient();
  336. var forkCreated = await github.Repository.Forks.Create(7528679, new NewRepositoryFork());
  337. Assert.NotNull(forkCreated);
  338. Assert.Equal(string.Format("{0}/octokit.net", Helper.UserName), forkCreated.FullName);
  339. Assert.Equal(true, forkCreated.Fork);
  340. }
  341. [OrganizationTest]
  342. public async Task ForkCreatedForOrganization()
  343. {
  344. // The fork is created asynchronously by github and therefore it cannot
  345. // be certain that the repo exists when the test ends. It is therefore deleted
  346. // before the test starts.
  347. Helper.DeleteRepo(Helper.GetAuthenticatedClient().Connection, Helper.Organization, "octokit.net");
  348. var github = Helper.GetAuthenticatedClient();
  349. var forkCreated = await github.Repository.Forks.Create("octokit", "octokit.net", new NewRepositoryFork { Organization = Helper.Organization });
  350. Assert.NotNull(forkCreated);
  351. Assert.Equal(string.Format("{0}/octokit.net", Helper.Organization), forkCreated.FullName);
  352. Assert.Equal(true, forkCreated.Fork);
  353. }
  354. [OrganizationTest]
  355. public async Task ForkCreatedForOrganizationWithRepositoryId()
  356. {
  357. // The fork is created asynchronously by github and therefore it cannot
  358. // be certain that the repo exists when the test ends. It is therefore deleted
  359. // before the test starts.
  360. Helper.DeleteRepo(Helper.GetAuthenticatedClient().Connection, Helper.Organization, "octokit.net");
  361. var github = Helper.GetAuthenticatedClient();
  362. var forkCreated = await github.Repository.Forks.Create(7528679, new NewRepositoryFork { Organization = Helper.Organization });
  363. Assert.NotNull(forkCreated);
  364. Assert.Equal(string.Format("{0}/octokit.net", Helper.Organization), forkCreated.FullName);
  365. Assert.Equal(true, forkCreated.Fork);
  366. }
  367. }
  368. }
  369. }