From 0f43a54527845b5873f35dc80300d578bfe84bb0 Mon Sep 17 00:00:00 2001 From: James Moger Date: Fri, 13 Jan 2012 07:58:12 -0500 Subject: Branch for implementing distributed gb-issues --- tests/com/gitblit/tests/GitBlitSuite.java | 6 ++ tests/com/gitblit/tests/IssuesTest.java | 115 ++++++++++++++++++++++++++++++ 2 files changed, 121 insertions(+) create mode 100644 tests/com/gitblit/tests/IssuesTest.java (limited to 'tests') 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 list = IssueUtils.getIssues(repository, null); + List 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 -- cgit v1.2.3