| | |
| | | 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;
|
| | |
| | | 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.
|
| | |
| | | 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);
|
| | |
| | | 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");
|
| | |
| | | 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();
|