Skip to content

Commit

Permalink
Merge pull request #536 from agoncal/FORGE-2256
Browse files Browse the repository at this point in the history
FORGE-2256: Strengthen test harness on JPA Commands
  • Loading branch information
gastaldi committed Feb 20, 2015
2 parents e1e2e7c + 06548a5 commit a4421ae
Show file tree
Hide file tree
Showing 6 changed files with 197 additions and 39 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ public UICommandMetadata getMetadata(UIContext context)
{
return Metadata.forCommand(getClass()).name("JPA: New " + getType())
.description("Creates a new " + getType())
.category(Categories.create("JPA"));
.category(Categories.create("Java EE", "JPA"));
}

@Override
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
package org.jboss.forge.addon.javaee.jpa;

import static org.hamcrest.CoreMatchers.instanceOf;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.CoreMatchers.not;
import static org.hamcrest.CoreMatchers.*;
import static org.junit.Assert.*;

import java.io.FileNotFoundException;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

Expand All @@ -21,6 +21,7 @@
import org.jboss.forge.addon.projects.Project;
import org.jboss.forge.addon.resource.visit.VisitContext;
import org.jboss.forge.addon.ui.controller.CommandController;
import org.jboss.forge.addon.ui.metadata.UICommandMetadata;
import org.jboss.forge.addon.ui.result.Failed;
import org.jboss.forge.addon.ui.result.Result;
import org.jboss.forge.addon.ui.test.UITestHarness;
Expand All @@ -33,6 +34,7 @@
import org.jboss.forge.roaster.model.source.JavaClassSource;
import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;

Expand Down Expand Up @@ -64,17 +66,44 @@ public static ForgeArchive getDeployment()
}

@Inject
private UITestHarness testHarness;
private UITestHarness uiTestHarness;

@Inject
private ProjectHelper projectHelper;

private Project project;

@Before
public void setUp()
{
project = projectHelper.createJavaLibraryProject();
projectHelper.installJPA_2_0(project);
}

@Test
public void checkCommandMetadata() throws Exception
{
CommandController controller = uiTestHarness.createCommandController(NewEmbeddableCommand.class,
project.getRoot());
controller.initialize();
// Checks the command metadata
assertTrue(controller.getCommand() instanceof NewEmbeddableCommand);
UICommandMetadata metadata = controller.getMetadata();
assertEquals("JPA: New Embeddable", metadata.getName());
assertEquals("Java EE", metadata.getCategory().getName());
assertEquals("JPA", metadata.getCategory().getSubCategory().getName());
assertEquals(3, controller.getInputs().size());
assertTrue(controller.hasInput("targetLocation")); // TODO this should be false, fix the NewEmbeddableCommand
assertTrue(controller.hasInput("named"));
assertTrue(controller.hasInput("targetPackage"));
assertTrue(controller.getValueFor("targetPackage").toString().endsWith(".model"));
}

@Test
public void testCreateEmbeddable() throws Exception
{
Project project = projectHelper.createJavaLibraryProject();
projectHelper.installJPA_2_0(project);
CommandController controller = testHarness.createCommandController(NewEmbeddableCommand.class, project.getRoot());
CommandController controller = uiTestHarness.createCommandController(NewEmbeddableCommand.class,
project.getRoot());
controller.initialize();
controller.setValueFor("named", "MyEmbeddable");
Assert.assertTrue(controller.isValid());
Expand Down Expand Up @@ -105,10 +134,17 @@ public void visit(VisitContext context, JavaResource resource)
}
});

Assert.assertEquals(1, embeddables.size());
assertEquals(1, embeddables.size());
JavaClass<?> embeddableEntity = embeddables.get(0);
Assert.assertTrue(embeddableEntity.hasAnnotation(Embeddable.class));
Assert.assertTrue(embeddableEntity.getName().equals("MyEmbeddable"));
assertEquals(0, embeddableEntity.getSyntaxErrors().size());
assertTrue(embeddableEntity.hasAnnotation(Embeddable.class));
assertTrue(embeddableEntity.hasInterface(Serializable.class));
assertEquals(org.jboss.forge.roaster.model.Visibility.PUBLIC, embeddableEntity.getVisibility());
assertEquals(0, embeddableEntity.getFields().size());
assertEquals(0, embeddableEntity.getMethods().size());
assertEquals(0, embeddableEntity.getMembers().size());
assertEquals(0, embeddableEntity.getProperties().size());
assertFalse(embeddableEntity.hasJavaDoc());
assertTrue(embeddableEntity.getName().equals("MyEmbeddable"));
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@

