Search in sources :

Example 1 with ExtensionDependenciesPane

use of org.xwiki.extension.test.po.ExtensionDependenciesPane in project xwiki-platform by xwiki.

the class ExtensionIT method testDependencies.

/**
 * Tests how extension dependencies are displayed (both direct and backward dependencies).
 */
@Test
public void testDependencies() throws Exception {
    // Setup the extension and its dependencies.
    ExtensionId dependencyId = new ExtensionId("bob-xar-extension", "2.5-milestone-2");
    TestExtension dependency = getRepositoryTestUtils().getTestExtension(dependencyId, "xar");
    dependency.setName("Bob Wiki Macro");
    dependency.setSummary("Required by Alice");
    getRepositoryTestUtils().addExtension(dependency);
    ExtensionId extensionId = new ExtensionId("alice-xar-extension", "1.3");
    TestExtension extension = getRepositoryTestUtils().getTestExtension(extensionId, "xar");
    extension.addDependency(new DefaultExtensionDependency(dependencyId.getId(), new DefaultVersionConstraint(dependencyId.getVersion().getValue())));
    extension.addDependency(new DefaultExtensionDependency("missing-dependency", new DefaultVersionConstraint("135")));
    extension.addDependency(new DefaultExtensionDependency("org.xwiki.platform:xwiki-platform-sheet-api", new DefaultVersionConstraint("[3.2,)")));
    extension.addDependency(new DefaultExtensionDependency("org.xwiki.commons:xwiki-commons-diff-api", new DefaultVersionConstraint("2.7")));
    extension.addDependency(new DefaultExtensionDependency("org.xwiki.platform:xwiki-platform-display-api", new DefaultVersionConstraint("100.1")));
    getRepositoryTestUtils().addExtension(extension);
    // Search the extension and assert the list of dependencies.
    ExtensionAdministrationPage adminPage = ExtensionAdministrationPage.gotoPage();
    ExtensionPane extensionPane = adminPage.getSearchBar().clickAdvancedSearch().search(extensionId).getExtension(0);
    ExtensionDependenciesPane dependenciesPane = extensionPane.openDependenciesSection();
    List<DependencyPane> directDependencies = dependenciesPane.getDirectDependencies();
    assertEquals(5, directDependencies.size());
    assertEquals(dependency.getName(), directDependencies.get(0).getName());
    assertEquals(dependencyId.getVersion().getValue(), directDependencies.get(0).getVersion());
    assertEquals("remote", directDependencies.get(0).getStatus());
    assertNull(directDependencies.get(0).getStatusMessage());
    assertNull(directDependencies.get(1).getLink());
    assertEquals("missing-dependency", directDependencies.get(1).getName());
    assertEquals("135", directDependencies.get(1).getVersion());
    assertEquals("unknown", directDependencies.get(1).getStatus());
    assertNull(directDependencies.get(1).getStatusMessage());
    assertNotNull(directDependencies.get(2).getLink());
    assertEquals("XWiki Platform - Sheet - API", directDependencies.get(2).getName());
    assertEquals("[3.2,)", directDependencies.get(2).getVersion());
    assertEquals("core", directDependencies.get(2).getStatus());
    assertEquals("Provided", directDependencies.get(2).getStatusMessage());
    assertNotNull(directDependencies.get(3).getLink());
    assertEquals("XWiki Commons - Diff API", directDependencies.get(3).getName());
    assertEquals("2.7", directDependencies.get(3).getVersion());
    assertEquals("remote-core", directDependencies.get(3).getStatus());
    assertTrue(directDependencies.get(3).getStatusMessage().matches("Version [^\\s]+ is provided"));
    assertEquals("XWiki Platform - Display API", directDependencies.get(4).getName());
    assertEquals("100.1", directDependencies.get(4).getVersion());
    assertEquals("remote-core-incompatible", directDependencies.get(4).getStatus());
    assertTrue(directDependencies.get(4).getStatusMessage().matches("Incompatible with provided version [^\\s]+"));
    assertTrue(dependenciesPane.getBackwardDependencies().isEmpty());
    // Follow the link to a dependency.
    directDependencies.get(0).getLink().click();
    adminPage = new ExtensionAdministrationPage();
    extensionPane = adminPage.getSearchResults().getExtension(0);
    assertEquals(dependency.getName(), extensionPane.getName());
    assertEquals(dependencyId.getVersion().getValue(), extensionPane.getVersion());
    assertEquals(dependency.getSummary(), extensionPane.getSummary());
    // Check that we are still in the administration.
    assertTrue(new AdministrationPage().hasSection("XWiki.Extensions"));
}
Also used : ExtensionAdministrationPage(org.xwiki.extension.test.po.ExtensionAdministrationPage) AdministrationPage(org.xwiki.administration.test.po.AdministrationPage) ExtensionAdministrationPage(org.xwiki.extension.test.po.ExtensionAdministrationPage) DefaultVersionConstraint(org.xwiki.extension.version.internal.DefaultVersionConstraint) ExtensionDependenciesPane(org.xwiki.extension.test.po.ExtensionDependenciesPane) DependencyPane(org.xwiki.extension.test.po.DependencyPane) ExtensionId(org.xwiki.extension.ExtensionId) TestExtension(org.xwiki.repository.test.TestExtension) ExtensionPane(org.xwiki.extension.test.po.ExtensionPane) DefaultExtensionDependency(org.xwiki.extension.DefaultExtensionDependency) Test(org.junit.Test)

Aggregations

Test (org.junit.Test)1 AdministrationPage (org.xwiki.administration.test.po.AdministrationPage)1 DefaultExtensionDependency (org.xwiki.extension.DefaultExtensionDependency)1 ExtensionId (org.xwiki.extension.ExtensionId)1 DependencyPane (org.xwiki.extension.test.po.DependencyPane)1 ExtensionAdministrationPage (org.xwiki.extension.test.po.ExtensionAdministrationPage)1 ExtensionDependenciesPane (org.xwiki.extension.test.po.ExtensionDependenciesPane)1 ExtensionPane (org.xwiki.extension.test.po.ExtensionPane)1 DefaultVersionConstraint (org.xwiki.extension.version.internal.DefaultVersionConstraint)1 TestExtension (org.xwiki.repository.test.TestExtension)1