/*******************************************************************************
* Copyright (c) 2010 Red Hat, Inc.
* Distributed under license by Red Hat, Inc. All rights reserved.
* This program is made available under the terms of the
* Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Red Hat, Inc. - initial API and implementation
******************************************************************************/
package org.jboss.tools.cdi.bot.test.beans.bean.template;
import static org.junit.Assert.assertEquals;
import java.util.List;
import org.jboss.reddeer.eclipse.ui.problems.Problem;
import org.jboss.tools.cdi.bot.test.CDITestBase;
import org.jboss.tools.cdi.reddeer.annotation.ValidationType;
import org.jboss.tools.cdi.reddeer.validators.IValidationProvider;
import org.junit.Test;
/**
* Test operates on quick fixes used for validation errors of CDI bean component
*
* @author Jaroslav Jankovic
*/
public class BeanValidationQuickFixTemplate extends CDITestBase {
protected IValidationProvider validationProvider;
// https://issues.jboss.org/browse/JBIDE-8550
@Test
public void testSerializableManagedBean() {
String className = "ManagedBean";
createBean(className,"resources/quickfix/bean/SerializableBean.java.cdi");
List<Problem> problems= validationHelper.findProblems(validationProvider.getValidationProblem(ValidationType.SERIALIZABLE));
assertEquals(1,problems.size());
validationHelper.openQuickfix(validationProvider.getValidationProblem(ValidationType.SERIALIZABLE));
}
// https://issues.jboss.org/browse/JBIDE-7664
@Test
public void testConstructor() {
String className = "Bean1";
createBean(className,"resources/quickfix/bean/ConstructorWithParam.java.cdi");
List<Problem> problems= validationHelper.findProblems(validationProvider.getValidationProblem(ValidationType.CONSTRUCTOR_DISPOSES));
assertEquals(2,problems.size());
validationHelper.openQuickfix(validationProvider.getValidationProblem(ValidationType.CONSTRUCTOR_DISPOSES));
editResourceUtil.replaceClassContentByResource(className+".java",
readFile("resources/quickfix/bean/ConstructorWithParam.java.cdi"), false);
editResourceUtil.replaceInEditor(className+".java", "@Disposes", "@Observes");
editResourceUtil.replaceInEditor(className+".java", "import javax.enterprise.inject.Disposes;",
"import javax.enterprise.event.Observes;");
editResourceUtil.replaceInEditor(className+".java", "BeanComponent", className);
problems= validationHelper.findProblems(validationProvider.getValidationProblem(ValidationType.CONSTRUCTOR_OBSERVES));
assertEquals(2,problems.size());
validationHelper.openQuickfix(validationProvider.getValidationProblem(ValidationType.CONSTRUCTOR_OBSERVES));
}
// https://issues.jboss.org/browse/JBIDE-7665
@Test
public void testProducer() {
String className = "Bean2";
createBean(className,"resources/quickfix/bean/ProducerWithParam.java.cdi");
List<Problem> problems= validationHelper.findProblems(validationProvider.getValidationProblem(ValidationType.PRODUCER_DISPOSES));
assertEquals(2,problems.size());
validationHelper.openQuickfix(validationProvider.getValidationProblem(ValidationType.PRODUCER_DISPOSES),1);
editResourceUtil.replaceClassContentByResource(className+".java",
readFile("resources/quickfix/bean/ProducerWithParam.java.cdi"), false);
editResourceUtil.replaceInEditor(className+".java","BeanComponent", className);
editResourceUtil.replaceInEditor(className+".java","@Disposes", "@Observes");
editResourceUtil.replaceInEditor(className+".java","import javax.enterprise.inject.Disposes;",
"import javax.enterprise.event.Observes;");
problems= validationHelper.findProblems(validationProvider.getValidationProblem(ValidationType.PRODUCER_OBSERVES));
assertEquals(2,problems.size());
validationHelper.openQuickfix(validationProvider.getValidationProblem(ValidationType.PRODUCER_OBSERVES),1);
}
// https://issues.jboss.org/browse/JBIDE-7667
@Test
public void testInjectDisposer() {
String className = "Bean3";
createBean(className,"resources/quickfix/bean/BeanInjectDisposes.java.cdi");
List<Problem> problems= validationHelper.findProblems(validationProvider.getValidationProblem(ValidationType.DISPOSER_INJECT));
assertEquals(2,problems.size());
validationHelper.openQuickfix(validationProvider.getValidationProblem(ValidationType.DISPOSER_INJECT));
}
// https://issues.jboss.org/browse/JBIDE-7667
@Test
public void testInjectObserver() {
String className = "Bean4";
createBean(className,"resources/quickfix/bean/BeanInjectDisposes.java.cdi");
editResourceUtil.replaceInEditor(className+".java","import javax.enterprise.inject.Disposes;",
"import javax.enterprise.event.Observes;");
editResourceUtil.replaceInEditor(className+".java","@Disposes", "@Observes");
List<Problem> problems= validationHelper.findProblems(validationProvider.getValidationProblem(ValidationType.OBSERVER_INJECT));
assertEquals(2,problems.size());
validationHelper.openQuickfix(validationProvider.getValidationProblem(ValidationType.OBSERVER_INJECT),1);
}
// https://issues.jboss.org/browse/JBIDE-7667
@Test
public void testInjectProducer() {
String className = "Bean5";
createBean(className,"resources/quickfix/bean/BeanInjectProducer.java.cdi");
List<Problem> problems= validationHelper.findProblems(validationProvider.getValidationProblem(ValidationType.PRODUCER_INJECT));
assertEquals(1,problems.size());
validationHelper.openQuickfix(validationProvider.getValidationProblem(ValidationType.PRODUCER_INJECT));
}
// https://issues.jboss.org/browse/JBIDE-7668
@Test
public void testObserverWithDisposer() {
String className = "Bean6";
createBean(className,"resources/quickfix/bean/ObserverWithDisposer.java.cdi");
List<Problem> problems= validationHelper.findProblems(validationProvider.getValidationProblem(ValidationType.OBSERVER_DISPOSES));
assertEquals(2,problems.size());
validationHelper.openQuickfix(validationProvider.getValidationProblem(ValidationType.OBSERVER_DISPOSES));
}
private void createBean(String className, String content){
beansHelper.createBean(className, getPackageName(), false, false, false, false, false, false, false, null, null);
editResourceUtil.replaceClassContentByResource(className+".java", readFile(content), false);
editResourceUtil.replaceInEditor(className+".java","BeanComponent", className);
}
}