James Moger
2012-10-13 c658df9e87d65b08d5482cf04489cb0532ff83dd
tests/com/gitblit/tests/IssuesTest.java
@@ -26,6 +26,7 @@
import org.eclipse.jgit.lib.Repository;
import org.junit.Test;
import com.gitblit.LuceneExecutor;
import com.gitblit.models.IssueModel;
import com.gitblit.models.IssueModel.Attachment;
import com.gitblit.models.IssueModel.Change;
@@ -33,9 +34,9 @@
import com.gitblit.models.IssueModel.Priority;
import com.gitblit.models.IssueModel.Status;
import com.gitblit.models.SearchResult;
import com.gitblit.utils.FileUtils;
import com.gitblit.utils.IssueUtils;
import com.gitblit.utils.IssueUtils.IssueFilter;
import com.gitblit.utils.LuceneUtils;
/**
 * Tests the mechanics of distributed issue management on the gb-issues branch.
@@ -46,9 +47,11 @@
public class IssuesTest {
   @Test
   public void testCreation() throws Exception {
   public void testLifecycle() throws Exception {
      Repository repository = GitBlitSuite.getIssuesTestRepository();
      // create and insert the issue
      String name = FileUtils.getRelativePath(GitBlitSuite.REPOSITORIES, repository.getDirectory());
      // create and insert an issue
      Change c1 = newChange("testCreation() " + Long.toHexString(System.currentTimeMillis()));
      IssueModel issue = IssueUtils.createIssue(repository, c1);
      assertNotNull(issue.id);
@@ -58,18 +61,15 @@
      compare(issue, constructed);
      assertEquals(1, constructed.changes.size());
   }
   @Test
   public void testUpdates() throws Exception {
      Repository repository = GitBlitSuite.getIssuesTestRepository();
      // C1: create the issue
      Change c1 = newChange("testUpdates() " + Long.toHexString(System.currentTimeMillis()));
      IssueModel issue = IssueUtils.createIssue(repository, c1);
      c1 = newChange("testUpdates() " + Long.toHexString(System.currentTimeMillis()));
      issue = IssueUtils.createIssue(repository, c1);
      assertNotNull(issue.id);
      IssueModel constructed = IssueUtils.getIssue(repository, issue.id);
      constructed = IssueUtils.getIssue(repository, issue.id);
      compare(issue, constructed);
      assertEquals(1, constructed.changes.size());
      // C2: set owner
      Change c2 = new Change("C2");
@@ -109,79 +109,54 @@
      assertEquals(5, constructed.changes.size());
      assertTrue(constructed.status.isClosed());
      repository.close();
   }
   @Test
   public void testQuery() throws Exception {
      Repository repository = GitBlitSuite.getIssuesTestRepository();
      List<IssueModel> allIssues = IssueUtils.getIssues(repository, null);
      List<IssueModel> openIssues = IssueUtils.getIssues(repository, new IssueFilter() {
         @Override
         public boolean accept(IssueModel issue) {
            return !issue.status.isClosed();
         }
      });
      List<IssueModel> closedIssues = IssueUtils.getIssues(repository, new IssueFilter() {
         @Override
         public boolean accept(IssueModel issue) {
            return issue.status.isClosed();
         }
      });
      repository.close();
      assertTrue(allIssues.size() > 0);
      assertEquals(1, openIssues.size());
      assertEquals(1, closedIssues.size());
   }
   @Test
   public void testLuceneIndexAndQuery() throws Exception {
      Repository repository = GitBlitSuite.getIssuesTestRepository();
      LuceneUtils.deleteIndex(repository);
      List<IssueModel> allIssues = IssueUtils.getIssues(repository, null);
      assertTrue(allIssues.size() > 0);
      for (IssueModel issue : allIssues) {
         LuceneUtils.index(repository, issue, false);
      // build a new Lucene index
      LuceneExecutor lucene = new LuceneExecutor(null, GitBlitSuite.REPOSITORIES);
      lucene.deleteIndex(name);
      for (IssueModel anIssue : allIssues) {
         lucene.index(name, anIssue);
      }
      List<SearchResult> hits = LuceneUtils.search("working", 10, repository);
      assertTrue(hits.size() > 0);
      List<SearchResult> hits = lucene.search("working", 1, 10, name);
      assertTrue(hits.size() == 1);
      
      // reindex an issue
      IssueModel issue = allIssues.get(0);
      issue = allIssues.get(0);
      Change change = new Change("reindex");
      change.comment("this is a test of reindexing an issue");
      IssueUtils.updateIssue(repository, issue.id, change);
      issue = IssueUtils.getIssue(repository, issue.id);
      LuceneUtils.index(repository, issue, true);
      lucene.index(name, issue);
      hits = lucene.search("working", 1, 10, name);
      assertTrue(hits.size() == 1);
      
      LuceneUtils.close();
      // delete all issues
      for (IssueModel anIssue : allIssues) {
         assertTrue(IssueUtils.deleteIssue(repository, anIssue.id, "D"));
      }
      lucene.close();
      repository.close();
   }
   
   @Test
   public void testLuceneQuery() throws Exception {
      Repository repository = GitBlitSuite.getIssuesTestRepository();
      List<SearchResult> hits = LuceneUtils.search("working", 10, repository);
      LuceneUtils.close();
      repository.close();
      assertTrue(hits.size() > 0);
   }
   @Test
   public void testDelete() throws Exception {
      Repository repository = GitBlitSuite.getIssuesTestRepository();
      List<IssueModel> allIssues = IssueUtils.getIssues(repository, null);
      // delete all issues
      for (IssueModel issue : allIssues) {
         assertTrue(IssueUtils.deleteIssue(repository, issue.id, "D"));
      }
      repository.close();
   }
   @Test
   public void testChangeComment() throws Exception {
      Repository repository = GitBlitSuite.getIssuesTestRepository();