Search in sources :

Example 1 with LogItemPane

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

the class ExtensionIT method testDowngrade.

/**
 * Tests how an extension is downgraded.
 */
@Test
public void testDowngrade() throws Exception {
    // Setup the extension.
    String extensionId = "alice-xar-extension";
    String oldVersion = "1.3";
    String newVersion = "2.1.4";
    TestExtension oldExtension = getRepositoryTestUtils().getTestExtension(new ExtensionId(extensionId, oldVersion), "xar");
    getRepositoryTestUtils().addExtension(oldExtension);
    TestExtension newExtension = getRepositoryTestUtils().getTestExtension(new ExtensionId(extensionId, newVersion), "xar");
    getRepositoryTestUtils().attachFile(newExtension);
    getRepositoryTestUtils().addVersionObject(newExtension, newVersion, "attach:" + newExtension.getFile().getName());
    // Make sure the new version is installed.
    getExtensionTestUtils().install(new ExtensionId(extensionId, newVersion));
    // Downgrade the extension.
    ExtensionAdministrationPage adminPage = ExtensionAdministrationPage.gotoPage();
    ExtensionPane extensionPane = adminPage.getSearchBar().clickAdvancedSearch().search(extensionId, oldVersion).getExtension(0);
    assertEquals("remote-installed", extensionPane.getStatus());
    assertEquals("Version 2.1.4 is installed", extensionPane.getStatusMessage());
    extensionPane = extensionPane.downgrade();
    // Check the downgrade plan.
    List<DependencyPane> downgradePlan = extensionPane.openProgressSection().getJobPlan();
    assertEquals(1, downgradePlan.size());
    assertEquals(extensionId, downgradePlan.get(0).getName());
    assertEquals(oldVersion, downgradePlan.get(0).getVersion());
    assertEquals("remote-installed", downgradePlan.get(0).getStatus());
    assertEquals("Version 2.1.4 is installed", downgradePlan.get(0).getStatusMessage());
    // Finish the downgrade and check the downgrade log.
    extensionPane = extensionPane.confirm();
    assertEquals("installed", extensionPane.getStatus());
    assertEquals("Installed", extensionPane.getStatusMessage());
    List<LogItemPane> log = extensionPane.openProgressSection().getJobLog();
    assertTrue(log.size() > 2);
    assertEquals("info", log.get(2).getLevel());
    assertEquals("Resolving extension [alice-xar-extension 1.3] on namespace [Home]", log.get(2).getMessage());
    assertEquals("info", log.get(log.size() - 1).getLevel());
    assertEquals("Finished job of type [install] with identifier " + "[extension/action/alice-xar-extension/wiki:xwiki]", log.get(log.size() - 1).getMessage());
    // Assert the changes.
    ViewPage viewPage = getUtil().gotoPage("ExtensionTest", "Alice");
    assertEquals("Alice Macro", viewPage.getDocumentTitle());
    assertTrue(viewPage.getContent().contains("Alice says hello!"));
}
Also used : LogItemPane(org.xwiki.extension.test.po.LogItemPane) ExtensionAdministrationPage(org.xwiki.extension.test.po.ExtensionAdministrationPage) DependencyPane(org.xwiki.extension.test.po.DependencyPane) TestExtension(org.xwiki.repository.test.TestExtension) ExtensionId(org.xwiki.extension.ExtensionId) ViewPage(org.xwiki.test.ui.po.ViewPage) ExtensionPane(org.xwiki.extension.test.po.ExtensionPane) Test(org.junit.Test)

Example 2 with LogItemPane

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

the class ExtensionIT method testInstall.

/**
 * Tests how an extension is installed.
 */
