PageRenderTime 39ms CodeModel.GetById 12ms RepoModel.GetById 0ms app.codeStats 0ms

/Atlassian.Jira.Test/JqlExpressionVisitorTest.cs

https://bitbucket.org/miketrebilcock/atlassian.net-sdk
C# | 524 lines | 397 code | 127 blank | 0 comment | 42 complexity | 8df7131149173d12c603da13ee097a4d MD5 | raw file
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using Atlassian.Jira.Linq;
  6. using Atlassian.Jira.Remote;
  7. using Moq;
  8. using Xunit;
  9. namespace Atlassian.Jira.Test
  10. {
  11. public class JqlExpressionTranslatorTest
  12. {
  13. private JqlExpressionVisitor _translator;
  14. private Jira CreateJiraInstance()
  15. {
  16. _translator = new JqlExpressionVisitor();
  17. var soapClient = new Mock<IJiraRemoteService>();
  18. soapClient.Setup(r => r.GetIssuesFromJqlSearch(
  19. It.IsAny<string>(),
  20. It.IsAny<string>(),
  21. It.IsAny<int>())).Returns(new RemoteIssue[0]);
  22. return new Jira(_translator, soapClient.Object, null, "username", "password");
  23. }
  24. [Fact]
  25. public void EqualsOperatorForNonString()
  26. {
  27. var jira = CreateJiraInstance();
  28. var issues = (from i in jira.Issues
  29. where i.Votes == 5
  30. select i).ToArray();
  31. Assert.Equal("Votes = 5", _translator.Jql);
  32. }
  33. [Fact]
  34. public void EqualsOperatorForStringWithFuzzyEquality()
  35. {
  36. var jira = CreateJiraInstance();
  37. var issues = (from i in jira.Issues
  38. where i.Summary == "Foo"
  39. select i).ToArray();
  40. Assert.Equal("Summary ~ \"Foo\"", _translator.Jql);
  41. }
  42. [Fact]
  43. public void EqualsOperatorForString()
  44. {
  45. var jira = CreateJiraInstance();
  46. var issues = (from i in jira.Issues
  47. where i.Assignee == "Foo"
  48. select i).ToArray();
  49. Assert.Equal("Assignee = \"Foo\"", _translator.Jql);
  50. }
  51. [Fact]
  52. public void NotEqualsOperatorForNonString()
  53. {
  54. var jira = CreateJiraInstance();
  55. var issues = (from i in jira.Issues
  56. where i.Votes != 5
  57. select i).ToArray();
  58. Assert.Equal("Votes != 5", _translator.Jql);
  59. }
  60. [Fact]
  61. public void NotEqualsOperatorForStringWithFuzzyEquality()
  62. {
  63. var jira = CreateJiraInstance();
  64. var issues = (from i in jira.Issues
  65. where i.Summary != "Foo"
  66. select i).ToArray();
  67. Assert.Equal("Summary !~ \"Foo\"", _translator.Jql);
  68. }
  69. [Fact]
  70. public void NotEqualsOperatorForString()
  71. {
  72. var jira = CreateJiraInstance();
  73. var issues = (from i in jira.Issues
  74. where i.Assignee != "Foo"
  75. select i).ToArray();
  76. Assert.Equal("Assignee != \"Foo\"", _translator.Jql);
  77. }
  78. [Fact]
  79. public void GreaterThanOperator()
  80. {
  81. var jira = CreateJiraInstance();
  82. var issues = (from i in jira.Issues
  83. where i.Votes > 5
  84. select i).ToArray();
  85. Assert.Equal("Votes > 5", _translator.Jql);
  86. }
  87. [Fact]
  88. public void GreaterThanEqualsOperator()
  89. {
  90. var jira = CreateJiraInstance();
  91. var issues = (from i in jira.Issues
  92. where i.Votes >= 5
  93. select i).ToArray();
  94. Assert.Equal("Votes >= 5", _translator.Jql);
  95. }
  96. [Fact]
  97. public void LessThanOperator()
  98. {
  99. var jira = CreateJiraInstance();
  100. var issues = (from i in jira.Issues
  101. where i.Votes < 5
  102. select i).ToArray();
  103. Assert.Equal("Votes < 5", _translator.Jql);
  104. }
  105. [Fact]
  106. public void LessThanOrEqualsOperator()
  107. {
  108. var jira = CreateJiraInstance();
  109. var issues = (from i in jira.Issues
  110. where i.Votes <= 5
  111. select i).ToArray();
  112. Assert.Equal("Votes <= 5", _translator.Jql);
  113. }
  114. [Fact]
  115. public void AndKeyWord()
  116. {
  117. var jira = CreateJiraInstance();
  118. var issues = (from i in jira.Issues
  119. where i.Votes > 5 && i.Votes < 10
  120. select i).ToArray();
  121. Assert.Equal("(Votes > 5 and Votes < 10)", _translator.Jql);
  122. }
  123. [Fact]
  124. public void OrKeyWord()
  125. {
  126. var jira = CreateJiraInstance();
  127. var issues = (from i in jira.Issues
  128. where i.Votes > 5 || i.Votes < 10
  129. select i).ToArray();
  130. Assert.Equal("(Votes > 5 or Votes < 10)", _translator.Jql);
  131. }
  132. [Fact]
  133. public void AssociativeGrouping()
  134. {
  135. var jira = CreateJiraInstance();
  136. var issues = (from i in jira.Issues
  137. where i.Votes > 5 && (i.Votes < 10 || i.Votes == 20)
  138. select i).ToArray();
  139. Assert.Equal("(Votes > 5 and (Votes < 10 or Votes = 20))", _translator.Jql);
  140. }
  141. [Fact]
  142. public void IsOperatorForEmptyString()
  143. {
  144. var jira = CreateJiraInstance();
  145. var issues = (from i in jira.Issues
  146. where i.Summary == ""
  147. select i).ToArray();
  148. Assert.Equal("Summary is empty", _translator.Jql);
  149. }
  150. [Fact]
  151. public void IsNotOperatorForEmptyString()
  152. {
  153. var jira = CreateJiraInstance();
  154. var issues = (from i in jira.Issues
  155. where i.Summary != ""
  156. select i).ToArray();
  157. Assert.Equal("Summary is not empty", _translator.Jql);
  158. }
  159. [Fact]
  160. public void IsOperatorForNull()
  161. {
  162. var jira = CreateJiraInstance();
  163. var issues = (from i in jira.Issues
  164. where i.Summary == null
  165. select i).ToArray();
  166. Assert.Equal("Summary is null", _translator.Jql);
  167. }
  168. [Fact]
  169. public void GreaterThanOperatorWhenUsingComparableFieldWithString()
  170. {
  171. var jira = CreateJiraInstance();
  172. var issues = (from i in jira.Issues
  173. where i.Priority > "foo"
  174. select i).ToArray();
  175. Assert.Equal("Priority > \"foo\"", _translator.Jql);
  176. }
  177. [Fact]
  178. public void EqualsOperatorWhenUsingComparableFieldWithString()
  179. {
  180. var jira = CreateJiraInstance();
  181. var issues = (from i in jira.Issues
  182. where i.Priority == "foo"
  183. select i).ToArray();
  184. Assert.Equal("Priority = \"foo\"", _translator.Jql);
  185. }
  186. [Fact]
  187. public void OrderBy()
  188. {
  189. var jira = CreateJiraInstance();
  190. var issues = (from i in jira.Issues
  191. where i.Priority == "1"
  192. orderby i.Created
  193. select i).ToArray();
  194. Assert.Equal("Priority = \"1\" order by Created", _translator.Jql);
  195. }
  196. [Fact]
  197. public void OrderByDescending()
  198. {
  199. var jira = CreateJiraInstance();
  200. var issues = (from i in jira.Issues
  201. where i.Priority == "1"
  202. orderby i.Created descending
  203. select i).ToArray();
  204. Assert.Equal("Priority = \"1\" order by Created desc", _translator.Jql);
  205. }
  206. [Fact]
  207. public void MultipleOrderBys()
  208. {
  209. var jira = CreateJiraInstance();
  210. var issues = (from i in jira.Issues
  211. where i.Priority == "1"
  212. orderby i.Created, i.DueDate
  213. select i).ToArray();
  214. Assert.Equal("Priority = \"1\" order by Created, DueDate", _translator.Jql);
  215. }
  216. [Fact]
  217. public void MultipleOrderByDescending()
  218. {
  219. var jira = CreateJiraInstance();
  220. var issues = (from i in jira.Issues
  221. where i.Priority == "1"
  222. orderby i.Created, i.DueDate descending
  223. select i).ToArray();
  224. Assert.Equal("Priority = \"1\" order by Created, DueDate desc", _translator.Jql);
  225. }
  226. [Fact]
  227. public void NewDateTime()
  228. {
  229. var jira = CreateJiraInstance();
  230. var issues = (from i in jira.Issues
  231. where i.Created > new DateTime(2011,1,1)
  232. select i).ToArray();
  233. Assert.Equal("Created > \"2011/01/01\"", _translator.Jql);
  234. }
  235. [Fact]
  236. public void MultipleDateTimes()
  237. {
  238. var jira = CreateJiraInstance();
  239. var issues = (from i in jira.Issues
  240. where i.Created > new DateTime(2011, 1, 1) && i.Created < new DateTime(2012,1,1)
  241. select i).ToArray();
  242. Assert.Equal("(Created > \"2011/01/01\" and Created < \"2012/01/01\")", _translator.Jql);
  243. }
  244. [Fact]
  245. public void LocalStringVariables()
  246. {
  247. var jira = CreateJiraInstance();
  248. var user = "farmas";
  249. var issues = (from i in jira.Issues
  250. where i.Assignee == user
  251. select i).ToArray();
  252. Assert.Equal("Assignee = \"farmas\"", _translator.Jql);
  253. }
  254. [Fact]
  255. public void LocalDateVariables()
  256. {
  257. var jira = CreateJiraInstance();
  258. var date = new DateTime(2011, 1, 1);
  259. var issues = (from i in jira.Issues
  260. where i.Created > date
  261. select i).ToArray();
  262. Assert.Equal("Created > \"2011/01/01\"", _translator.Jql);
  263. }
  264. [Fact]
  265. public void DateTimeNow()
  266. {
  267. var jira = CreateJiraInstance();
  268. var date = new DateTime(2011, 1, 1);
  269. var issues = (from i in jira.Issues
  270. where i.Created > DateTime.Now
  271. select i).ToArray();
  272. Assert.Equal("Created > \"" + DateTime.Now.ToString("yyyy/MM/dd") + "\"", _translator.Jql);
  273. }
  274. [Fact]
  275. public void TakeWithConstant()
  276. {
  277. var jira = CreateJiraInstance();
  278. var issues = (from i in jira.Issues
  279. where i.Assignee == "foo"
  280. select i).Take(50).ToArray();
  281. Assert.Equal(50, _translator.MaxResults);
  282. }
  283. [Fact]
  284. public void TakeWithLocalVariable()
  285. {
  286. var jira = CreateJiraInstance();
  287. var take = 100;
  288. var issues = (from i in jira.Issues
  289. where i.Assignee == "foo"
  290. select i).Take(take).ToArray();
  291. Assert.Equal(100, _translator.MaxResults);
  292. }
  293. [Fact]
  294. public void SkipWithConstant()
  295. {
  296. var jira = CreateJiraInstance();
  297. var issues = (from i in jira.Issues
  298. where i.Assignee == "foo"
  299. select i).Skip(50).ToArray();
  300. Assert.Equal(50, _translator.StartAt);
  301. }
  302. [Fact]
  303. public void SkipWithLocalVariable()
  304. {
  305. var jira = CreateJiraInstance();
  306. var skip = 100;
  307. var issues = (from i in jira.Issues
  308. where i.Assignee == "foo"
  309. select i).Skip(skip).ToArray();
  310. Assert.Equal(100, _translator.StartAt);
  311. }
  312. [Fact]
  313. public void VersionsEqual()
  314. {
  315. var jira = CreateJiraInstance();
  316. var issues = (from i in jira.Issues
  317. where i.FixVersions == "1.0" && i.AffectsVersions == "2.0"
  318. select i).ToArray();
  319. Assert.Equal("(FixVersion = \"1.0\" and AffectedVersion = \"2.0\")", _translator.Jql);
  320. }
  321. [Fact]
  322. public void ComponentEqual()
  323. {
  324. var jira = CreateJiraInstance();
  325. var issues = (from i in jira.Issues
  326. where i.Components == "foo"
  327. select i).ToArray();
  328. Assert.Equal("component = \"foo\"", _translator.Jql);
  329. }
  330. [Fact]
  331. public void VersionsNotEqual()
  332. {
  333. var jira = CreateJiraInstance();
  334. var issues = (from i in jira.Issues
  335. where i.FixVersions != "1.0" && i.AffectsVersions != "2.0"
  336. select i).ToArray();
  337. Assert.Equal("(FixVersion != \"1.0\" and AffectedVersion != \"2.0\")", _translator.Jql);
  338. }
  339. [Fact]
  340. public void ComponentNotEqual()
  341. {
  342. var jira = CreateJiraInstance();
  343. var issues = (from i in jira.Issues
  344. where i.Components != "foo"
  345. select i).ToArray();
  346. Assert.Equal("component != \"foo\"", _translator.Jql);
  347. }
  348. [Fact]
  349. public void CustomFieldEqual()
  350. {
  351. var jira = CreateJiraInstance();
  352. var issues = (from i in jira.Issues
  353. where i["Foo"] == "foo" && i["Bar"] == new DateTime(2012,1,1)
  354. select i).ToArray();
  355. Assert.Equal("(\"Foo\" ~ \"foo\" and \"Bar\" = \"2012/01/01\")", _translator.Jql);
  356. }
  357. [Fact]
  358. public void CustomFieldNotEqual()
  359. {
  360. var jira = CreateJiraInstance();
  361. var issues = (from i in jira.Issues
  362. where i["Foo"] != "foo" && i["Bar"] != new DateTime(2012,1,1)
  363. select i).ToArray();
  364. Assert.Equal("(\"Foo\" !~ \"foo\" and \"Bar\" != \"2012/01/01\")", _translator.Jql);
  365. }
  366. [Fact]
  367. public void CustomFieldGreaterThan()
  368. {
  369. var jira = CreateJiraInstance();
  370. var issues = (from i in jira.Issues
  371. where i["Foo"] > "foo" && i["Bar"] > new DateTime(2012, 1, 1)
  372. select i).ToArray();
  373. Assert.Equal("(\"Foo\" > \"foo\" and \"Bar\" > \"2012/01/01\")", _translator.Jql);
  374. }
  375. [Fact]
  376. public void Count()
  377. {
  378. var jira = CreateJiraInstance();
  379. var issues = from i in jira.Issues
  380. where i.Summary == "foo"
  381. select i;
  382. issues.Count();
  383. Assert.True(_translator.ProcessCount);
  384. }
  385. [Fact]
  386. public void VisitorShouldResetAllPropertiesBetweenCalls()
  387. {
  388. var jira = CreateJiraInstance();
  389. var issues = from i in jira.Issues
  390. where i.Summary == "foo"
  391. select i;
  392. issues.Count();
  393. issues.Skip(1).FirstOrDefault();
  394. Assert.False(_translator.ProcessCount);
  395. }
  396. }
  397. }