/* * JBoss, Home of Professional Open Source * * Distributable under LGPL license. * See terms of license at gnu.org. */ package org.jboss.seam.wiki.test.connector; import org.jboss.seam.mock.DBUnitSeamTest; import org.jboss.seam.wiki.connectors.jira.JiraDAO; import org.jboss.seam.wiki.connectors.jira.JiraIssueListConnector; import org.jboss.seam.wiki.connectors.jira.JiraIssue; import org.jboss.seam.annotations.Name; import org.jboss.seam.annotations.AutoCreate; import org.jboss.seam.annotations.Scope; import org.jboss.seam.annotations.Install; import org.jboss.seam.ScopeType; import org.dbunit.operation.DatabaseOperation; import org.testng.annotations.Test; import java.util.List; import java.util.ArrayList; /** * @author Christian Bauer */ public class JiraConnectorTest extends DBUnitSeamTest { protected void prepareDBUnitOperations() { beforeTestOperations.add( new DataSetOperation("org/jboss/seam/wiki/test/WikiBaseData.dbunit.xml", DatabaseOperation.CLEAN_INSERT) ); } @Test public void cacheIssueList() throws Exception { new NonFacesRequest() { protected void renderResponse() throws Exception { JiraDAO dao = (JiraDAO)getInstance(JiraDAO.class); List<JiraIssue> issues = dao.getJiraIssues("foo", "bar", "baz", "hum", 3); assert issues.size() == 0; // Asynchronous cache needs to do its job first Thread.sleep(1000); issues = dao.getJiraIssues("foo", "bar", "baz", "hum", 3); assert issues.size() == 0; // Still nothing Thread.sleep(3000); issues = dao.getJiraIssues("foo", "bar", "baz", "hum", 3); assert issues.size() == 3; // Now we have it } }.run(); } @Name("jiraIssueListConnector") @Scope(ScopeType.APPLICATION) @Install(precedence = Install.MOCK) @AutoCreate public static class MockJiraIssueListConnector implements JiraIssueListConnector { public List<JiraIssue> getIssues(String url, String username, String password, String filterId) { try { Thread.sleep(3000); // Wait 3 seconds... } catch (InterruptedException e) {} List<JiraIssue> issues = new ArrayList<JiraIssue>(); JiraIssue i1 = new JiraIssue(); i1.setKey("one"); issues.add(i1); JiraIssue i2 = new JiraIssue(); i1.setKey("two"); issues.add(i2); JiraIssue i3 = new JiraIssue(); i1.setKey("three"); issues.add(i3); JiraIssue i4 = new JiraIssue(); i1.setKey("four"); issues.add(i4); return issues; } } }