@Test
public void testInstall() throws Exception {
    // Setup the extension and its dependencies.
    ExtensionId extensionId = new ExtensionId("alice-xar-extension", "1.3");
    TestExtension extension = getRepositoryTestUtils().getTestExtension(extensionId, "xar");
    ExtensionId dependencyId = new ExtensionId("bob-xar-extension", "2.5-milestone-2");
    getRepositoryTestUtils().addExtension(getRepositoryTestUtils().getTestExtension(dependencyId, "xar"));
    extension.addDependency(new DefaultExtensionDependency(dependencyId.getId(), new DefaultVersionConstraint(dependencyId.getVersion().getValue())));
    extension.addDependency(new DefaultExtensionDependency("org.xwiki.platform:xwiki-platform-sheet-api", new DefaultVersionConstraint("[3.2,)")));
    getRepositoryTestUtils().addExtension(extension);
    // Search the extension and install it.
    ExtensionAdministrationPage adminPage = ExtensionAdministrationPage.gotoPage();
    ExtensionPane extensionPane = adminPage.getSearchBar().clickAdvancedSearch().search(extensionId).getExtension(0);
    extensionPane = extensionPane.install();
    // Assert the install plan.
    List<DependencyPane> installPlan = extensionPane.openProgressSection().getJobPlan();
    assertEquals(2, installPlan.size());
    assertEquals(dependencyId, installPlan.get(0).getId());
    assertEquals(extensionId, installPlan.get(1).getId());
    // Finish the install and assert the install log.
    List<LogItemPane> log = extensionPane.confirm().openProgressSection().getJobLog();
    int logSize = log.size();
    assertTrue(logSize > 1);
    assertEquals("info", log.get(0).getLevel());
    assertEquals("Starting job of type [install] with identifier " + "[extension/action/alice-xar-extension/wiki:xwiki]", log.get(0).getMessage());
    assertEquals("info", log.get(logSize - 1).getLevel());
    assertEquals("Finished job of type [install] with identifier " + "[extension/action/alice-xar-extension/wiki:xwiki]", log.get(logSize - 1).getMessage());
    // Test that both extensions are usable.
    ViewPage viewPage = getUtil().createPage(getTestClassName(), getTestMethodName(), "{{alice/}}\n\n{{bob/}}", "");
    String content = viewPage.getContent();
    assertTrue(content.contains("Alice says hello!"));
    assertTrue(content.contains("Bob says hi!"));
    // Check the list of installed extensions.
    adminPage = ExtensionAdministrationPage.gotoInstalledExtensions();
    SearchResultsPane searchResults = adminPage.getSearchBar().search("bob");
    assertEquals(1, searchResults.getDisplayedResultsCount());
    extensionPane = searchResults.getExtension(0);
    assertEquals("installed-dependency", extensionPane.getStatus());
    assertEquals("Installed as dependency", extensionPane.getStatusMessage());
    assertEquals(dependencyId, extensionPane.getId());
    assertNotNull(extensionPane.getUninstallButton());
    searchResults = new SimpleSearchPane().search("alice");
    assertEquals(1, searchResults.getDisplayedResultsCount());
    extensionPane = searchResults.getExtension(0);
    assertEquals("installed", extensionPane.getStatus());
    assertEquals("Installed", extensionPane.getStatusMessage());
    assertEquals(extensionId, extensionPane.getId());
    assertNotNull(extensionPane.getUninstallButton());
    // Check if the progress log is persisted.
    extensionPane = extensionPane.showDetails();
    log = extensionPane.openProgressSection().getJobLog();
    assertEquals(logSize, log.size());
    assertEquals("info", log.get(0).getLevel());
    assertEquals("Starting job of type [install] with identifier " + "[extension/action/alice-xar-extension/wiki:xwiki]", log.get(0).getMessage());
    assertEquals("info", log.get(logSize - 1).getLevel());
    assertEquals("Finished job of type [install] with identifier " + "[extension/action/alice-xar-extension/wiki:xwiki]", log.get(logSize - 1).getMessage());
    // Check if the dependency is properly listed as installed.
    List<DependencyPane> dependencies = extensionPane.openDependenciesSection().getDirectDependencies();
    assertEquals(2, dependencies.size());
    assertEquals(dependencyId, dependencies.get(0).getId());
    assertEquals("installed-dependency", dependencies.get(0).getStatus());
    assertEquals("Installed as dependency", dependencies.get(0).getStatusMessage());
    // Check the backward dependency.
    dependencies.get(0).getLink().click();
    extensionPane = new ExtensionAdministrationPage().getSearchResults().getExtension(0);
    dependencies = extensionPane.openDependenciesSection().getBackwardDependencies();
    assertEquals(1, dependencies.size());
    assertEquals(extensionId, dependencies.get(0).getId());
    assertEquals("installed", dependencies.get(0).getStatus());
    assertEquals("Installed", dependencies.get(0).getStatusMessage());
}
Also used : ExtensionAdministrationPage(org.xwiki.extension.test.po.ExtensionAdministrationPage) DependencyPane(org.xwiki.extension.test.po.DependencyPane) ExtensionId(org.xwiki.extension.ExtensionId) TestExtension(org.xwiki.repository.test.TestExtension) ViewPage(org.xwiki.test.ui.po.ViewPage) ExtensionPane(org.xwiki.extension.test.po.ExtensionPane) SimpleSearchPane(org.xwiki.extension.test.po.SimpleSearchPane) DefaultVersionConstraint(org.xwiki.extension.version.internal.DefaultVersionConstraint) LogItemPane(org.xwiki.extension.test.po.LogItemPane) DefaultVersionConstraint(org.xwiki.extension.version.internal.DefaultVersionConstraint) SearchResultsPane(org.xwiki.extension.test.po.SearchResultsPane) DefaultExtensionDependency(org.xwiki.extension.DefaultExtensionDependency) Test(org.junit.Test)

