1
2
3
4
5 package org.itracker.model.util;
6
7 import org.itracker.AbstractDependencyInjectionTest;
8 import org.itracker.model.*;
9 import org.itracker.model.CustomField.Type;
10 import org.junit.Test;
11
12 import java.text.SimpleDateFormat;
13 import java.util.*;
14
15 import static org.itracker.Assert.*;
16
17
18
19
20
21
22 public class IssueUtilitiesIT extends AbstractDependencyInjectionTest {
23
24 @Test
25 public void testGetFieldType() {
26 assertEquals(IssueUtilities.FIELD_TYPE_SINGLE,
27 IssueUtilities.getFieldType(IssueUtilities.FIELD_ID));
28 assertEquals(IssueUtilities.FIELD_TYPE_SINGLE,
29 IssueUtilities.getFieldType(IssueUtilities.FIELD_DESCRIPTION));
30 assertEquals(IssueUtilities.FIELD_TYPE_MAP,
31 IssueUtilities.getFieldType(1));
32
33 }
34
35 @Test
36 public void testGetFieldName() {
37 assertEquals("id",
38 IssueUtilities.getFieldName(IssueUtilities.FIELD_ID));
39 assertEquals("description",
40 IssueUtilities.getFieldName(IssueUtilities.FIELD_DESCRIPTION));
41 assertEquals("status",
42 IssueUtilities.getFieldName(IssueUtilities.FIELD_STATUS));
43 assertEquals("resolution",
44 IssueUtilities.getFieldName(IssueUtilities.FIELD_RESOLUTION));
45 assertEquals("severity",
46 IssueUtilities.getFieldName(IssueUtilities.FIELD_SEVERITY));
47 assertEquals("creatorId",
48 IssueUtilities.getFieldName(IssueUtilities.FIELD_CREATOR));
49 assertEquals("createdate",
50 IssueUtilities.getFieldName(IssueUtilities.FIELD_CREATEDATE));
51 assertEquals("ownerId",
52 IssueUtilities.getFieldName(IssueUtilities.FIELD_OWNER));
53 assertEquals("lastmodified",
54 IssueUtilities.getFieldName(IssueUtilities.FIELD_LASTMODIFIED));
55 assertEquals("projectId",
56 IssueUtilities.getFieldName(IssueUtilities.FIELD_PROJECT));
57 assertEquals("targetVersion",
58 IssueUtilities.getFieldName(IssueUtilities.FIELD_TARGET_VERSION));
59 assertEquals("components",
60 IssueUtilities.getFieldName(IssueUtilities.FIELD_COMPONENTS));
61 assertEquals("versions",
62 IssueUtilities.getFieldName(IssueUtilities.FIELD_VERSIONS));
63 assertEquals("attachmentDescription",
64 IssueUtilities.getFieldName(IssueUtilities.FIELD_ATTACHMENTDESCRIPTION));
65 assertEquals("attachment",
66 IssueUtilities.getFieldName(IssueUtilities.FIELD_ATTACHMENTFILENAME));
67 assertEquals("history",
68 IssueUtilities.getFieldName(IssueUtilities.FIELD_HISTORY));
69 assertEquals("",
70 IssueUtilities.getFieldName(null));
71 assertEquals("",
72 IssueUtilities.getFieldName(-999));
73 assertEquals("customFields",
74 IssueUtilities.getFieldName(999));
75 }
76
77 @Test
78 public void testGetFieldNameByLocale() {
79 final List<CustomField> customFields = new Vector<>();
80 final CustomField customField1 = new CustomField();
81 customField1.setFieldType(Type.STRING);
82 customField1.setId(1);
83 customFields.add(customField1);
84 assertEquals("test-field_custom",
85 IssueUtilities.getFieldName(1, customFields, new Locale("test")));
86 }
87
88 @Test
89 public void testGetStandardFieldKey() {
90 assertEquals("itracker.web.attr.id",
91 IssueUtilities.getStandardFieldKey(IssueUtilities.FIELD_ID));
92 assertEquals("itracker.web.attr.description",
93 IssueUtilities.getStandardFieldKey(IssueUtilities.FIELD_DESCRIPTION));
94 assertEquals("itracker.web.attr.status",
95 IssueUtilities.getStandardFieldKey(IssueUtilities.FIELD_STATUS));
96 assertEquals("itracker.web.attr.resolution",
97 IssueUtilities.getStandardFieldKey(IssueUtilities.FIELD_RESOLUTION));
98 assertEquals("itracker.web.attr.severity",
99 IssueUtilities.getStandardFieldKey(IssueUtilities.FIELD_SEVERITY));
100 assertEquals("itracker.web.attr.creator",
101 IssueUtilities.getStandardFieldKey(IssueUtilities.FIELD_CREATOR));
102 assertEquals("itracker.web.attr.createdate",
103 IssueUtilities.getStandardFieldKey(IssueUtilities.FIELD_CREATEDATE));
104 assertEquals("itracker.web.attr.owner",
105 IssueUtilities.getStandardFieldKey(IssueUtilities.FIELD_OWNER));
106 assertEquals("itracker.web.attr.lastmodified",
107 IssueUtilities.getStandardFieldKey(IssueUtilities.FIELD_LASTMODIFIED));
108 assertEquals("itracker.web.attr.project",
109 IssueUtilities.getStandardFieldKey(IssueUtilities.FIELD_PROJECT));
110 assertEquals("itracker.web.attr.target",
111 IssueUtilities.getStandardFieldKey(IssueUtilities.FIELD_TARGET_VERSION));
112 assertEquals("itracker.web.attr.components",
113 IssueUtilities.getStandardFieldKey(IssueUtilities.FIELD_COMPONENTS));
114 assertEquals("itracker.web.attr.versions",
115 IssueUtilities.getStandardFieldKey(IssueUtilities.FIELD_VERSIONS));
116 assertEquals("itracker.web.attr.attachmentdescription",
117 IssueUtilities.getStandardFieldKey(IssueUtilities.FIELD_ATTACHMENTDESCRIPTION));
118 assertEquals("itracker.web.attr.attachmentfilename",
119 IssueUtilities.getStandardFieldKey(IssueUtilities.FIELD_ATTACHMENTFILENAME));
120 assertEquals("itracker.web.attr.detaileddescription",
121 IssueUtilities.getStandardFieldKey(IssueUtilities.FIELD_HISTORY));
122 assertEquals("itracker.web.generic.unknown",
123 IssueUtilities.getStandardFieldKey(-999));
124 assertEquals("itracker.web.generic.unknown",
125 IssueUtilities.getStandardFieldKey(999));
126 }
127
128 public void doTestGetStandardFields(final Locale locale,
129 final NameValuePair[] expected) {
130 final NameValuePair[] actual = IssueUtilities.getStandardFields(locale);
131 for (final NameValuePair nvpExpected : expected) {
132 boolean found = false;
133 for (final NameValuePair nvpActual : actual) {
134 found = nvpExpected.getName().equals(nvpActual.getName())
135 && nvpExpected.getValue().equals(nvpActual.getValue());
136 if (found) break;
137 }
138 assertTrue("IssueUtilities.getStandardFields(" + locale + ").contains(" +
139 "new NameValuePair(" + nvpExpected.getName() + "," +
140 nvpExpected.getValue() + "))",
141 found);
142 }
143 assertEquals("IssueUtilities.getStandardFields(" + locale + ").length",
144 expected.length, actual.length);
145 }
146
147 @Test
148 public void testGetStandardFields() {
149 final NameValuePair[] expected = new NameValuePair[]{
150 new NameValuePair("test-field_id",
151 Integer.toString(IssueUtilities.FIELD_ID)),
152 new NameValuePair("test-field_description",
153 Integer.toString(IssueUtilities.FIELD_DESCRIPTION)),
154 new NameValuePair("test-field_status",
155 Integer.toString(IssueUtilities.FIELD_STATUS)),
156 new NameValuePair("test-field_resolution",
157 Integer.toString(IssueUtilities.FIELD_RESOLUTION)),
158 new NameValuePair("test-field_severity",
159 Integer.toString(IssueUtilities.FIELD_SEVERITY)),
160 new NameValuePair("test-field_creator",
161 Integer.toString(IssueUtilities.FIELD_CREATOR)),
162 new NameValuePair("test-field_createdate",
163 Integer.toString(IssueUtilities.FIELD_CREATEDATE)),
164 new NameValuePair("test-field_owner",
165 Integer.toString(IssueUtilities.FIELD_OWNER)),
166 new NameValuePair("test-field_lastmodified",
167 Integer.toString(IssueUtilities.FIELD_LASTMODIFIED)),
168 new NameValuePair("test-field_project",
169 Integer.toString(IssueUtilities.FIELD_PROJECT)),
170 new NameValuePair("test-field_target",
171 Integer.toString(IssueUtilities.FIELD_TARGET_VERSION)),
172 new NameValuePair("test-field_components",
173 Integer.toString(IssueUtilities.FIELD_COMPONENTS)),
174 new NameValuePair("test-field_versions",
175 Integer.toString(IssueUtilities.FIELD_VERSIONS)),
176 new NameValuePair("test-field_attachmentdescription",
177 Integer.toString(IssueUtilities.FIELD_ATTACHMENTDESCRIPTION)),
178 new NameValuePair("test-field_attachmentfilename",
179 Integer.toString(IssueUtilities.FIELD_ATTACHMENTFILENAME)),
180 new NameValuePair("test-field_detaileddescription",
181 Integer.toString(IssueUtilities.FIELD_HISTORY))
182 };
183 doTestGetStandardFields(new Locale("test"), expected);
184 }
185
186 @Test
187 public void testGetRelationNameByLocaleWithInt() {
188 assertEquals("test-cloned_c",
189 IssueUtilities.getRelationName(
190 IssueRelation.Type.CLONED_C,
191 new Locale("test")));
192 assertEquals("test-cloned_p",
193 IssueUtilities.getRelationName(
194 IssueRelation.Type.CLONED_P,
195 new Locale("test")));
196 assertEquals("test-dependent_c",
197 IssueUtilities.getRelationName(
198 IssueRelation.Type.DEPENDENT_C,
199 new Locale("test")));
200 assertEquals("test-dependent_p",
201 IssueUtilities.getRelationName(
202 IssueRelation.Type.DEPENDENT_P,
203 new Locale("test")));
204 assertEquals("test-duplicate_c",
205 IssueUtilities.getRelationName(
206 IssueRelation.Type.DUPLICATE_C,
207 new Locale("test")));
208 assertEquals("test-duplicate_p",
209 IssueUtilities.getRelationName(
210 IssueRelation.Type.DUPLICATE_P,
211 new Locale("test")));
212 assertEquals("test-related_c",
213 IssueUtilities.getRelationName(
214 IssueRelation.Type.RELATED_C,
215 new Locale("test")));
216 assertEquals("test-related_p",
217 IssueUtilities.getRelationName(
218 IssueRelation.Type.RELATED_P,
219 new Locale("test")));
220 assertEquals("test-split_c",
221 IssueUtilities.getRelationName(
222 IssueRelation.Type.SPLIT_C,
223 new Locale("test")));
224 assertEquals("test-split_p",
225 IssueUtilities.getRelationName(
226 IssueRelation.Type.SPLIT_P,
227 new Locale("test")));
228 }
229
230
231 @Test
232 public void testGetMatchingRelationType() {
233 assertEquals(IssueRelation.Type.RELATED_C,
234 IssueUtilities.getMatchingRelationType(
235 IssueRelation.Type.RELATED_P));
236 assertEquals(IssueRelation.Type.RELATED_P,
237 IssueUtilities.getMatchingRelationType(
238 IssueRelation.Type.RELATED_C));
239 assertEquals(IssueRelation.Type.DUPLICATE_C,
240 IssueUtilities.getMatchingRelationType(
241 IssueRelation.Type.DUPLICATE_P));
242 assertEquals(IssueRelation.Type.DUPLICATE_P,
243 IssueUtilities.getMatchingRelationType(
244 IssueRelation.Type.DUPLICATE_C));
245 assertEquals(IssueRelation.Type.CLONED_C,
246 IssueUtilities.getMatchingRelationType(
247 IssueRelation.Type.CLONED_P));
248 assertEquals(IssueRelation.Type.CLONED_P,
249 IssueUtilities.getMatchingRelationType(
250 IssueRelation.Type.CLONED_C));
251 assertEquals(IssueRelation.Type.SPLIT_C,
252 IssueUtilities.getMatchingRelationType(
253 IssueRelation.Type.SPLIT_P));
254 assertEquals(IssueRelation.Type.SPLIT_P,
255 IssueUtilities.getMatchingRelationType(
256 IssueRelation.Type.SPLIT_C));
257 assertEquals(IssueRelation.Type.DEPENDENT_C,
258 IssueUtilities.getMatchingRelationType(
259 IssueRelation.Type.DEPENDENT_P));
260 assertEquals(IssueRelation.Type.DEPENDENT_P,
261 IssueUtilities.getMatchingRelationType(
262 IssueRelation.Type.DEPENDENT_C));
263 }
264
265 @Test
266 public void testComponentsToString() {
267 final Issue issue = new Issue();
268 final Project project = new Project("project");
269 {
270 final Component component = new Component(project, "component1");
271 issue.getComponents().add(component);
272 }
273 {
274 final Component component = new Component(project, "component2");
275 issue.getComponents().add(component);
276 }
277 assertEquals("component1, component2",
278 IssueUtilities.componentsToString(issue));
279 }
280
281 @Test
282 public void testVersionsToString() {
283 final Issue issue = new Issue();
284 issue.getVersions().add(new Version(new Project("project"), "1.1.1"));
285 issue.getVersions().add(new Version(new Project("project"), "1.2.3"));
286 issue.getVersions().add(new Version(new Project("project"), "3.2.1"));
287 assertEquals("1.1.1, 1.2.3, 3.2.1",
288 IssueUtilities.versionsToString(issue));
289 }
290
291 @Test
292 public void testHistoryToString() {
293 final Issue issue = new Issue();
294 final User user = new User("user");
295 user.setFirstName("firstName");
296 user.setLastName("lastName");
297 final IssueHistory issueHistory = new IssueHistory(issue,
298 user, "description", IssueUtilities.STATUS_CLOSED);
299 issue.getHistory().add(issueHistory);
300 final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd");
301 assertEquals("description,firstName lastName,"
302 + dateFormat.format(new Date()),
303 IssueUtilities.historyToString(issue,
304 dateFormat));
305 }
306
307 @Test
308 public void testGetStatusNameByLocaleInt() {
309 assertEquals("test-status_assigned",
310 IssueUtilities.getStatusName(IssueUtilities.STATUS_ASSIGNED,
311 new Locale("test")));
312 assertEquals("test-status_closed",
313 IssueUtilities.getStatusName(IssueUtilities.STATUS_CLOSED,
314 new Locale("test")));
315 assertEquals("test-status_end",
316 IssueUtilities.getStatusName(IssueUtilities.STATUS_END,
317 new Locale("test")));
318 assertEquals("test-status_new",
319 IssueUtilities.getStatusName(IssueUtilities.STATUS_NEW,
320 new Locale("test")));
321 assertEquals("test-status_resolved",
322 IssueUtilities.getStatusName(IssueUtilities.STATUS_RESOLVED,
323 new Locale("test")));
324 assertEquals("test-status_unassigned",
325 IssueUtilities.getStatusName(IssueUtilities.STATUS_UNASSIGNED,
326 new Locale("test")));
327 }
328
329 public void doTestGetStatusesByLocale(final Locale locale,
330 final List<NameValuePair> expected) {
331 assertEquals(expected.size(), IssueUtilities.getNumberStatuses());
332 final List<NameValuePair> actual = IssueUtilities.getStatuses(locale);
333 assertEquals(expected.size(), actual.size());
334 for (final NameValuePair nvpExpected : expected) {
335 boolean found = false;
336 for (final NameValuePair nvpActual : actual) {
337 found = nvpExpected.getName().equals(nvpActual.getName())
338 && nvpExpected.getValue().equals(nvpActual.getValue());
339 if (found) break;
340 }
341 assertTrue(found);
342 }
343 }
344
345 @Test
346 public void testSetStatuses() {
347 final List<Configuration> statuses_ = IssueUtilities.getStatuses();
348 final List<Configuration> statuses = new Vector<>();
349 final Configuration configuration = new Configuration(Configuration.Type.status,
350 new NameValuePair("key", "100"));
351 statuses.add(configuration);
352 IssueUtilities.setStatuses(statuses);
353 final List<NameValuePair> expected = new Vector<>();
354 expected.add(new NameValuePair("test-status_new", "100"));
355 doTestGetStatusesByLocale(new Locale("test"), expected);
356
357 }
358
359
360 @Test
361 public void testGetSeverityNameByLocale() {
362 assertEquals("test-severity_low",
363 IssueUtilities.getSeverityName(1, new Locale("test")));
364 assertEquals("test-severity_middle",
365 IssueUtilities.getSeverityName(2, new Locale("test")));
366 assertEquals("test-severity_high",
367 IssueUtilities.getSeverityName(3, new Locale("test")));
368 assertEquals("test-severity_critical",
369 IssueUtilities.getSeverityName(4, new Locale("test")));
370 }
371
372 public void doTestGetSeverities(final Locale locale,
373 final List<NameValuePair> expected) {
374 final List<NameValuePair> actual = IssueUtilities.getSeverities(locale);
375 assertEquals(expected.size(), actual.size());
376 for (final NameValuePair nvpExpected : expected) {
377 boolean found = false;
378 for (final NameValuePair nvpActual : actual) {
379 found = nvpExpected.getName().equals(nvpActual.getName())
380 && nvpExpected.getValue().equals(nvpActual.getValue());
381 if (found) break;
382 }
383 assertTrue(found);
384 }
385 }
386
387 @Test
388 public void testGetSeverities() {
389 final List<Configuration> severities = new Vector<>();
390 final Configuration severity1 = new Configuration(Configuration.Type.severity,
391 new NameValuePair("1", "1"));
392 severities.add(severity1);
393 final Configuration severity2 = new Configuration(Configuration.Type.severity,
394 new NameValuePair("2", "2"));
395 severities.add(severity2);
396 final Configuration severity3 = new Configuration(Configuration.Type.severity,
397 new NameValuePair("3", "3"));
398 severities.add(severity3);
399 final Configuration severity4 = new Configuration(Configuration.Type.severity,
400 new NameValuePair("4", "4"));
401 severities.add(severity4);
402 IssueUtilities.setSeverities(severities);
403 final List<NameValuePair> expected = new Vector<>();
404 expected.add(new NameValuePair("test-severity_low", "1"));
405 expected.add(new NameValuePair("test-severity_middle", "2"));
406 expected.add(new NameValuePair("test-severity_high", "3"));
407 expected.add(new NameValuePair("test-severity_critical", "4"));
408 doTestGetSeverities(new Locale("test"), expected);
409 }
410
411 @Test
412 public void testSetSeverities() {
413 final List<Configuration> severities = new Vector<>();
414 final Configuration severity = new Configuration(Configuration.Type.severity,
415 new NameValuePair("88", "1"));
416 severities.add(severity);
417 IssueUtilities.setSeverities(severities);
418 final List<NameValuePair> expected = new Vector<>();
419 expected.add(new NameValuePair("test-severity_low", "1"));
420 doTestGetSeverities(new Locale("test"), expected);
421 }
422
423 @Test
424 public void testCompareSeverities() {
425 final Issue issueA = new Issue();
426 issueA.setSeverity(1);
427 final Issue issueB = new Issue();
428 issueB.setSeverity(2);
429 assertEquals(1, IssueUtilities.compareSeverity(issueA, issueB));
430 }
431
432 @Test
433 public void testGetResolutionName() {
434 assertEquals("test-resolution_fixed",
435 IssueUtilities.getResolutionName(1, new Locale("test")));
436 assertEquals("test-resolution_pending",
437 IssueUtilities.getResolutionName(2, new Locale("test")));
438 }
439
440 @Test
441 public void testCheckResolutionName() {
442 assertEquals("test-resolution_fixed",
443 IssueUtilities.checkResolutionName("1", new Locale("test")));
444 assertEquals("test-resolution_pending",
445 IssueUtilities.checkResolutionName("2", new Locale("test")));
446 }
447
448 public void doTestGetResolutionsByLocale(final Locale locale,
449 final List<NameValuePair> expected) {
450 final List<NameValuePair> actual = IssueUtilities.getResolutions(locale);
451 assertEquals(expected.size(), actual.size());
452 for (final NameValuePair nvpExpected : expected) {
453 boolean found = false;
454 for (final NameValuePair nvpActual : actual) {
455 found = nvpExpected.getName().equals(nvpActual.getName())
456 && nvpExpected.getValue().equals(nvpActual.getValue());
457 }
458 assertTrue(found);
459 }
460 }
461
462 @Test
463 public void testGetResolutionsByLocale() {
464 final List<Configuration> resolutions = new Vector<>();
465 final Configuration resolution = new Configuration(Configuration.Type.resolution,
466 new NameValuePair("one", "1"));
467 resolutions.add(resolution);
468 IssueUtilities.setResolutions(resolutions);
469 final List<NameValuePair> expected = new Vector<>();
470 expected.add(new NameValuePair("test-resolution_fixed", "1"));
471 doTestGetResolutionsByLocale(new Locale("test"), expected);
472 }
473
474 @Test
475 public void testSetResolutions() {
476 final List<Configuration> resolutions = new Vector<>();
477 final Configuration resolution = new Configuration(Configuration.Type.resolution,
478 new NameValuePair("key", "1"));
479 resolutions.add(resolution);
480 IssueUtilities.setResolutions(resolutions);
481 final List<NameValuePair> expected = new Vector<>();
482 expected.add(new NameValuePair("test-resolution_fixed", "1"));
483 doTestGetResolutionsByLocale(new Locale("test"), expected);
484 }
485
486 @Test
487 public void testGetActivityNameByLocale() {
488 assertEquals("test-activity_issue_created",
489 IssueUtilities.getActivityName(IssueActivityType.ISSUE_CREATED,
490 new Locale("test")));
491
492 }
493
494 public void doTestGetCustomFields(final List<CustomField> expected) {
495 final List<CustomField> actual = IssueUtilities.getCustomFields();
496 assertEquals(expected.size(), actual.size());
497 for (final CustomField cf : expected) {
498 boolean found = false;
499 for (final CustomField cfActual : actual) {
500 found = cf.equals(cfActual);
501 if (found) break;
502 }
503 assertTrue(found);
504 }
505 }
506
507 @Test
508 public void testGetCustomFields() {
509 final List<CustomField> expected = new Vector<>();
510 final CustomField customField1 = new CustomField();
511 customField1.setFieldType(Type.STRING);
512 customField1.setId(1);
513 expected.add(customField1);
514 IssueUtilities.setCustomFields(expected);
515 doTestGetCustomFields(expected);
516 }
517
518 @Test
519 public void testSetCustomFields() {
520 final List<CustomField> expected = new Vector<>();
521 final CustomField customField1 = new CustomField();
522 customField1.setFieldType(Type.STRING);
523 customField1.setId(1);
524 expected.add(customField1);
525 IssueUtilities.setCustomFields(expected);
526 assertEquals(expected, IssueUtilities.getCustomFields());
527 }
528
529
530 @Test
531 public void testCanViewIssue() {
532 final Project project = new Project("project");
533 project.setId(1);
534 final Issue issue = new Issue();
535 issue.setProject(project);
536 final User user1 = new User();
537 user1.setId(1);
538 issue.setCreator(user1);
539 final User user2 = new User();
540 user2.setId(2);
541 final Map<Integer, Set<PermissionType>> permissions =
542 new HashMap<>();
543 assertTrue(IssueUtilities.canViewIssue(issue, user1, permissions));
544 assertFalse(IssueUtilities.canViewIssue(issue, user2, permissions));
545 final Set<PermissionType> permissionSet = new HashSet<>();
546 permissionSet.add(PermissionType.ISSUE_VIEW_ALL);
547 permissions.put(1, permissionSet);
548 assertTrue(IssueUtilities.canViewIssue(issue, user2, permissions));
549 }
550
551 @Test
552 public void testCanEditIssue() {
553 final Project project = new Project("project");
554 project.setId(1);
555 final Issue issue = new Issue();
556 issue.setProject(project);
557 final User user1 = new User();
558 user1.setId(1);
559 issue.setCreator(user1);
560 final User user2 = new User();
561 user2.setId(2);
562 final Map<Integer, Set<PermissionType>> permissions =
563 new HashMap<>();
564 final Set<PermissionType> permissionSet = new HashSet<>();
565 permissions.put(1, permissionSet);
566 permissionSet.add(PermissionType.ISSUE_EDIT_USERS);
567 assertTrue(IssueUtilities.canEditIssue(issue, user1.getId(), permissions));
568 assertFalse(IssueUtilities.canEditIssue(issue, user2.getId(), permissions));
569 permissionSet.add(PermissionType.ISSUE_EDIT_ALL);
570 assertTrue(IssueUtilities.canEditIssue(issue, user1.getId(), permissions));
571 assertTrue(IssueUtilities.canEditIssue(issue, user2.getId(), permissions));
572 }
573
574 @Test
575 public void testCanBeAssignedIssue() {
576 final Project project = new Project("project");
577 project.setId(1);
578 final Issue issue = new Issue();
579 issue.setProject(project);
580 final Integer user1Id = 1;
581 final Integer user2Id = 2;
582 final Map<Integer, Set<PermissionType>> permissions =
583 new HashMap<>();
584 final Set<PermissionType> permissionSet = new HashSet<>();
585 permissionSet.add(PermissionType.ISSUE_ASSIGNABLE);
586 permissionSet.add(PermissionType.ISSUE_EDIT_ALL);
587 permissions.put(1, permissionSet);
588 assertTrue(IssueUtilities.canBeAssignedIssue(issue, user1Id, permissions));
589 assertTrue(IssueUtilities.canBeAssignedIssue(issue, user2Id, permissions));
590 }
591
592 @Test
593 public void testCanUnassigneIssue() {
594 final Project project = new Project("project");
595 project.setId(1);
596 final Issue issue = new Issue();
597 issue.setProject(project);
598 final User user1 = new User();
599 user1.setId(1);
600 issue.setOwner(user1);
601 final User user2 = new User();
602 user2.setId(2);
603 final Map<Integer, Set<PermissionType>> permissions =
604 new HashMap<>();
605 final Set<PermissionType> permissionSet = new HashSet<>();
606 permissionSet.add(PermissionType.ISSUE_UNASSIGN_SELF);
607 permissions.put(1, permissionSet);
608 assertTrue(IssueUtilities.canUnassignIssue(issue, user1.getId(), permissions));
609 assertFalse(IssueUtilities.canUnassignIssue(issue, user2.getId(), permissions));
610 }
611
612 @Test
613 public void testHasIssueRelation() {
614 final Project project = new Project("project");
615 project.setId(1);
616 final Issue issue = new Issue();
617 final Issue related = new Issue();
618 related.setId(1);
619 final IssueRelation relation =
620 new IssueRelation(issue, related,
621 IssueRelation.Type.CLONED_C);
622 issue.getRelations().add(relation);
623 assertTrue(IssueUtilities.hasIssueRelation(issue, 1));
624 assertFalse(IssueUtilities.hasIssueRelation(issue, 2));
625 }
626
627 @Test
628 public void testHasIssueNotification() {
629 final Project project = new Project("project");
630 project.setId(1);
631 final Issue issue = new Issue();
632 issue.setId(1);
633 issue.setProject(project);
634 final User user1 = new User();
635 user1.setId(1);
636 issue.setCreator(user1);
637 issue.setOwner(user1);
638 assertTrue(IssueUtilities.hasIssueNotification(issue, 1));
639
640 }
641
642 @Override
643 public void onSetUp() throws Exception {
644
645 super.onSetUp();
646 }
647
648
649
650
651
652
653 protected String[] getDataSetFiles() {
654 return new String[]{
655 "dataset/languagebean_dataset.xml"
656 };
657 }
658
659 }