summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorJames Moger <james.moger@gitblit.com>2012-01-13 07:58:12 -0500
committerJames Moger <james.moger@gitblit.com>2012-01-13 07:58:12 -0500
commit0f43a54527845b5873f35dc80300d578bfe84bb0 (patch)
tree084fef70e383d330deb3ae64158c3401bbe6397a /tests
parent82b5f3581e5c3d5667e3c8da6aa024cb0eb3a47e (diff)
downloadgitblit-0f43a54527845b5873f35dc80300d578bfe84bb0.tar.gz
gitblit-0f43a54527845b5873f35dc80300d578bfe84bb0.zip
Branch for implementing distributed gb-issues
Diffstat (limited to 'tests')
-rw-r--r--tests/com/gitblit/tests/GitBlitSuite.java6
-rw-r--r--tests/com/gitblit/tests/IssuesTest.java115
2 files changed, 121 insertions, 0 deletions
diff --git a/tests/com/gitblit/tests/GitBlitSuite.java b/tests/com/gitblit/tests/GitBlitSuite.java
index 71947e14..747ce1f3 100644
--- a/tests/com/gitblit/tests/GitBlitSuite.java
+++ b/tests/com/gitblit/tests/GitBlitSuite.java
@@ -90,6 +90,10 @@ public class GitBlitSuite {
return new FileRepository(new File(REPOSITORIES, "test/theoretical-physics.git"));
}
+ public static Repository getIssuesTestRepository() throws Exception {
+ return new FileRepository(new File(REPOSITORIES, "gb-issues.git"));
+ }
+
public static boolean startGitblit() throws Exception {
if (started.get()) {
// already started
@@ -134,6 +138,8 @@ public class GitBlitSuite {
cloneOrFetch("test/ambition.git", "https://github.com/defunkt/ambition.git");
cloneOrFetch("test/theoretical-physics.git", "https://github.com/certik/theoretical-physics.git");
+ JGitUtils.createRepository(REPOSITORIES, "gb-issues.git").close();
+
enableTickets("ticgit.git");
enableDocs("ticgit.git");
showRemoteBranches("ticgit.git");
diff --git a/tests/com/gitblit/tests/IssuesTest.java b/tests/com/gitblit/tests/IssuesTest.java
new file mode 100644
index 00000000..1522ec69
--- /dev/null
+++ b/tests/com/gitblit/tests/IssuesTest.java
@@ -0,0 +1,115 @@
+/*
+ * Copyright 2012 gitblit.com.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.gitblit.tests;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import java.util.List;
+
+import org.bouncycastle.util.Arrays;
+import org.eclipse.jgit.lib.Repository;
+import org.junit.Test;
+
+import com.gitblit.models.IssueModel;
+import com.gitblit.models.IssueModel.Attachment;
+import com.gitblit.models.IssueModel.Change;
+import com.gitblit.models.IssueModel.Field;
+import com.gitblit.models.IssueModel.Priority;
+import com.gitblit.utils.IssueUtils;
+import com.gitblit.utils.IssueUtils.IssueFilter;
+
+public class IssuesTest {
+
+ @Test
+ public void testInsertion() throws Exception {
+ Repository repository = GitBlitSuite.getIssuesTestRepository();
+ // create and insert the issue
+ Change c1 = newChange("Test issue " + Long.toHexString(System.currentTimeMillis()));
+ IssueModel issue = IssueUtils.createIssue(repository, c1);
+ assertNotNull(issue.id);
+
+ // retrieve issue and compare
+ IssueModel constructed = IssueUtils.getIssue(repository, issue.id);
+ compare(issue, constructed);
+
+ // add a note and update
+ Change c2 = new Change();
+ c2.author = "dave";
+ c2.comment("yeah, this is working");
+ assertTrue(IssueUtils.updateIssue(repository, issue.id, c2));
+
+ // retrieve issue again
+ constructed = IssueUtils.getIssue(repository, issue.id);
+
+ assertEquals(2, constructed.changes.size());
+
+ Attachment a = IssueUtils.getIssueAttachment(repository, issue.id, "test.txt");
+ repository.close();
+
+ assertEquals(10, a.content.length);
+ assertTrue(Arrays.areEqual(new byte[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }, a.content));
+ }
+
+ @Test
+ public void testQuery() throws Exception {
+ Repository repository = GitBlitSuite.getIssuesTestRepository();
+ List<IssueModel> list = IssueUtils.getIssues(repository, null);
+ List<IssueModel> list2 = IssueUtils.getIssues(repository, new IssueFilter() {
+ boolean hasFirst = false;
+ @Override
+ public boolean accept(IssueModel issue) {
+ if (!hasFirst) {
+ hasFirst = true;
+ return true;
+ }
+ return false;
+ }
+ });
+ repository.close();
+ assertTrue(list.size() > 0);
+ assertEquals(1, list2.size());
+ }
+
+ private Change newChange(String summary) {
+ Change change = new Change();
+ change.setField(Field.Reporter, "james");
+ change.setField(Field.Owner, "dave");
+ change.setField(Field.Summary, summary);
+ change.setField(Field.Description, "this is my description");
+ change.setField(Field.Priority, Priority.High);
+ change.setField(Field.Labels, "helpdesk");
+ change.comment("my comment");
+
+ Attachment attachment = new Attachment("test.txt");
+ attachment.content = new byte[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
+ change.addAttachment(attachment);
+
+ return change;
+ }
+
+ private void compare(IssueModel issue, IssueModel constructed) {
+ assertEquals(issue.id, constructed.id);
+ assertEquals(issue.reporter, constructed.reporter);
+ assertEquals(issue.owner, constructed.owner);
+ assertEquals(issue.created.getTime() / 1000, constructed.created.getTime() / 1000);
+ assertEquals(issue.summary, constructed.summary);
+ assertEquals(issue.description, constructed.description);
+
+ assertTrue(issue.hasLabel("helpdesk"));
+ }
+} \ No newline at end of file