Example 3 with LogItemPane

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

the class ExtensionIT method testUpgrade.

/**
 * Tests how an extension is upgraded.
 */
@Test
public void testUpgrade() throws Exception {
    // Setup the extension.
    String extensionId = "alice-xar-extension";
    String oldVersion = "1.3";
    String newVersion = "2.1.4";
    TestExtension oldExtension = getRepositoryTestUtils().getTestExtension(new ExtensionId(extensionId, oldVersion), "xar");
    getRepositoryTestUtils().addExtension(oldExtension);
    TestExtension newExtension = getRepositoryTestUtils().getTestExtension(new ExtensionId(extensionId, newVersion), "xar");
    getRepositoryTestUtils().attachFile(newExtension);
    getRepositoryTestUtils().addVersionObject(newExtension, newVersion, "attach:" + newExtension.getFile().getName());
    // Make sure the old version is installed.
    getExtensionTestUtils().install(new ExtensionId(extensionId, oldVersion));
    // Upgrade the extension.
    ExtensionAdministrationPage adminPage = ExtensionAdministrationPage.gotoPage();
    ExtensionPane extensionPane = adminPage.getSearchBar().clickAdvancedSearch().search(extensionId, newVersion).getExtension(0);
    assertEquals("remote-installed", extensionPane.getStatus());
    assertEquals("Version 1.3 is installed", extensionPane.getStatusMessage());
    extensionPane = extensionPane.upgrade();
    // Check the upgrade plan.
    List<DependencyPane> upgradePlan = extensionPane.openProgressSection().getJobPlan();
    assertEquals(1, upgradePlan.size());
    assertEquals(extensionId, upgradePlan.get(0).getName());
    assertEquals(newVersion, upgradePlan.get(0).getVersion());
    assertEquals("remote-installed", upgradePlan.get(0).getStatus());
    assertEquals("Version 1.3 is installed", upgradePlan.get(0).getStatusMessage());
    // Finish the upgrade and check the upgrade log.
    extensionPane = extensionPane.confirm();
    assertEquals("installed", extensionPane.getStatus());
    assertEquals("Installed", extensionPane.getStatusMessage());
    List<LogItemPane> log = extensionPane.openProgressSection().getJobLog();
    assertTrue(log.size() > 2);
    assertEquals("info", log.get(2).getLevel());
    assertEquals("Resolving extension [alice-xar-extension 2.1.4] on namespace [Home]", log.get(2).getMessage());
    assertEquals("info", log.get(log.size() - 1).getLevel());
    assertEquals("Finished job of type [install] with identifier " + "[extension/action/alice-xar-extension/wiki:xwiki]", log.get(log.size() - 1).getMessage());
    // Assert the changes.
    ViewPage viewPage = getUtil().gotoPage("ExtensionTest", "Alice");
    assertEquals("Alice Wiki Macro (upgraded)", viewPage.getDocumentTitle());
    assertTrue(viewPage.getContent().contains("Alice says hi guys!"));
}
Also used : LogItemPane(org.xwiki.extension.test.po.LogItemPane) ExtensionAdministrationPage(org.xwiki.extension.test.po.ExtensionAdministrationPage) DependencyPane(org.xwiki.extension.test.po.DependencyPane) TestExtension(org.xwiki.repository.test.TestExtension) ExtensionId(org.xwiki.extension.ExtensionId) ViewPage(org.xwiki.test.ui.po.ViewPage) ExtensionPane(org.xwiki.extension.test.po.ExtensionPane) Test(org.junit.Test)

