/////////////////////////////////////////////////////////////////////////////
//
// Project ProjectForge Community Edition
// www.projectforge.org
//
// Copyright (C) 2001-2014 Kai Reinhard (k.reinhard@micromata.de)
//
// ProjectForge is dual-licensed.
//
// This community edition is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License as published
// by the Free Software Foundation; version 3 of the License.
//
// This community edition is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
// Public License for more details.
//
// You should have received a copy of the GNU General Public License along
// with this program; if not, see http://www.gnu.org/licenses/.
//
/////////////////////////////////////////////////////////////////////////////
package org.projectforge.common;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.assertFalse;
import org.junit.BeforeClass;
import org.junit.Test;
import org.projectforge.core.ConfigXmlTest;
import org.projectforge.jira.JiraUtils;
public class JiraUtilsTest
{
public static final String JIRA_BASE_URL = "https://jira.acme.com/jira/browse/";
@BeforeClass
public static void setUp()
{
ConfigXmlTest.createTestConfiguration();
}
@Test
public void parseJiraIssues()
{
assertNull(JiraUtils.parseJiraIssues(null));
assertNull(JiraUtils.parseJiraIssues(""));
check(new String[] { "P-0"}, JiraUtils.parseJiraIssues("P-0"));
check(new String[] { "PF-0"}, JiraUtils.parseJiraIssues("PF-0"));
check(new String[] { "PF-222"}, JiraUtils.parseJiraIssues("PF-222"));
check(new String[] { "PF-1"}, JiraUtils.parseJiraIssues("PF-1"));
check(new String[] { "PF-1"}, JiraUtils.parseJiraIssues("Worked on PF-1."));
check(new String[] { "PF1DF-1"}, JiraUtils.parseJiraIssues("Worked on PF1DF-1."));
check(new String[] { "PF-222", "PROJECT2-123"}, JiraUtils.parseJiraIssues("Worked on PF-222 and PROJECT2-123 and finished this work."));
assertNull(JiraUtils.parseJiraIssues("PF222"));
check(new String[] { "PF-222"}, JiraUtils.parseJiraIssues("1234PF-222"));
}
@Test
public void hasJiraIssues()
{
assertFalse(JiraUtils.hasJiraIssues(null));
assertFalse(JiraUtils.hasJiraIssues(""));
assertTrue(JiraUtils.hasJiraIssues("P-0"));
assertTrue(JiraUtils.hasJiraIssues("PF-0"));
assertTrue(JiraUtils.hasJiraIssues("PF-222"));
assertTrue(JiraUtils.hasJiraIssues("PF-1"));
assertTrue(JiraUtils.hasJiraIssues("Worked on PF-1."));
assertTrue(JiraUtils.hasJiraIssues("Worked on PF1DF-1."));
assertTrue(JiraUtils.hasJiraIssues("Worked on PF-222 and PROJECT2-123 and finished this work."));
assertFalse(JiraUtils.hasJiraIssues("PF222"));
assertTrue(JiraUtils.hasJiraIssues("1234PF-222"));
}
@Test
public void buildJiraIssueBrowseLinkUrl()
{
assertEquals(JIRA_BASE_URL + "PF-222", JiraUtils.buildJiraIssueBrowseLinkUrl("PF-222"));
}
@Test
public void buildJiraIssueLink()
{
assertEquals("<a href=\"" + JIRA_BASE_URL + "PF-222" + "\">PF-222</a>", JiraUtils.buildJiraIssueBrowseLink("PF-222"));
}
@Test
public void linkJiraIssues()
{
assertEquals(JiraUtils.buildJiraIssueBrowseLink("PF-222"), JiraUtils.linkJiraIssues("PF-222"));
assertEquals(" " + JiraUtils.buildJiraIssueBrowseLink("PF-222"), JiraUtils.linkJiraIssues(" PF-222"));
assertEquals(JiraUtils.buildJiraIssueBrowseLink("PF-222") + " ", JiraUtils.linkJiraIssues("PF-222 "));
assertEquals("Worked on " + JiraUtils.buildJiraIssueBrowseLink("PF-222") + ".", JiraUtils.linkJiraIssues("Worked on PF-222."));
assertEquals("Worked on " + JiraUtils.buildJiraIssueBrowseLink("PF-222") + " and " + JiraUtils.buildJiraIssueBrowseLink("PF-1") + ".",
JiraUtils.linkJiraIssues("Worked on PF-222 and PF-1."));
}
private void check(final String[] expected, final String[] array)
{
assertEquals(expected.length, array.length);
for (int i = 0; i < expected.length; i++) {
assertEquals(expected[i], array[i]);
}
}
}