import static org.hamcrest.CoreMatchers.instanceOf;
import static org.hamcrest.CoreMatchers.not;
import static org.junit.Assert.*;

import java.util.List;
import java.util.concurrent.TimeUnit;
Expand All @@ -21,15 +22,19 @@
import org.jboss.forge.addon.javaee.jpa.ui.NewEntityCommand;
import org.jboss.forge.addon.projects.Project;
import org.jboss.forge.addon.shell.test.ShellTest;
import org.jboss.forge.addon.ui.controller.CommandController;
import org.jboss.forge.addon.ui.metadata.UICommandMetadata;
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.AddonDependency;
import org.jboss.forge.arquillian.Dependencies;
import org.jboss.forge.arquillian.archive.ForgeArchive;
import org.jboss.forge.furnace.repositories.AddonDependencyEntry;
import org.jboss.forge.roaster.model.JavaClass;
import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;

Expand All @@ -44,6 +49,8 @@ public class NewEntityCommandShellTest
{
@Deployment
@Dependencies({
@AddonDependency(name = "org.jboss.forge.addon:ui"),
@AddonDependency(name = "org.jboss.forge.addon:ui-test-harness"),
@AddonDependency(name = "org.jboss.forge.addon:shell-test-harness"),
@AddonDependency(name = "org.jboss.forge.addon:maven"),
@AddonDependency(name = "org.jboss.forge.addon:resources"),
Expand All @@ -59,7 +66,9 @@ public static ForgeArchive getDeployment()
AddonDependencyEntry.create("org.jboss.forge.furnace.container:cdi"),
AddonDependencyEntry.create("org.jboss.forge.addon:javaee"),
AddonDependencyEntry.create("org.jboss.forge.addon:shell-test-harness"),
AddonDependencyEntry.create("org.jboss.forge.addon:resources")
AddonDependencyEntry.create("org.jboss.forge.addon:resources"),
AddonDependencyEntry.create("org.jboss.forge.addon:ui"),
AddonDependencyEntry.create("org.jboss.forge.addon:ui-test-harness")
);

return archive;
Expand All @@ -68,16 +77,46 @@ public static ForgeArchive getDeployment()
@Inject
private ShellTest test;

@Inject
private UITestHarness uiTestHarness;

@Inject
private ProjectHelper projectHelper;

private Project project;

@Before
public void setUp()
{
project = projectHelper.createJavaLibraryProject();
projectHelper.installJPA_2_0(project);
}

@Test
public void checkCommandMetadata() throws Exception
{
CommandController controller = uiTestHarness.createCommandController(NewEntityCommand.class, project.getRoot());
controller.initialize();
// Checks the command metadata
assertTrue(controller.getCommand() instanceof NewEntityCommand);
UICommandMetadata metadata = controller.getMetadata();
assertEquals("JPA: New Entity", metadata.getName());
assertEquals("Java EE", metadata.getCategory().getName());
assertEquals("JPA", metadata.getCategory().getSubCategory().getName());
assertFalse("Project is created, shouldn't have targetLocation", controller.hasInput("targetLocation"));
assertEquals(4, controller.getInputs().size());
assertTrue(controller.hasInput("named"));
assertTrue(controller.hasInput("targetPackage"));
assertTrue(controller.hasInput("idStrategy"));
assertTrue(controller.hasInput("tableName"));
assertTrue(controller.getValueFor("targetPackage").toString().endsWith(".model"));
}

@SuppressWarnings("unchecked")
@Test
public void testContainerInjection() throws Exception
{
Project project = projectHelper.createJavaLibraryProject();
test.getShell().setCurrentResource(project.getRoot());
projectHelper.installJPA_2_0(project);
Result result = test
.execute(("jpa-new-entity --named Customer --targetPackage org.lincoln --idStrategy AUTO --tableName CUSTOMER_TABLE"),
10, TimeUnit.SECONDS);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,16 +7,10 @@
package org.jboss.forge.addon.javaee.jpa;

import static org.hamcrest.CoreMatchers.instanceOf;
import static org.junit.Assert.assertThat;
import static org.junit.Assert.*;

import javax.inject.Inject;
import javax.persistence.Column;
import javax.persistence.Embedded;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.FetchType;
import javax.persistence.OneToMany;
import javax.persistence.Transient;
import javax.persistence.*;

import org.jboss.arquillian.container.test.api.Deployment;
import org.jboss.arquillian.junit.Arquillian;
Expand All @@ -26,7 +20,9 @@
import org.jboss.forge.addon.parser.java.beans.FieldOperations;
import org.jboss.forge.addon.parser.java.resources.JavaResource;
import org.jboss.forge.addon.projects.Project;
import org.jboss.forge.addon.ui.controller.CommandController;
import org.jboss.forge.addon.ui.controller.WizardCommandController;
import org.jboss.forge.addon.ui.metadata.UICommandMetadata;
import org.jboss.forge.addon.ui.result.CompositeResult;
import org.jboss.forge.addon.ui.result.Failed;
import org.jboss.forge.addon.ui.result.Result;
Expand All @@ -50,6 +46,7 @@ public class NewFieldWizardTest

@Deployment
@Dependencies({
@AddonDependency(name = "org.jboss.forge.addon:ui"),
@AddonDependency(name = "org.jboss.forge.addon:ui-test-harness"),
@AddonDependency(name = "org.jboss.forge.addon:javaee"),
@AddonDependency(name = "org.jboss.forge.addon:maven")
Expand All @@ -64,6 +61,7 @@ public static ForgeArchive getDeployment()
AddonDependencyEntry.create("org.jboss.forge.furnace.container:cdi"),
AddonDependencyEntry.create("org.jboss.forge.addon:projects"),
AddonDependencyEntry.create("org.jboss.forge.addon:javaee"),
AddonDependencyEntry.create("org.jboss.forge.addon:ui"),
AddonDependencyEntry.create("org.jboss.forge.addon:ui-test-harness"),
AddonDependencyEntry.create("org.jboss.forge.addon:maven")
);
Expand All @@ -75,18 +73,47 @@ public static ForgeArchive getDeployment()
@Inject
private UITestHarness uiTestHarness;

private Project project;

@Inject
private FieldOperations beanOperations;

private Project project;

@Before
public void setUp()
{
project = projectHelper.createJavaLibraryProject();
projectHelper.installJPA_2_0(project);
}

@Test
public void checkCommandMetadata() throws Exception
{
Project project = projectHelper.createJavaLibraryProject();
projectHelper.installJPA_2_0(project);
CommandController controller = uiTestHarness.createCommandController(NewFieldWizard.class, project.getRoot());
controller.initialize();
// Checks the command metadata
assertTrue(controller.getCommand() instanceof NewFieldWizard);
UICommandMetadata metadata = controller.getMetadata();
assertEquals("JPA: New Field", metadata.getName());
assertEquals("Java EE", metadata.getCategory().getName());
assertEquals("JPA", metadata.getCategory().getSubCategory().getName());
assertEquals(13, controller.getInputs().size());
assertTrue(controller.hasInput("named"));
assertTrue(controller.hasInput("targetEntity"));
assertTrue(controller.hasInput("not-nullable"));
assertTrue(controller.hasInput("not-updatable"));
assertTrue(controller.hasInput("not-insertable"));
assertTrue(controller.hasInput("type"));
assertTrue(controller.hasInput("relationshipType"));
assertTrue(controller.hasInput("lob"));
assertTrue(controller.hasInput("length"));
assertTrue(controller.hasInput("temporalType"));
assertTrue(controller.hasInput("columnName"));
assertTrue(controller.hasInput("enumType"));
assertTrue(controller.hasInput("transient"));
}

@Test
public void testNewField() throws Exception
{
Expand Down Expand Up @@ -150,7 +177,6 @@ public void testNewFieldWithNotNullableInsertableUpdatableTrue() throws Exceptio
Assert.assertEquals("false", field.getAnnotation(Column.class).getLiteralValue("insertable"));
}


@Test
public void testNewFieldWithNotNullableInsertableUpdatableFalse() throws Exception
{
Expand Down Expand Up @@ -271,7 +297,7 @@ public void testNewOneToManyField() throws Exception
Assert.assertTrue(field.hasAnnotation(OneToMany.class));
Assert.assertEquals("Set", field.getType().getName());
}

@Test
public void testEmbeddedRelationship() throws Exception
{
Expand Down
Loading

0 comments on commit a4421ae

Please sign in to comment.