Example 4 with LogItemPane

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

the class ExtensionIT method testUpgradeWithMergeConflict.

/**
 * Tests how an extension is upgraded when there is a merge conflict.
 */
@Test
public void testUpgradeWithMergeConflict() throws Exception {
    // Setup the extension.
    String extensionId = "alice-xar-extension";
    String oldVersion = "1.3";
    String newVersion = "2.1.4";
    TestExtension oldExtension = getRepositoryTestUtils().getTestExtension(new ExtensionId(extensionId, oldVersion), "xar");
    getRepositoryTestUtils().addExtension(oldExtension);
    TestExtension newExtension = getRepositoryTestUtils().getTestExtension(new ExtensionId(extensionId, newVersion), "xar");
    getRepositoryTestUtils().attachFile(newExtension);
    getRepositoryTestUtils().addVersionObject(newExtension, newVersion, "attach:" + newExtension.getFile().getName());
    // Make sure the old version is installed.
    getExtensionTestUtils().install(new ExtensionId(extensionId, oldVersion));
    // Edit the installed version so that we have a merge conflict.
    Map<String, String> queryParameters = new HashMap<String, String>();
    queryParameters.put("title", "Alice Extension");
    queryParameters.put("content", "== Usage ==\n\n{{code language=\"none\"}}\n" + "{{alice/}}\n{{/code}}\n\n== Output ==\n\n{{alice/}}");
    queryParameters.put("XWiki.WikiMacroClass_0_code", "{{info}}Alice says hello!{{/info}}");
    getUtil().gotoPage("ExtensionTest", "Alice", "save", queryParameters);
    // Initiate the upgrade process.
    ExtensionAdministrationPage adminPage = ExtensionAdministrationPage.gotoPage();
    SearchResultsPane searchResults = adminPage.getSearchBar().clickAdvancedSearch().search(extensionId, newVersion);
    ExtensionPane extensionPane = searchResults.getExtension(0);
    extensionPane = extensionPane.upgrade().confirm();
    // Check the merge conflict UI.
    assertEquals("loading", extensionPane.getStatus());
    assertNull(extensionPane.getStatusMessage());
    ProgressBarPane progressBar = extensionPane.getProgressBar();
    assertEquals(66, progressBar.getPercent());
    assertEquals("Conflict between [@@ -1,1 +1,1 @@] and [@@ -1,1 +1,1 @@]", progressBar.getMessage());
    ExtensionProgressPane progressPane = extensionPane.openProgressSection();
    WebElement jobLogLabel = progressPane.getJobLogLabel();
    assertEquals("INSTALL LOG".toLowerCase(), jobLogLabel.getText().toLowerCase());
    // The job log is collapsed when the job is waiting for user input so we need to expand it before asserting its
    // content (otherwise #getText() returns the empty string because the text is not visible).
    jobLogLabel.click();
    List<LogItemPane> upgradeLog = progressPane.getJobLog();
    LogItemPane lastLogItem = upgradeLog.get(upgradeLog.size() - 1);
    assertEquals("loading", lastLogItem.getLevel());
    assertEquals(progressBar.getMessage(), lastLogItem.getMessage());
    MergeConflictPane mergeConflictPane = progressPane.getMergeConflict();
    ChangesPane changesPane = mergeConflictPane.getChanges();
    assertEquals(Arrays.asList("Page properties", "XWiki.WikiMacroClass[0]"), changesPane.getChangedEntities());
    EntityDiff pagePropertiesDiff = changesPane.getEntityDiff("Page properties");
    assertEquals(Arrays.asList("Parent", "Content"), pagePropertiesDiff.getPropertyNames());
    assertFalse(pagePropertiesDiff.getDiff("Content").isEmpty());
    EntityDiff macroDiff = changesPane.getEntityDiff("XWiki.WikiMacroClass[0]");
    assertEquals(Arrays.asList("Macro description"), macroDiff.getPropertyNames());
    assertEquals(Arrays.asList("@@ -1,1 +1,1 @@", "-<del>Test</del> macro.", "+<ins>A</ins> <ins>cool </ins>macro."), macroDiff.getDiff("Macro description"));
    mergeConflictPane.getFromVersionSelect().selectByVisibleText("Previous version");
    mergeConflictPane.getToVersionSelect().selectByVisibleText("Current version");
    mergeConflictPane = mergeConflictPane.clickShowChanges();
    changesPane = mergeConflictPane.getChanges();
    List<String> expectedDiff = new ArrayList<>();
    expectedDiff.add("@@ -1,9 +1,9 @@");
    expectedDiff.add("-= Usage =");
    expectedDiff.add("+=<ins>=</ins> Usage =<ins>=</ins>");
    expectedDiff.add(" ");
    expectedDiff.add("-{{code}}");
    expectedDiff.add("+{{code<ins> language=\"none\"</ins>}}");
    expectedDiff.add(" {{alice/}}");
    expectedDiff.add(" {{/code}}");
    expectedDiff.add(" ");
    expectedDiff.add("-= <del>Res</del>u<del>l</del>t =");
    expectedDiff.add("+=<ins>=</ins> <ins>O</ins>ut<ins>put</ins> =<ins>=</ins>");
    expectedDiff.add(" ");
    expectedDiff.add(" {{alice/}}");
    assertEquals(expectedDiff, changesPane.getEntityDiff("Page properties").getDiff("Content"));
    assertEquals(1, changesPane.getDiffSummary().toggleObjectsDetails().getModifiedObjects().size());
    assertEquals(Arrays.asList("@@ -1,1 +1,1 @@", "-Alice says hello!", "+<ins>{{info}}</ins>Alice says hello!<ins>{{/info}}</ins>"), changesPane.getEntityDiff("XWiki.WikiMacroClass[0]").getDiff("Macro code"));
    // Finish the merge.
    mergeConflictPane.getVersionToKeepSelect().selectByValue("NEXT");
    // FIXME: We get the extension pane from the search results because it is reloaded when we compare the versions.
    extensionPane = searchResults.getExtension(0).confirm();
    assertEquals("installed", extensionPane.getStatus());
    assertNull(extensionPane.getProgressBar());
    upgradeLog = extensionPane.openProgressSection().getJobLog();
    lastLogItem = upgradeLog.get(upgradeLog.size() - 1);
    assertEquals("info", lastLogItem.getLevel());
    assertEquals("Finished job of type [install] with identifier " + "[extension/action/alice-xar-extension/wiki:xwiki]", lastLogItem.getMessage());
    // Check the merge result.
    ViewPage mergedPage = getUtil().gotoPage("ExtensionTest", "Alice");
    assertEquals("Alice Wiki Macro (upgraded)", mergedPage.getDocumentTitle());
}
Also used : ExtensionAdministrationPage(org.xwiki.extension.test.po.ExtensionAdministrationPage) HashMap(java.util.HashMap) ArrayList(java.util.ArrayList) TestExtension(org.xwiki.repository.test.TestExtension) ExtensionId(org.xwiki.extension.ExtensionId) ViewPage(org.xwiki.test.ui.po.ViewPage) ExtensionPane(org.xwiki.extension.test.po.ExtensionPane) ProgressBarPane(org.xwiki.extension.test.po.ProgressBarPane) WebElement(org.openqa.selenium.WebElement) EntityDiff(org.xwiki.test.ui.po.diff.EntityDiff) LogItemPane(org.xwiki.extension.test.po.LogItemPane) MergeConflictPane(org.xwiki.extension.test.po.MergeConflictPane) ExtensionProgressPane(org.xwiki.extension.test.po.ExtensionProgressPane) SearchResultsPane(org.xwiki.extension.test.po.SearchResultsPane) ChangesPane(org.xwiki.test.ui.po.ChangesPane) Test(org.junit.Test)

