/* * Copyright (C) 2014 Red Hat, Inc. and/or its affiliates. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.jboss.errai.forge.facet.ui.command; import org.jboss.errai.forge.facet.java.GwtMockitoRunnerFacet; import org.jboss.errai.forge.facet.ui.command.res.SimpleTestableClass; import org.jboss.errai.forge.facet.ui.command.res.UIExecutionContextMock; import org.jboss.errai.forge.facet.ui.command.res.UIInputMock; import org.jboss.errai.forge.test.base.ForgeTest; import org.jboss.errai.forge.ui.command.CreateTestCommand; import org.jboss.errai.forge.ui.command.CreateUnitTest; import org.jboss.forge.addon.dependencies.Dependency; import org.jboss.forge.addon.dependencies.builder.DependencyBuilder; import org.jboss.forge.addon.maven.projects.facets.MavenDependencyFacet; import org.jboss.forge.addon.projects.Project; import org.jboss.forge.addon.ui.context.UIContext; import org.jboss.forge.addon.ui.context.UIContextProvider; import org.junit.Before; import org.junit.Test; import java.io.File; import java.util.List; import java.util.Set; import static org.junit.Assert.*; public class UnitTestCommandTest extends ForgeTest { private CreateTestCommand testableInstance; private Project project; private UIExecutionContextMock context; private UIInputMock<String> clazzNameInput; private UIInputMock<String> clazzInput; @Before public void setup() { project = initializeJavaProject(); clazzInput = new UIInputMock<String>(); clazzNameInput = new UIInputMock<String>(); final String clazzName = "org.jboss.errai.forge.test.SimpleTestClass"; clazzNameInput.setValue(clazzName); clazzInput.setValue(SimpleTestableClass.class.getName()); testableInstance = new CreateUnitTest(null, facetFactory, clazzInput, clazzNameInput) { @Override protected Project getSelectedProject(UIContext context) { return project; } @Override protected Project getSelectedProject(UIContextProvider contextProvider) { return project; } }; context = new UIExecutionContextMock(); } @Test public void checkGeneratedTestClass() throws Exception { testableInstance.execute(context); final File testFile = new File(project.getRootDirectory().getUnderlyingResourceObject(), "src/test/java/org/jboss/errai/forge/test/SimpleTestClass.java"); assertResourceAndFileContentsSame("org/jboss/errai/forge/test/SimpleTestClass.java", testFile); } @Test public void checkGwtRunnerFacetIsAdded() throws Exception { assertFalse(project.hasFacet(GwtMockitoRunnerFacet.class)); testableInstance.execute(context); assertTrue(project.hasFacet(GwtMockitoRunnerFacet.class)); } @Test public void checkTestPackageIsBlacklistedInGwtRunnerFacet() throws Exception { checkGwtRunnerFacetIsAdded(); final GwtMockitoRunnerFacet runnerFacet = project.getFacet(GwtMockitoRunnerFacet.class); final Set<String> blacklistedPackages = runnerFacet.getBlacklistedPackages(); assertEquals(2, blacklistedPackages.size()); assertTrue(blacklistedPackages.contains("com.google.gwtmockito")); assertTrue(blacklistedPackages.contains("org.jboss.errai.forge.test")); } @Test public void checkTestDependenciesAdded() throws Exception { final MavenDependencyFacet mavenDependencyFacet = project.getFacet(MavenDependencyFacet.class); final DependencyBuilder mockitoDependency = DependencyBuilder.create("com.google.gwt.gwtmockito:gwtmockito"); final DependencyBuilder junitDependency = DependencyBuilder.create("junit:junit"); assertFalse(mavenDependencyFacet.hasDirectDependency(mockitoDependency)); assertFalse(mavenDependencyFacet.hasDirectDependency(junitDependency)); testableInstance.execute(context); assertTrue(mavenDependencyFacet.hasDirectDependency(mockitoDependency)); assertTrue(mavenDependencyFacet.hasDirectDependency(junitDependency)); } @Test public void checkTestDependenciesOnlyAddedOnce() throws Exception { checkTestDependenciesAdded(); final MavenDependencyFacet mavenDependencyFacet = project.getFacet(MavenDependencyFacet.class); final List<Dependency> dependenciesAfterSingleCommand = mavenDependencyFacet.getDependencies(); testableInstance.execute(context); final List<Dependency> dependenciesAfterSecondCommand = mavenDependencyFacet.getDependencies(); assertEquals(dependenciesAfterSingleCommand, dependenciesAfterSecondCommand); } }