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

/GitLab.NET.Tests/Repositories/CommitRepositoryTests.cs

https://gitlab.com/jmiguelcouto/GitLab.NET
C# | 657 lines | 483 code | 174 blank | 0 comment | 0 complexity | f32d0e2b769e1a1441e2f50c9b3e15e2 MD5 | raw file
  1. using System;
  2. using System.Threading.Tasks;
  3. using GitLab.NET.Abstractions;
  4. using GitLab.NET.Repositories;
  5. using NSubstitute;
  6. using Xunit;
  7. namespace GitLab.NET.Tests.Repositories
  8. {
  9. public class CommitRepositoryTests
  10. {
  11. public CommitRepositoryTests()
  12. {
  13. _request = Substitute.For<IRequest>();
  14. _requestFactory = Substitute.For<IRequestFactory>();
  15. _requestFactory.Create(Arg.Any<string>(), Arg.Any<Method>(), Arg.Any<bool>()).Returns(_request);
  16. }
  17. private readonly IRequest _request;
  18. private readonly IRequestFactory _requestFactory;
  19. [Fact]
  20. public async Task CreateComment_CommitShaIsNull_ThrowsArgumentNullException()
  21. {
  22. var sut = new CommitRepository(_requestFactory);
  23. await Assert.ThrowsAsync<ArgumentNullException>(() => sut.CreateComment(0, null, "note"));
  24. }
  25. [Fact]
  26. public async Task CreateComment_LineIsSet_AddsLineParameter()
  27. {
  28. const uint expected = 0;
  29. var sut = new CommitRepository(_requestFactory);
  30. await sut.CreateComment(0, "commitSha", "note", line: expected);
  31. _request.Received().AddParameterIfNotNull("line", expected);
  32. }
  33. [Fact]
  34. public async Task CreateComment_LineTypeIsSet_AddsLineTypeParameter()
  35. {
  36. const string expected = "new";
  37. const LineType lineType = LineType.New;
  38. var sut = new CommitRepository(_requestFactory);
  39. await sut.CreateComment(0, "commitSha", "note", lineType: lineType);
  40. _request.Received().AddParameterIfNotNull("line_type", expected);
  41. }
  42. [Fact]
  43. public async Task CreateComment_NoteIsNull_ThrowsArgumentNullException()
  44. {
  45. var sut = new CommitRepository(_requestFactory);
  46. await Assert.ThrowsAsync<ArgumentNullException>(() => sut.CreateComment(0, "commitSha", null));
  47. }
  48. [Fact]
  49. public async Task CreateComment_PathIsSet_AddsPathParameter()
  50. {
  51. const string expected = "path";
  52. var sut = new CommitRepository(_requestFactory);
  53. await sut.CreateComment(0, "commitSha", "note", expected);
  54. _request.Received().AddParameterIfNotNull("path", expected);
  55. }
  56. [Fact]
  57. public async Task CreateComment_ValidParameters_AddsCommitShaUrlSegment()
  58. {
  59. const string expected = "commitSha";
  60. var sut = new CommitRepository(_requestFactory);
  61. await sut.CreateComment(0, expected, "note");
  62. _request.Received().AddUrlSegment("commitSha", expected);
  63. }
  64. [Fact]
  65. public async Task CreateComment_ValidParameters_AddsProjectIdUrlSegment()
  66. {
  67. const uint expected = 0;
  68. var sut = new CommitRepository(_requestFactory);
  69. await sut.CreateComment(expected, "commitSha", "note");
  70. _request.Received().AddUrlSegment("projectId", expected);
  71. }
  72. [Fact]
  73. public async Task CreateComment_ValidParameters_SetsCorrectResourceAndMethod()
  74. {
  75. var sut = new CommitRepository(_requestFactory);
  76. await sut.CreateComment(0, "commitSha", "note");
  77. _requestFactory.Received().Create("projects/{projectId}/repository/commits/{commitSha}/comments", Method.Post);
  78. }
  79. [Fact]
  80. public async Task CreateCommit_ValidParameters_AddsNoteParameter()
  81. {
  82. const string expected = "note";
  83. var sut = new CommitRepository(_requestFactory);
  84. await sut.CreateComment(0, "commitSha", expected);
  85. _request.Received().AddParameter("note", expected);
  86. }
  87. [Fact]
  88. public async Task CreateStatus_CommitShaIsNull_ThrowsArgumentNullException()
  89. {
  90. var sut = new CommitRepository(_requestFactory);
  91. await Assert.ThrowsAsync<ArgumentNullException>(() => sut.CreateStatus(0, null, BuildStatus.Pending));
  92. }
  93. [Fact]
  94. public async Task CreateStatus_DescriptionIsSet_AddsDescriptionParameter()
  95. {
  96. const string expected = "description";
  97. var sut = new CommitRepository(_requestFactory);
  98. await sut.CreateStatus(0, "commitSha", BuildStatus.Pending, description: expected);
  99. _request.Received().AddParameterIfNotNull("description", expected);
  100. }
  101. [Fact]
  102. public async Task CreateStatus_NameIsSet_AddsNameParameter()
  103. {
  104. const string expected = "name";
  105. var sut = new CommitRepository(_requestFactory);
  106. await sut.CreateStatus(0, "commitSha", BuildStatus.Pending, name: expected);
  107. _request.Received().AddParameterIfNotNull("name", expected);
  108. }
  109. [Fact]
  110. public async Task CreateStatus_RefNameIsSet_AddsRefNameParameter()
  111. {
  112. const string expected = "refName";
  113. var sut = new CommitRepository(_requestFactory);
  114. await sut.CreateStatus(0, "commitSha", BuildStatus.Pending, expected);
  115. _request.Received().AddParameterIfNotNull("ref", expected);
  116. }
  117. [Fact]
  118. public async Task CreateStatus_TargetUrlIsSet_AddsTargetUrlParameter()
  119. {
  120. const string expected = "targetUrl";
  121. var sut = new CommitRepository(_requestFactory);
  122. await sut.CreateStatus(0, "commitSha", BuildStatus.Pending, targetUrl: expected);
  123. _request.Received().AddParameterIfNotNull("target_url", expected);
  124. }
  125. [Fact]
  126. public async Task CreateStatus_ValidParameters_AddsCommitShaUrlSegment()
  127. {
  128. const string expected = "commitSha";
  129. var sut = new CommitRepository(_requestFactory);
  130. await sut.CreateStatus(0, expected, BuildStatus.Pending);
  131. _request.Received().AddUrlSegment("commitSha", expected);
  132. }
  133. [Fact]
  134. public async Task CreateStatus_ValidParameters_AddsProjectIdUrlSegment()
  135. {
  136. const uint expected = 0;
  137. var sut = new CommitRepository(_requestFactory);
  138. await sut.CreateStatus(expected, "commitSha", BuildStatus.Pending);
  139. _request.Received().AddUrlSegment("projectId", expected);
  140. }
  141. [Fact]
  142. public async Task CreateStatus_ValidParameters_AddsStateParameter()
  143. {
  144. const string expected = "pending";
  145. const BuildStatus state = BuildStatus.Pending;
  146. var sut = new CommitRepository(_requestFactory);
  147. await sut.CreateStatus(0, "commitSha", state);
  148. _request.Received().AddParameter("state", expected);
  149. }
  150. [Fact]
  151. public async Task CreateStatus_ValidParameters_SetsCorrectResourceAndMethod()
  152. {
  153. var sut = new CommitRepository(_requestFactory);
  154. await sut.CreateStatus(0, "commitSha", BuildStatus.Pending);
  155. _requestFactory.Received().Create("projects/{projectId}/statuses/{commitSha}", Method.Post);
  156. }
  157. [Fact]
  158. public async Task Find_CommitShaIsNull_ThrowsArgumentNullException()
  159. {
  160. var sut = new CommitRepository(_requestFactory);
  161. await Assert.ThrowsAsync<ArgumentNullException>(() => sut.Find(0, null));
  162. }
  163. [Fact]
  164. public async Task Find_ValidParameters_AddsCommitShaUrlSegment()
  165. {
  166. const string expected = "commitSha";
  167. var sut = new CommitRepository(_requestFactory);
  168. await sut.Find(0, expected);
  169. _request.Received().AddUrlSegment("commitSha", expected);
  170. }
  171. [Fact]
  172. public async Task Find_ValidParameters_AddsProjectIdUrlSegment()
  173. {
  174. const uint expected = 0;
  175. var sut = new CommitRepository(_requestFactory);
  176. await sut.Find(expected, "commitSha");
  177. _request.Received().AddUrlSegment("projectId", expected);
  178. }
  179. [Fact]
  180. public async Task Find_ValidParameters_SetsCorrectResourceAndMethod()
  181. {
  182. var sut = new CommitRepository(_requestFactory);
  183. await sut.Find(0, "commitSha");
  184. _requestFactory.Received().Create("projects/{projectId}/repository/commits/{commitSha}", Method.Get);
  185. }
  186. [Fact]
  187. public async Task GetAll_RefNameIsSet_AddsRefNameParameter()
  188. {
  189. const string expected = "refName";
  190. var sut = new CommitRepository(_requestFactory);
  191. await sut.GetAll(0, expected);
  192. _request.Received().AddParameterIfNotNull("ref_name", expected);
  193. }
  194. [Fact]
  195. public async Task GetAll_SinceIsSet_AddsSinceParameter()
  196. {
  197. var expected = DateTime.MinValue;
  198. var sut = new CommitRepository(_requestFactory);
  199. await sut.GetAll(0, since: expected);
  200. _request.Received().AddParameterIfNotNull("since", expected);
  201. }
  202. [Fact]
  203. public async Task GetAll_UntilIsSet_AddsUntilParameter()
  204. {
  205. var expected = DateTime.MaxValue;
  206. var sut = new CommitRepository(_requestFactory);
  207. await sut.GetAll(0, until: expected);
  208. _request.Received().AddParameterIfNotNull("until", expected);
  209. }
  210. [Fact]
  211. public async Task GetAll_ValidParameters_AddsProjectIdUrlSegment()
  212. {
  213. const uint expected = 0;
  214. var sut = new CommitRepository(_requestFactory);
  215. await sut.GetAll(expected);
  216. _request.Received().AddUrlSegment("projectId", expected);
  217. }
  218. [Fact]
  219. public async Task GetAll_ValidParameters_SetsCorrectResourceAndMethod()
  220. {
  221. var sut = new CommitRepository(_requestFactory);
  222. await sut.GetAll(0);
  223. _requestFactory.Received().Create("projects/{projectId}/repository/commits", Method.Get);
  224. }
  225. [Fact]
  226. public async Task GetComments_CommitShaIsNull_ThrowsArgumentNullException()
  227. {
  228. var sut = new CommitRepository(_requestFactory);
  229. await Assert.ThrowsAsync<ArgumentNullException>(() => sut.GetComments(0, null));
  230. }
  231. [Fact]
  232. public async Task GetComments_PageIsLessThanMinimum_ThrowsArgumentOutOfRangeException()
  233. {
  234. var sut = new CommitRepository(_requestFactory);
  235. await Assert.ThrowsAsync<ArgumentOutOfRangeException>(() => sut.GetComments(0, "commitSha", uint.MinValue));
  236. }
  237. [Fact]
  238. public async Task GetComments_PageIsSet_AddsPageParameter()
  239. {
  240. const uint expected = 5;
  241. var sut = new CommitRepository(_requestFactory);
  242. await sut.GetComments(0, "commitSha", expected);
  243. _request.Received().AddParameter("page", expected);
  244. }
  245. [Fact]
  246. public async Task GetComments_ResultsPerPageIsGreaterThanMaximum_ThrowsArgumentOutOfRangeException()
  247. {
  248. var sut = new CommitRepository(_requestFactory);
  249. await Assert.ThrowsAsync<ArgumentOutOfRangeException>(() => sut.GetComments(0, "commitSha", resultsPerPage: uint.MaxValue));
  250. }
  251. [Fact]
  252. public async Task GetComments_ResultsPerPageIsLessThanMinimum_ThrowsArgumentOutOfRangeException()
  253. {
  254. var sut = new CommitRepository(_requestFactory);
  255. await Assert.ThrowsAsync<ArgumentOutOfRangeException>(() => sut.GetComments(0, "commitSha", resultsPerPage: uint.MinValue));
  256. }
  257. [Fact]
  258. public async Task GetComments_ResultsPerPageIsSet_AddsPerPageParameter()
  259. {
  260. const uint expected = 5;
  261. var sut = new CommitRepository(_requestFactory);
  262. await sut.GetComments(0, "commitSha", resultsPerPage: expected);
  263. _request.Received().AddParameter("per_page", expected);
  264. }
  265. [Fact]
  266. public async Task GetComments_ValidParameters_AddsCommitShaUrlSegment()
  267. {
  268. const string expected = "commitSha";
  269. var sut = new CommitRepository(_requestFactory);
  270. await sut.GetComments(0, expected);
  271. _request.Received().AddUrlSegment("commitSha", expected);
  272. }
  273. [Fact]
  274. public async Task GetComments_ValidParameters_AddsProjectIdUrlSegment()
  275. {
  276. const uint expected = 0;
  277. var sut = new CommitRepository(_requestFactory);
  278. await sut.GetComments(expected, "commitSha");
  279. _request.Received().AddUrlSegment("projectId", expected);
  280. }
  281. [Fact]
  282. public async Task GetComments_ValidParameters_SetsCorrectResourceAndMethod()
  283. {
  284. var sut = new CommitRepository(_requestFactory);
  285. await sut.GetComments(0, "commitSha");
  286. _requestFactory.Received().Create("projects/{projectId}/repository/commits/{commitSha}/comments", Method.Get);
  287. }
  288. [Fact]
  289. public async Task GetDiff_CommitShaIsNull_ThrowsArgumentNullException()
  290. {
  291. var sut = new CommitRepository(_requestFactory);
  292. await Assert.ThrowsAsync<ArgumentNullException>(() => sut.GetDiff(0, null));
  293. }
  294. [Fact]
  295. public async Task GetDiff_ValidParameters_AddsCommitShaUrlSegment()
  296. {
  297. const string expected = "commitSha";
  298. var sut = new CommitRepository(_requestFactory);
  299. await sut.GetDiff(0, expected);
  300. _request.Received().AddUrlSegment("commitSha", expected);
  301. }
  302. [Fact]
  303. public async Task GetDiff_ValidParameters_AddsProjectIdUrlSegment()
  304. {
  305. const uint expected = 0;
  306. var sut = new CommitRepository(_requestFactory);
  307. await sut.GetDiff(expected, "commitSha");
  308. _request.Received().AddUrlSegment("projectId", expected);
  309. }
  310. [Fact]
  311. public async Task GetDiff_ValidParameters_SetsCorrectResourceAndMethod()
  312. {
  313. var sut = new CommitRepository(_requestFactory);
  314. await sut.GetDiff(0, "commitSha");
  315. _requestFactory.Received().Create("projects/{projectId}/repository/commits/{commitSha}/diff", Method.Get);
  316. }
  317. [Fact]
  318. public async Task GetStatus_AllIsSet_AddsAllParameter()
  319. {
  320. const bool expected = true;
  321. var sut = new CommitRepository(_requestFactory);
  322. await sut.GetStatus(0, "commitSha", all: expected);
  323. _request.Received().AddParameterIfNotNull("all", expected);
  324. }
  325. [Fact]
  326. public async Task GetStatus_CommitShaIsNull_ThrowsArgumentNullException()
  327. {
  328. var sut = new CommitRepository(_requestFactory);
  329. await Assert.ThrowsAsync<ArgumentNullException>(() => sut.GetStatus(0, null));
  330. }
  331. [Fact]
  332. public async Task GetStatus_NameIsSet_AddsNameParameter()
  333. {
  334. const string expected = "name";
  335. var sut = new CommitRepository(_requestFactory);
  336. await sut.GetStatus(0, "commitSha", name: expected);
  337. _request.Received().AddParameterIfNotNull("name", expected);
  338. }
  339. [Fact]
  340. public async Task GetStatus_PageIsLessThanMinimum_ThrowsArgumentOutOfRangeException()
  341. {
  342. var sut = new CommitRepository(_requestFactory);
  343. await Assert.ThrowsAsync<ArgumentOutOfRangeException>(() => sut.GetStatus(0, "commitSha", page: uint.MinValue));
  344. }
  345. [Fact]
  346. public async Task GetStatus_PageIsSet_AddsPageParameter()
  347. {
  348. const uint expected = 5;
  349. var sut = new CommitRepository(_requestFactory);
  350. await sut.GetStatus(0, "commitSha", page: expected);
  351. _request.Received().AddParameter("page", expected);
  352. }
  353. [Fact]
  354. public async Task GetStatus_RefNameIsSet_AddsRefNameParameter()
  355. {
  356. const string expected = "refName";
  357. var sut = new CommitRepository(_requestFactory);
  358. await sut.GetStatus(0, "commitSha", expected);
  359. _request.Received().AddParameterIfNotNull("ref_name", expected);
  360. }
  361. [Fact]
  362. public async Task GetStatus_ResultsPerPageIsGreaterThanMaximum_ThrowsArgumentOutOfRangeException()
  363. {
  364. var sut = new CommitRepository(_requestFactory);
  365. await Assert.ThrowsAsync<ArgumentOutOfRangeException>(() => sut.GetStatus(0, "commitSha", resultsPerPage: uint.MaxValue));
  366. }
  367. [Fact]
  368. public async Task GetStatus_ResultsPerPageIsLessThanMinimum_ThrowsArgumentOutOfRangeException()
  369. {
  370. var sut = new CommitRepository(_requestFactory);
  371. await Assert.ThrowsAsync<ArgumentOutOfRangeException>(() => sut.GetStatus(0, "commitSha", resultsPerPage: uint.MinValue));
  372. }
  373. [Fact]
  374. public async Task GetStatus_ResultsPerPageIsSet_AddsPerPageParameter()
  375. {
  376. const uint expected = 5;
  377. var sut = new CommitRepository(_requestFactory);
  378. await sut.GetStatus(0, "commitSha", resultsPerPage: expected);
  379. _request.Received().AddParameter("per_page", expected);
  380. }
  381. [Fact]
  382. public async Task GetStatus_StageIsSet_AddsStageParameter()
  383. {
  384. const string expected = "stage";
  385. var sut = new CommitRepository(_requestFactory);
  386. await sut.GetStatus(0, "commitSha", stage: expected);
  387. _request.Received().AddParameterIfNotNull("stage", expected);
  388. }
  389. [Fact]
  390. public async Task GetStatus_ValidParameters_AddsCommitShaUrlSegment()
  391. {
  392. const string expected = "commitSha";
  393. var sut = new CommitRepository(_requestFactory);
  394. await sut.GetStatus(0, expected);
  395. _request.Received().AddUrlSegment("commitSha", expected);
  396. }
  397. [Fact]
  398. public async Task GetStatus_ValidParameters_AddsProjectIdUrlSegment()
  399. {
  400. const uint expected = 0;
  401. var sut = new CommitRepository(_requestFactory);
  402. await sut.GetStatus(expected, "commitSha");
  403. _request.Received().AddUrlSegment("projectId", expected);
  404. }
  405. [Fact]
  406. public async Task GetStatus_ValidParameters_SetsCorrectResourceAndMethod()
  407. {
  408. var sut = new CommitRepository(_requestFactory);
  409. await sut.GetStatus(0, "commitSha");
  410. _requestFactory.Received().Create("projects/{projectId}/repository/commits/{commitSha}/statuses", Method.Get);
  411. }
  412. [Fact]
  413. public async Task UpdateStatus_CommitShaIsNull_ThrowsArgumentNullException()
  414. {
  415. var sut = new CommitRepository(_requestFactory);
  416. await Assert.ThrowsAsync<ArgumentNullException>(() => sut.UpdateStatus(0, null, BuildStatus.Pending));
  417. }
  418. [Fact]
  419. public async Task UpdateStatus_DescriptionIsSet_AddsDescriptionParameter()
  420. {
  421. const string expected = "description";
  422. var sut = new CommitRepository(_requestFactory);
  423. await sut.UpdateStatus(0, "commitSha", BuildStatus.Pending, description: expected);
  424. _request.Received().AddParameterIfNotNull("description", expected);
  425. }
  426. [Fact]
  427. public async Task UpdateStatus_NameIsSet_AddsNameParameter()
  428. {
  429. const string expected = "name";
  430. var sut = new CommitRepository(_requestFactory);
  431. await sut.UpdateStatus(0, "commitSha", BuildStatus.Pending, name: expected);
  432. _request.Received().AddParameterIfNotNull("name", expected);
  433. }
  434. [Fact]
  435. public async Task UpdateStatus_RefNameIsSet_AddsRefNameParameter()
  436. {
  437. const string expected = "refName";
  438. var sut = new CommitRepository(_requestFactory);
  439. await sut.UpdateStatus(0, "commitSha", BuildStatus.Pending, expected);
  440. _request.Received().AddParameterIfNotNull("ref", expected);
  441. }
  442. [Fact]
  443. public async Task UpdateStatus_TargetUrlIsSet_AddsTargetUrlParameter()
  444. {
  445. const string expected = "targetUrl";
  446. var sut = new CommitRepository(_requestFactory);
  447. await sut.UpdateStatus(0, "commitSha", BuildStatus.Pending, targetUrl: expected);
  448. _request.Received().AddParameterIfNotNull("target_url", expected);
  449. }
  450. [Fact]
  451. public async Task UpdateStatus_ValidParameters_AddsCommitShaUrlSegment()
  452. {
  453. const string expected = "commitSha";
  454. var sut = new CommitRepository(_requestFactory);
  455. await sut.UpdateStatus(0, expected, BuildStatus.Pending);
  456. _request.Received().AddUrlSegment("commitSha", expected);
  457. }
  458. [Fact]
  459. public async Task UpdateStatus_ValidParameters_AddsProjectIdUrlSegment()
  460. {
  461. const uint expected = 0;
  462. var sut = new CommitRepository(_requestFactory);
  463. await sut.UpdateStatus(expected, "commitSha", BuildStatus.Pending);
  464. _request.Received().AddUrlSegment("projectId", expected);
  465. }
  466. [Fact]
  467. public async Task UpdateStatus_ValidParameters_AddsStateParameter()
  468. {
  469. const string expected = "pending";
  470. const BuildStatus state = BuildStatus.Pending;
  471. var sut = new CommitRepository(_requestFactory);
  472. await sut.UpdateStatus(0, "commitSha", state);
  473. _request.Received().AddParameter("state", expected);
  474. }
  475. [Fact]
  476. public async Task UpdateStatus_ValidParameters_SetsCorrectResourceAndMethod()
  477. {
  478. var sut = new CommitRepository(_requestFactory);
  479. await sut.UpdateStatus(0, "commitSha", BuildStatus.Pending);
  480. _requestFactory.Received().Create("projects/{projectId}/statuses/{commitSha}", Method.Post);
  481. }
  482. }
  483. }