Example 5 with LogItemPane

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

the class ExtensionIT method testUninstall.

/**
 * Tests how an extension is uninstalled.
 */
@Test
public void testUninstall() throws Exception {
    // Setup the extension and its dependencies.
    ExtensionId dependencyId = new ExtensionId("bob-xar-extension", "2.5-milestone-2");
    getRepositoryTestUtils().addExtension(getRepositoryTestUtils().getTestExtension(dependencyId, "xar"));
    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())));
    getRepositoryTestUtils().addExtension(extension);
    // Install the extensions.
    getExtensionTestUtils().install(extensionId);
    // Check if the installed pages are present.
    assertTrue(getUtil().pageExists("ExtensionTest", "Alice"));
    assertTrue(getUtil().pageExists("ExtensionTest", "Bob"));
    // Uninstall the dependency.
    ExtensionAdministrationPage adminPage = ExtensionAdministrationPage.gotoInstalledExtensions();
    ExtensionPane extensionPane = adminPage.getSearchBar().clickAdvancedSearch().search(dependencyId).getExtension(0);
    extensionPane = extensionPane.uninstall();
    // Check the uninstall plan. Both extensions should be included.
    List<DependencyPane> uninstallPlan = extensionPane.openProgressSection().getJobPlan();
    assertEquals(2, uninstallPlan.size());
    assertEquals(extensionId, uninstallPlan.get(0).getId());
    assertEquals("installed", uninstallPlan.get(0).getStatus());
    assertEquals("Installed", uninstallPlan.get(0).getStatusMessage());
    assertEquals(dependencyId, uninstallPlan.get(1).getId());
    assertEquals("installed-dependency", uninstallPlan.get(1).getStatus());
    assertEquals("Installed as dependency", uninstallPlan.get(1).getStatusMessage());
    // Check the confirmation to delete the unused wiki pages.
    extensionPane = extensionPane.confirm();
    UnusedPagesPane unusedPages = extensionPane.openProgressSection().getUnusedPages();
    assertTrue(unusedPages.contains("ExtensionTest", "Alice"));
    assertTrue(unusedPages.contains("ExtensionTest", "Bob"));
    // Finish the uninstall and check the log.
    extensionPane = extensionPane.confirm();
    List<LogItemPane> log = extensionPane.openProgressSection().getJobLog();
    assertTrue(log.size() > 2);
    assertEquals("info", log.get(2).getLevel());
    assertEquals("Resolving extension [bob-xar-extension 2.5-milestone-2] from namespace [Home]", log.get(2).getMessage());
    assertEquals("info", log.get(log.size() - 1).getLevel());
    assertEquals("Finished job of type [uninstall] with identifier " + "[extension/action/bob-xar-extension/wiki:xwiki]", log.get(log.size() - 1).getMessage());
    // Check if the uninstalled pages have been deleted.
    assertFalse(getUtil().pageExists("ExtensionTest", "Alice"));
    assertFalse(getUtil().pageExists("ExtensionTest", "Bob"));
    // Install both extension again and uninstall only the one with the dependency.
    getExtensionTestUtils().install(extensionId);
    adminPage = ExtensionAdministrationPage.gotoInstalledExtensions();
    extensionPane = adminPage.getSearchBar().clickAdvancedSearch().search(extensionId).getExtension(0);
    extensionPane = extensionPane.uninstall();
    // Check the uninstall plan. Only one extension should be included.
    uninstallPlan = extensionPane.openProgressSection().getJobPlan();
    assertEquals(1, uninstallPlan.size());
    assertEquals(extensionId, uninstallPlan.get(0).getId());
    // Check the confirmation to delete the unused wiki pages.
    extensionPane = extensionPane.confirm();
    unusedPages = extensionPane.openProgressSection().getUnusedPages();
    assertTrue(unusedPages.contains("ExtensionTest", "Alice"));
    assertFalse(unusedPages.contains("ExtensionTest", "Bob"));
    // Finish the uninstall and check the log.
    log = extensionPane.confirm().openProgressSection().getJobLog();
    assertTrue(log.size() > 2);
    assertEquals("info", log.get(2).getLevel());
    assertEquals("Resolving extension [alice-xar-extension 1.3] from namespace [Home]", log.get(2).getMessage());
    assertEquals("info", log.get(log.size() - 1).getLevel());
    assertEquals("Finished job of type [uninstall] with identifier " + "[extension/action/alice-xar-extension/wiki:xwiki]", log.get(log.size() - 1).getMessage());
    // Check if the uninstalled pages have been deleted.
    assertFalse(getUtil().pageExists("ExtensionTest", "Alice"));
    assertTrue(getUtil().pageExists("ExtensionTest", "Bob"));
    // Check the list of installed extensions. It should contain only the second extension.
    adminPage = ExtensionAdministrationPage.gotoInstalledExtensions();
    SearchResultsPane searchResults = adminPage.getSearchBar().search("alice");
    assertEquals(0, searchResults.getDisplayedResultsCount());
    assertNotNull(searchResults.getNoResultsMessage());
    searchResults = new SimpleSearchPane().search("bob");
    assertEquals(1, searchResults.getDisplayedResultsCount());
    extensionPane = searchResults.getExtension(0);
    assertEquals("installed-dependency", extensionPane.getStatus());
    assertEquals(dependencyId, extensionPane.getId());
}
Also used : ExtensionAdministrationPage(org.xwiki.extension.test.po.ExtensionAdministrationPage) 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) SimpleSearchPane(org.xwiki.extension.test.po.SimpleSearchPane) LogItemPane(org.xwiki.extension.test.po.LogItemPane) DefaultVersionConstraint(org.xwiki.extension.version.internal.DefaultVersionConstraint) SearchResultsPane(org.xwiki.extension.test.po.SearchResultsPane) DefaultExtensionDependency(org.xwiki.extension.DefaultExtensionDependency) UnusedPagesPane(org.xwiki.extension.test.po.UnusedPagesPane) Test(org.junit.Test)

