Skip to content

Commit

Permalink
FORGE-2729: Introduced WizardController.getWizardStepsMetadata (#608)
Browse files Browse the repository at this point in the history
* FORGE-2729: Introduced WizardController.getWizardStepsMetadata

* FORGE-2729: Avoid empty wizard steps
  • Loading branch information
gastaldi committed Mar 2, 2017
1 parent 8652948 commit 075778c
Show file tree
Hide file tree
Showing 5 changed files with 67 additions and 26 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@
*/
package org.jboss.forge.addon.ui.controller;

import java.util.List;

import org.jboss.forge.addon.ui.command.UICommand;
import org.jboss.forge.addon.ui.metadata.UICommandMetadata;
import org.jboss.forge.addon.ui.wizard.UIWizard;
Expand Down Expand Up @@ -53,4 +55,10 @@ public interface WizardCommandController extends CommandController
* navigation is not possible
*/
WizardCommandController previous() throws Exception;

/**
* Return the wizard steps {@link UICommandMetadata} returned from
* {@link UIWizard#getMetadata(org.jboss.forge.addon.ui.context.UIContext)}
*/
List<UICommandMetadata> getWizardStepsMetadata();
}
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,12 @@ public WizardCommandController previous() throws Exception
return this;
}

@Override
public List<UICommandMetadata> getWizardStepsMetadata()
{
return controller.getWizardStepsMetadata();
}

@Override
public boolean isInitialized()
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -478,6 +478,29 @@ public WizardCommandController previous() throws IllegalStateException
return this;
}

@Override
public List<UICommandMetadata> getWizardStepsMetadata()
{
List<UICommandMetadata> stepsMetadata = new ArrayList<>();
refreshFlow();
if (flow.size() == 1)
{
stepsMetadata.add(flow.get(0).controller.getMetadata());
}
else
{
for (WizardStepEntry entry : flow)
{
// Entries without inputs are not shown
if (!entry.controller.getInputs().isEmpty())
{
stepsMetadata.add(entry.controller.getMetadata());
}
}
}
return stepsMetadata;
}

protected int getFlowPointer()
{
return flowPointer;
Expand Down
7 changes: 7 additions & 0 deletions ui/tests/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,13 @@
<classifier>forge-addon</classifier>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.jboss.forge.addon</groupId>
<artifactId>assertj</artifactId>
<classifier>forge-addon</classifier>
<scope>test</scope>
</dependency>

<dependency>
<groupId>org.jboss.forge.addon</groupId>
<artifactId>resources</artifactId>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
*/
package org.jboss.forge.addon.ui.controller;

import static org.assertj.core.api.Assertions.assertThat;
import static org.hamcrest.CoreMatchers.instanceOf;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.CoreMatchers.not;
Expand All @@ -14,7 +15,6 @@

import javax.inject.Inject;

import org.jboss.arquillian.container.test.api.Deployment;
import org.jboss.arquillian.junit.Arquillian;
import org.jboss.forge.addon.ui.example.wizards.ChangesInputOneWizard;
import org.jboss.forge.addon.ui.example.wizards.ExampleStepOne;
Expand All @@ -29,11 +29,6 @@
import org.jboss.forge.addon.ui.result.Failed;
import org.jboss.forge.addon.ui.result.Result;
import org.jboss.forge.addon.ui.test.UITestHarness;
import org.jboss.forge.arquillian.AddonDeployment;
import org.jboss.forge.arquillian.AddonDeployments;
import org.jboss.forge.arquillian.archive.AddonArchive;
import org.jboss.forge.furnace.repositories.AddonDependencyEntry;
import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
Expand All @@ -45,26 +40,6 @@
@RunWith(Arquillian.class)
public class WizardCommandControllerTest
{
@Deployment
@AddonDeployments({
@AddonDeployment(name = "org.jboss.forge.addon:ui-test-harness"),
@AddonDeployment(name = "org.jboss.forge.addon:ui-example"),
@AddonDeployment(name = "org.jboss.forge.addon:ui"),
@AddonDeployment(name = "org.jboss.forge.furnace.container:cdi") })
public static AddonArchive getDeployment()
{
AddonArchive archive = ShrinkWrap
.create(AddonArchive.class)
.addBeansXML()
.addAsAddonDependencies(
AddonDependencyEntry.create("org.jboss.forge.addon:ui-test-harness"),
AddonDependencyEntry.create("org.jboss.forge.addon:ui-example"),
AddonDependencyEntry.create("org.jboss.forge.addon:ui"),
AddonDependencyEntry.create("org.jboss.forge.furnace.container:cdi"));

return archive;
}

@Inject
UITestHarness testHarness;

Expand Down Expand Up @@ -260,4 +235,26 @@ public void testAggregateWizard() throws Exception
Assert.assertEquals("Goodbye, Gastaldi", nestedResult.getResults().get(1).getMessage());
}
}

@Test
public void testStepsMetadata() throws Exception
{
try (WizardCommandController controller = testHarness.createWizardController(ExampleFlow.class))
{
controller.initialize();
assertThat(controller.getWizardStepsMetadata()).hasSize(1);
controller.setValueFor("name", "Forge");
controller.setValueFor("number", 42);
controller.next().initialize();
assertThat(controller.getWizardStepsMetadata()).hasSize(2);
controller.setValueFor("flowOneInput", "Value");
controller.next().initialize();
assertThat(controller.getWizardStepsMetadata()).hasSize(3);
controller.setValueFor("flowOneOneInput", "Value Two");
controller.next().initialize();
assertThat(controller.getWizardStepsMetadata()).hasSize(4);
controller.setValueFor("flowTwoInput", "Value Three");
}
}

}

0 comments on commit 075778c

Please sign in to comment.