PageRenderTime 25ms CodeModel.GetById 11ms RepoModel.GetById 0ms app.codeStats 0ms

/Octokit.Tests.Integration/Reactive/ObservableGistClientTests.cs

https://gitlab.com/WoomyNightClub/GitHub-API-.NET
C# | 720 lines | 583 code | 137 blank | 0 comment | 0 complexity | 5b8b037b2a8c63010aabb90a67ce2489 MD5 | raw file
  1. using System;
  2. using System.Reactive.Linq;
  3. using System.Threading.Tasks;
  4. using Octokit;
  5. using Octokit.Reactive;
  6. using Octokit.Tests.Integration;
  7. using Xunit;
  8. public class ObservableGistClientTests
  9. {
  10. public class TheGetAllMethod
  11. {
  12. readonly ObservableGistsClient _gistsClient;
  13. public TheGetAllMethod()
  14. {
  15. var github = Helper.GetAuthenticatedClient();
  16. _gistsClient = new ObservableGistsClient(github);
  17. }
  18. [IntegrationTest]
  19. public async Task ReturnsGists()
  20. {
  21. var gists = await _gistsClient.GetAll().ToList();
  22. Assert.NotEmpty(gists);
  23. }
  24. [IntegrationTest]
  25. public async Task ReturnsCorrectCountOfGistsWithoutStart()
  26. {
  27. var options = new ApiOptions
  28. {
  29. PageSize = 5,
  30. PageCount = 1
  31. };
  32. var gists = await _gistsClient.GetAll(options).ToList();
  33. Assert.Equal(5, gists.Count);
  34. }
  35. [IntegrationTest]
  36. public async Task ReturnsCorrectCountOfGistsWithStart()
  37. {
  38. var options = new ApiOptions
  39. {
  40. PageSize = 4,
  41. PageCount = 1,
  42. StartPage = 2
  43. };
  44. var gists = await _gistsClient.GetAll(options).ToList();
  45. Assert.Equal(4, gists.Count);
  46. }
  47. [IntegrationTest]
  48. public async Task ReturnsDistinctResultsBasedOnStartPage()
  49. {
  50. var startOptions = new ApiOptions
  51. {
  52. PageSize = 4,
  53. PageCount = 1
  54. };
  55. var firstGistsPage = await _gistsClient.GetAll(startOptions).ToList();
  56. var skipStartOptions = new ApiOptions
  57. {
  58. PageSize = 4,
  59. PageCount = 1,
  60. StartPage = 2
  61. };
  62. var secondGistsPage = await _gistsClient.GetAll(skipStartOptions).ToList();
  63. Assert.NotEqual(firstGistsPage[0].Id, secondGistsPage[0].Id);
  64. Assert.NotEqual(firstGistsPage[1].Id, secondGistsPage[1].Id);
  65. Assert.NotEqual(firstGistsPage[2].Id, secondGistsPage[2].Id);
  66. Assert.NotEqual(firstGistsPage[3].Id, secondGistsPage[3].Id);
  67. }
  68. [IntegrationTest]
  69. public async Task ReturnsGistsSince()
  70. {
  71. var since = new DateTimeOffset(new DateTime(2016, 1, 1));
  72. var gists = await _gistsClient.GetAll(since).ToList();
  73. Assert.NotEmpty(gists);
  74. }
  75. [IntegrationTest]
  76. public async Task ReturnsCorrectCountOfGistsSinceWithoutStart()
  77. {
  78. var options = new ApiOptions
  79. {
  80. PageSize = 5,
  81. PageCount = 1
  82. };
  83. var since = new DateTimeOffset(new DateTime(2016, 1, 1));
  84. var gists = await _gistsClient.GetAll(since, options).ToList();
  85. Assert.Equal(5, gists.Count);
  86. }
  87. [IntegrationTest]
  88. public async Task ReturnsCorrectCountOfGistsSinceWithStart()
  89. {
  90. var options = new ApiOptions
  91. {
  92. PageSize = 4,
  93. PageCount = 1,
  94. StartPage = 2
  95. };
  96. var since = new DateTimeOffset(new DateTime(2016, 1, 1));
  97. var gists = await _gistsClient.GetAll(since, options).ToList();
  98. Assert.Equal(4, gists.Count);
  99. }
  100. [IntegrationTest]
  101. public async Task ReturnsDistinctGistsSinceBasedOnStartPage()
  102. {
  103. var startOptions = new ApiOptions
  104. {
  105. PageSize = 4,
  106. PageCount = 1
  107. };
  108. var since = new DateTimeOffset(new DateTime(2016, 1, 1));
  109. var firstGistsPage = await _gistsClient.GetAll(since, startOptions).ToList();
  110. var skipStartOptions = new ApiOptions
  111. {
  112. PageSize = 4,
  113. PageCount = 1,
  114. StartPage = 2
  115. };
  116. var secondGistsPage = await _gistsClient.GetAll(since, skipStartOptions).ToList();
  117. Assert.NotEqual(firstGistsPage[0].Id, secondGistsPage[0].Id);
  118. Assert.NotEqual(firstGistsPage[1].Id, secondGistsPage[1].Id);
  119. Assert.NotEqual(firstGistsPage[2].Id, secondGistsPage[2].Id);
  120. Assert.NotEqual(firstGistsPage[3].Id, secondGistsPage[3].Id);
  121. }
  122. }
  123. public class TheGetAllPublicMethod
  124. {
  125. readonly ObservableGistsClient _gistsClient;
  126. public TheGetAllPublicMethod()
  127. {
  128. var github = Helper.GetAuthenticatedClient();
  129. _gistsClient = new ObservableGistsClient(github);
  130. }
  131. [IntegrationTest]
  132. public async Task ReturnsPublicGists()
  133. {
  134. var gists = await _gistsClient.GetAllPublic().ToList();
  135. Assert.NotEmpty(gists);
  136. }
  137. [IntegrationTest]
  138. public async Task ReturnsCorrectCountOfPublicGistsWithoutStart()
  139. {
  140. var options = new ApiOptions
  141. {
  142. PageSize = 5,
  143. PageCount = 1
  144. };
  145. var gists = await _gistsClient.GetAllPublic(options).ToList();
  146. Assert.Equal(5, gists.Count);
  147. }
  148. [IntegrationTest]
  149. public async Task ReturnsCorrectCountOfPublicGistsWithStart()
  150. {
  151. var options = new ApiOptions
  152. {
  153. PageSize = 4,
  154. PageCount = 1,
  155. StartPage = 2
  156. };
  157. var gists = await _gistsClient.GetAllPublic(options).ToList();
  158. Assert.Equal(4, gists.Count);
  159. }
  160. [IntegrationTest]
  161. public async Task ReturnsDistinctResultsBasedOnStartPage()
  162. {
  163. var startOptions = new ApiOptions
  164. {
  165. PageSize = 4,
  166. PageCount = 1
  167. };
  168. var firstPublicGistsPage = await _gistsClient.GetAllPublic(startOptions).ToList();
  169. var skipStartOptions = new ApiOptions
  170. {
  171. PageSize = 4,
  172. PageCount = 1,
  173. StartPage = 2
  174. };
  175. var secondPublicGistsPage = await _gistsClient.GetAllPublic(skipStartOptions).ToList();
  176. Assert.NotEqual(firstPublicGistsPage[0].Id, secondPublicGistsPage[0].Id);
  177. Assert.NotEqual(firstPublicGistsPage[1].Id, secondPublicGistsPage[1].Id);
  178. Assert.NotEqual(firstPublicGistsPage[2].Id, secondPublicGistsPage[2].Id);
  179. Assert.NotEqual(firstPublicGistsPage[3].Id, secondPublicGistsPage[3].Id);
  180. }
  181. [IntegrationTest]
  182. public async Task ReturnsPublicGistsSince()
  183. {
  184. var since = new DateTimeOffset(new DateTime(2016, 1, 1));
  185. var gists = await _gistsClient.GetAllPublic(since).ToList();
  186. Assert.NotEmpty(gists);
  187. }
  188. [IntegrationTest]
  189. public async Task ReturnsCorrectCountOfPublicGistsSinceWithoutStart()
  190. {
  191. var options = new ApiOptions
  192. {
  193. PageSize = 5,
  194. PageCount = 1
  195. };
  196. var since = new DateTimeOffset(new DateTime(2016, 1, 1));
  197. var gists = await _gistsClient.GetAllPublic(since, options).ToList();
  198. Assert.Equal(5, gists.Count);
  199. }
  200. [IntegrationTest]
  201. public async Task ReturnsCorrectCountOfPublicGistsSinceWithStart()
  202. {
  203. var options = new ApiOptions
  204. {
  205. PageSize = 4,
  206. PageCount = 1,
  207. StartPage = 2
  208. };
  209. var since = new DateTimeOffset(new DateTime(2016, 1, 1));
  210. var gists = await _gistsClient.GetAllPublic(since, options).ToList();
  211. Assert.Equal(4, gists.Count);
  212. }
  213. [IntegrationTest]
  214. public async Task ReturnsDistinctPublicGistsSinceBasedOnStartPage()
  215. {
  216. var startOptions = new ApiOptions
  217. {
  218. PageSize = 4,
  219. PageCount = 1
  220. };
  221. var since = new DateTimeOffset(new DateTime(2016, 1, 1));
  222. var firstPublicGistsPage = await _gistsClient.GetAllPublic(since, startOptions).ToList();
  223. var skipStartOptions = new ApiOptions
  224. {
  225. PageSize = 4,
  226. PageCount = 1,
  227. StartPage = 2
  228. };
  229. var secondPublicGistsPage = await _gistsClient.GetAllPublic(since, skipStartOptions).ToList();
  230. Assert.NotEqual(firstPublicGistsPage[0].Id, secondPublicGistsPage[0].Id);
  231. Assert.NotEqual(firstPublicGistsPage[1].Id, secondPublicGistsPage[1].Id);
  232. Assert.NotEqual(firstPublicGistsPage[2].Id, secondPublicGistsPage[2].Id);
  233. Assert.NotEqual(firstPublicGistsPage[3].Id, secondPublicGistsPage[3].Id);
  234. }
  235. }
  236. public class TheGetAllStarredMethod
  237. {
  238. readonly ObservableGistsClient _gistsClient;
  239. public TheGetAllStarredMethod()
  240. {
  241. var github = Helper.GetAuthenticatedClient();
  242. _gistsClient = new ObservableGistsClient(github);
  243. }
  244. [IntegrationTest]
  245. public async Task ReturnsStartedGists()
  246. {
  247. var gists = await _gistsClient.GetAllStarred().ToList();
  248. Assert.NotEmpty(gists);
  249. }
  250. [IntegrationTest]
  251. public async Task ReturnsCorrectCountOfStartedGistsWithoutStart()
  252. {
  253. var options = new ApiOptions
  254. {
  255. PageSize = 5,
  256. PageCount = 1
  257. };
  258. var gists = await _gistsClient.GetAllStarred(options).ToList();
  259. Assert.Equal(5, gists.Count);
  260. }
  261. [IntegrationTest]
  262. public async Task ReturnsCorrectCountOfStartedGistsWithStart()
  263. {
  264. var options = new ApiOptions
  265. {
  266. PageSize = 5,
  267. PageCount = 1,
  268. StartPage = 2
  269. };
  270. var gists = await _gistsClient.GetAllStarred(options).ToList();
  271. Assert.Equal(5, gists.Count);
  272. }
  273. [IntegrationTest]
  274. public async Task ReturnsDistinctResultsBasedOnStartPage()
  275. {
  276. var startOptions = new ApiOptions
  277. {
  278. PageSize = 5,
  279. PageCount = 1
  280. };
  281. var firstStartedGistsPage = await _gistsClient.GetAllStarred(startOptions).ToList();
  282. var skipStartOptions = new ApiOptions
  283. {
  284. PageSize = 5,
  285. PageCount = 1,
  286. StartPage = 2
  287. };
  288. var secondStartedGistsPage = await _gistsClient.GetAllStarred(skipStartOptions).ToList();
  289. Assert.NotEqual(firstStartedGistsPage[0].Id, secondStartedGistsPage[0].Id);
  290. Assert.NotEqual(firstStartedGistsPage[1].Id, secondStartedGistsPage[1].Id);
  291. Assert.NotEqual(firstStartedGistsPage[2].Id, secondStartedGistsPage[2].Id);
  292. Assert.NotEqual(firstStartedGistsPage[3].Id, secondStartedGistsPage[3].Id);
  293. Assert.NotEqual(firstStartedGistsPage[4].Id, secondStartedGistsPage[4].Id);
  294. }
  295. [IntegrationTest]
  296. public async Task ReturnsStartedGistsSince()
  297. {
  298. var since = new DateTimeOffset(new DateTime(2016, 1, 1));
  299. var gists = await _gistsClient.GetAllStarred(since).ToList();
  300. Assert.NotEmpty(gists);
  301. }
  302. [IntegrationTest]
  303. public async Task ReturnsCorrectCountOfStartedGistsSinceWithoutStart()
  304. {
  305. var options = new ApiOptions
  306. {
  307. PageSize = 5,
  308. PageCount = 1
  309. };
  310. var since = new DateTimeOffset(new DateTime(2016, 1, 1));
  311. var gists = await _gistsClient.GetAllStarred(since, options).ToList();
  312. Assert.Equal(5, gists.Count);
  313. }
  314. [IntegrationTest]
  315. public async Task ReturnsCorrectCountOfStartedGistsSinceWithStart()
  316. {
  317. var options = new ApiOptions
  318. {
  319. PageSize = 5,
  320. PageCount = 1,
  321. StartPage = 2
  322. };
  323. var since = new DateTimeOffset(new DateTime(2016, 1, 1));
  324. var gists = await _gistsClient.GetAllStarred(since, options).ToList();
  325. Assert.Equal(5, gists.Count);
  326. }
  327. [IntegrationTest]
  328. public async Task ReturnsDistinctStartedGistsSinceBasedOnStartPage()
  329. {
  330. var startOptions = new ApiOptions
  331. {
  332. PageSize = 5,
  333. PageCount = 1
  334. };
  335. var since = new DateTimeOffset(new DateTime(2016, 1, 1));
  336. var firstStartedGistsPage = await _gistsClient.GetAllStarred(since, startOptions).ToList();
  337. var skipStartOptions = new ApiOptions
  338. {
  339. PageSize = 5,
  340. PageCount = 1,
  341. StartPage = 2
  342. };
  343. var secondStartedGistsPage = await _gistsClient.GetAllStarred(since, skipStartOptions).ToList();
  344. Assert.NotEqual(firstStartedGistsPage[0].Id, secondStartedGistsPage[0].Id);
  345. Assert.NotEqual(firstStartedGistsPage[1].Id, secondStartedGistsPage[1].Id);
  346. Assert.NotEqual(firstStartedGistsPage[2].Id, secondStartedGistsPage[2].Id);
  347. Assert.NotEqual(firstStartedGistsPage[3].Id, secondStartedGistsPage[3].Id);
  348. Assert.NotEqual(firstStartedGistsPage[4].Id, secondStartedGistsPage[4].Id);
  349. }
  350. }
  351. public class TheGetAllForUserMethod
  352. {
  353. readonly ObservableGistsClient _gistsClient;
  354. const string user = "shiftkey";
  355. public TheGetAllForUserMethod()
  356. {
  357. var github = Helper.GetAuthenticatedClient();
  358. _gistsClient = new ObservableGistsClient(github);
  359. }
  360. [IntegrationTest]
  361. public async Task ReturnsUserGists()
  362. {
  363. var gists = await _gistsClient.GetAllForUser(user).ToList();
  364. Assert.NotEmpty(gists);
  365. }
  366. [IntegrationTest]
  367. public async Task ReturnsCorrectCountOfUserGistsWithoutStart()
  368. {
  369. var options = new ApiOptions
  370. {
  371. PageSize = 3,
  372. PageCount = 1
  373. };
  374. var gists = await _gistsClient.GetAllForUser(user, options).ToList();
  375. Assert.Equal(3, gists.Count);
  376. }
  377. [IntegrationTest]
  378. public async Task ReturnsCorrectCountOfUserGistsWithStart()
  379. {
  380. var options = new ApiOptions
  381. {
  382. PageSize = 3,
  383. PageCount = 1,
  384. StartPage = 2
  385. };
  386. var gists = await _gistsClient.GetAllForUser(user, options).ToList();
  387. Assert.Equal(3, gists.Count);
  388. }
  389. [IntegrationTest]
  390. public async Task ReturnsDistinctResultsBasedOnStartPage()
  391. {
  392. var startOptions = new ApiOptions
  393. {
  394. PageSize = 3,
  395. PageCount = 1
  396. };
  397. var firstUsersGistsPage = await _gistsClient.GetAllForUser(user, startOptions).ToList();
  398. var skipStartOptions = new ApiOptions
  399. {
  400. PageSize = 3,
  401. PageCount = 1,
  402. StartPage = 2
  403. };
  404. var secondUsersGistsPage = await _gistsClient.GetAllForUser(user, skipStartOptions).ToList();
  405. Assert.NotEqual(firstUsersGistsPage[0].Id, secondUsersGistsPage[0].Id);
  406. Assert.NotEqual(firstUsersGistsPage[1].Id, secondUsersGistsPage[1].Id);
  407. Assert.NotEqual(firstUsersGistsPage[2].Id, secondUsersGistsPage[2].Id);
  408. }
  409. [IntegrationTest]
  410. public async Task ReturnsUserGistsSince()
  411. {
  412. var since = new DateTimeOffset(new DateTime(2016, 1, 1));
  413. var gists = await _gistsClient.GetAllForUser(user, since).ToList();
  414. Assert.NotEmpty(gists);
  415. }
  416. [IntegrationTest]
  417. public async Task ReturnsCorrectCountOfUserGistsSinceWithoutStart()
  418. {
  419. var options = new ApiOptions
  420. {
  421. PageSize = 3,
  422. PageCount = 1
  423. };
  424. var since = new DateTimeOffset(new DateTime(2016, 1, 1));
  425. var gists = await _gistsClient.GetAllForUser(user, since, options).ToList();
  426. Assert.Equal(3, gists.Count);
  427. }
  428. [IntegrationTest]
  429. public async Task ReturnsCorrectCountOfUserGistsSinceWithStart()
  430. {
  431. var options = new ApiOptions
  432. {
  433. PageSize = 3,
  434. PageCount = 1,
  435. StartPage = 2
  436. };
  437. var since = new DateTimeOffset(new DateTime(2016, 1, 1));
  438. var gists = await _gistsClient.GetAllForUser(user, since, options).ToList();
  439. Assert.Equal(3, gists.Count);
  440. }
  441. [IntegrationTest]
  442. public async Task ReturnsDistinctUserGistsSinceBasedOnStartPage()
  443. {
  444. var startOptions = new ApiOptions
  445. {
  446. PageSize = 3,
  447. PageCount = 1
  448. };
  449. var since = new DateTimeOffset(new DateTime(2016, 1, 1));
  450. var firstUserGistsPage = await _gistsClient.GetAllForUser(user, since, startOptions).ToList();
  451. var skipStartOptions = new ApiOptions
  452. {
  453. PageSize = 3,
  454. PageCount = 1,
  455. StartPage = 2
  456. };
  457. var secondUserGistsPage = await _gistsClient.GetAllForUser(user, since, skipStartOptions).ToList();
  458. Assert.NotEqual(firstUserGistsPage[0].Id, secondUserGistsPage[0].Id);
  459. Assert.NotEqual(firstUserGistsPage[1].Id, secondUserGistsPage[1].Id);
  460. Assert.NotEqual(firstUserGistsPage[2].Id, secondUserGistsPage[2].Id);
  461. }
  462. }
  463. public class TheGetAllCommitsMethod
  464. {
  465. readonly ObservableGistsClient _gistsClient;
  466. const string gistId = "670c22f3966e662d2f83";
  467. public TheGetAllCommitsMethod()
  468. {
  469. var github = Helper.GetAuthenticatedClient();
  470. _gistsClient = new ObservableGistsClient(github);
  471. }
  472. [IntegrationTest]
  473. public async Task ReturnsGistCommits()
  474. {
  475. var gistCommits = await _gistsClient.GetAllCommits(gistId).ToList();
  476. Assert.NotEmpty(gistCommits);
  477. }
  478. [IntegrationTest]
  479. public async Task ReturnsCorrectCountOfGistCommisWithoutStart()
  480. {
  481. var options = new ApiOptions
  482. {
  483. PageSize = 3,
  484. PageCount = 1
  485. };
  486. var gistCommits = await _gistsClient.GetAllCommits(gistId, options).ToList();
  487. Assert.Equal(3, gistCommits.Count);
  488. }
  489. [IntegrationTest]
  490. public async Task ReturnsCorrectCountGistCommitsWithStart()
  491. {
  492. var options = new ApiOptions
  493. {
  494. PageSize = 3,
  495. PageCount = 1,
  496. StartPage = 2
  497. };
  498. var gistCommits = await _gistsClient.GetAllCommits(gistId, options).ToList();
  499. Assert.Equal(3, gistCommits.Count);
  500. }
  501. [IntegrationTest]
  502. public async Task ReturnsDistinctResultsBasedOnStartPage()
  503. {
  504. var startOptions = new ApiOptions
  505. {
  506. PageSize = 3,
  507. PageCount = 1
  508. };
  509. var firstGistCommitsPage = await _gistsClient.GetAllCommits(gistId, startOptions).ToList();
  510. var skipStartOptions = new ApiOptions
  511. {
  512. PageSize = 3,
  513. PageCount = 1,
  514. StartPage = 2
  515. };
  516. var secondGistCommitsPage = await _gistsClient.GetAllCommits(gistId, skipStartOptions).ToList();
  517. Assert.NotEqual(firstGistCommitsPage[0].Url, secondGistCommitsPage[0].Url);
  518. Assert.NotEqual(firstGistCommitsPage[1].Url, secondGistCommitsPage[1].Url);
  519. Assert.NotEqual(firstGistCommitsPage[2].Url, secondGistCommitsPage[2].Url);
  520. }
  521. }
  522. public class TheGetAllForksMethod
  523. {
  524. readonly ObservableGistsClient _gistsClient;
  525. const string gistId = "670c22f3966e662d2f83";
  526. public TheGetAllForksMethod()
  527. {
  528. var github = Helper.GetAuthenticatedClient();
  529. _gistsClient = new ObservableGistsClient(github);
  530. }
  531. [IntegrationTest]
  532. public async Task ReturnsGistCommits()
  533. {
  534. var gistForks = await _gistsClient.GetAllForks(gistId).ToList();
  535. Assert.NotEmpty(gistForks);
  536. }
  537. [IntegrationTest]
  538. public async Task ReturnsCorrectCountOfGistForksWithoutStart()
  539. {
  540. var options = new ApiOptions
  541. {
  542. PageSize = 5,
  543. PageCount = 1
  544. };
  545. var gistForks = await _gistsClient.GetAllForks(gistId, options).ToList();
  546. Assert.Equal(5, gistForks.Count);
  547. }
  548. [IntegrationTest]
  549. public async Task ReturnsCorrectCountGistForksWithStart()
  550. {
  551. var options = new ApiOptions
  552. {
  553. PageSize = 5,
  554. PageCount = 1,
  555. StartPage = 2
  556. };
  557. var gistForks = await _gistsClient.GetAllForks(gistId, options).ToList();
  558. Assert.Equal(5, gistForks.Count);
  559. }
  560. [IntegrationTest]
  561. public async Task ReturnsDistinctResultsBasedOnStartPage()
  562. {
  563. var startOptions = new ApiOptions
  564. {
  565. PageSize = 5,
  566. PageCount = 1
  567. };
  568. var firstGistForksPage = await _gistsClient.GetAllForks(gistId, startOptions).ToList();
  569. var skipStartOptions = new ApiOptions
  570. {
  571. PageSize = 5,
  572. PageCount = 1,
  573. StartPage = 2
  574. };
  575. var secondGistForksPage = await _gistsClient.GetAllForks(gistId, skipStartOptions).ToList();
  576. Assert.NotEqual(firstGistForksPage[0].Url, secondGistForksPage[0].Url);
  577. Assert.NotEqual(firstGistForksPage[1].Url, secondGistForksPage[1].Url);
  578. Assert.NotEqual(firstGistForksPage[2].Url, secondGistForksPage[2].Url);
  579. Assert.NotEqual(firstGistForksPage[3].Url, secondGistForksPage[3].Url);
  580. Assert.NotEqual(firstGistForksPage[4].Url, secondGistForksPage[4].Url);
  581. }
  582. }
  583. }