Aggregations

Test (org.junit.Test)5 ExtensionId (org.xwiki.extension.ExtensionId)5 ExtensionAdministrationPage (org.xwiki.extension.test.po.ExtensionAdministrationPage)5 ExtensionPane (org.xwiki.extension.test.po.ExtensionPane)5 LogItemPane (org.xwiki.extension.test.po.LogItemPane)5 TestExtension (org.xwiki.repository.test.TestExtension)5 DependencyPane (org.xwiki.extension.test.po.DependencyPane)4 ViewPage (org.xwiki.test.ui.po.ViewPage)4 SearchResultsPane (org.xwiki.extension.test.po.SearchResultsPane)3 DefaultExtensionDependency (org.xwiki.extension.DefaultExtensionDependency)2 SimpleSearchPane (org.xwiki.extension.test.po.SimpleSearchPane)2 DefaultVersionConstraint (org.xwiki.extension.version.internal.DefaultVersionConstraint)2 ArrayList (java.util.ArrayList)1 HashMap (java.util.HashMap)1 WebElement (org.openqa.selenium.WebElement)1 ExtensionProgressPane (org.xwiki.extension.test.po.ExtensionProgressPane)1 MergeConflictPane (org.xwiki.extension.test.po.MergeConflictPane)1 ProgressBarPane (org.xwiki.extension.test.po.ProgressBarPane)1 UnusedPagesPane (org.xwiki.extension.test.po.UnusedPagesPane)1 ChangesPane (org.xwiki.test.ui.po.ChangesPane)1