package hudson.plugins.mercurial.browser; import hudson.model.Descriptor; import hudson.model.FreeStyleProject; import hudson.plugins.mercurial.MercurialSCM; import hudson.scm.RepositoryBrowser; import java.net.URL; import java.util.List; import static org.junit.Assert.*; import org.junit.Rule; import org.junit.Test; import org.jvnet.hudson.test.Bug; import org.jvnet.hudson.test.JenkinsRule; import org.jvnet.hudson.test.recipes.LocalData; public class HgBrowserSelectionTest { @Rule public JenkinsRule j = new JenkinsRule(); /** * With an introduction of HgBrowser base class, a care has to be taken to load existing dataset. * * This test verifies that. */ @LocalData @Test public void repositoryBrowserCompatibility() throws Exception { FreeStyleProject p = (FreeStyleProject) j.jenkins.getItem("foo"); MercurialSCM ms = (MercurialSCM) p.getScm(); RepositoryBrowser<?> browser = ms.getEffectiveBrowser(); assertTrue(String.valueOf(browser), browser instanceof HgWeb); j.assertEqualBeans(new HgWeb("http://www.yahoo.com/"), browser, "url"); } @Bug(4510) @LocalData @Test public void pickingUpAlternativeBrowser() throws Exception { FreeStyleProject p = (FreeStyleProject) j.jenkins.getItem("foo"); MercurialSCM ms = (MercurialSCM) p.getScm(); final HgBrowser browser = ms.getBrowser(); assertEquals("wrong url", new URL("http://bitbucket.org/"), browser.getUrl()); assertTrue("class:" + browser.getClass(), browser instanceof BitBucket); j.assertEqualBeans(new BitBucket("http://bitbucket.org/"), browser, "url"); } @Bug(4514) @LocalData @Test public void browsersAvailableInDropDown() throws Exception { FreeStyleProject p = (FreeStyleProject) j.jenkins.getItem("foo"); MercurialSCM ms = (MercurialSCM) p.getScm(); final HgBrowser browser = ms.getBrowser(); assertEquals("wrong url", new URL("http://bitbucket.org/"), browser.getUrl()); assertTrue("class:" + browser.getClass(), browser instanceof BitBucket); j.assertEqualBeans(new BitBucket("http://bitbucket.org/"), browser, "url"); final List<Descriptor<RepositoryBrowser<?>>> browserDescriptors = ms.getDescriptor().getBrowserDescriptors(); assertTrue("Could not find BitBucket in " + browserDescriptors, browserDescriptors.contains(browser.getDescriptor())); } @Bug(20186) @Test public void configureBrowser() throws Exception { FreeStyleProject p = j.createFreeStyleProject(); p.setScm(new MercurialSCM(null, "https://host/repo", null, null, null, new HgWeb("https://host/repo"), false, null)); j.configRoundtrip(p); assertEquals("https://host/repo/", ((MercurialSCM) p.getScm()).getBrowser().getUrl().toString()); } }