/*******************************************************************************
* 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.scope.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.jboss.tools.cdi.reddeer.validators.ValidationProblem;
import org.junit.Test;
/**
* Test operates on quick fixes used for validation errors of CDI Scope component
*
* @author Jaroslav Jankovic
*/
public class ScopeValidationQuickFixTemplate extends CDITestBase {
protected IValidationProvider validationProvider;
protected String CDIVersion;
public IValidationProvider validationProvider() {
return validationProvider;
}
// https://issues.jboss.org/browse/JBIDE-7633
//cdi1.0
//cdi1.1+ should not fail
@Test
public void testTargetAnnotation() {
String className = "Scope1";
beansHelper.createScope(className, getPackageName(), false, false, false,false);
editResourceUtil.replaceInEditor(className+".java","@Target({ TYPE, METHOD, FIELD })",
"@Target({ TYPE, FIELD })");
ValidationProblem problem = validationProvider.getValidationProblem(ValidationType.TARGET);
List<Problem> problems= validationHelper.findProblems(problem);
if(CDIVersion.equals("1.0")){
assertEquals(1,problems.size());
validationHelper.openQuickfix(problem);
editResourceUtil.replaceInEditor(className+".java","@Target({TYPE, METHOD, FIELD})", "");
problem = validationProvider.getValidationProblem(ValidationType.NO_TARGET);
problems= validationHelper.findProblems(problem);
assertEquals(1,problems.size());
validationHelper.openQuickfix(problem);
} else {
assertEquals(0,problems.size());
editResourceUtil.replaceInEditor(className+".java","@Target({ TYPE, FIELD })", "");
problem = validationProvider.getValidationProblem(ValidationType.NO_TARGET);
problems= validationHelper.findProblems(problem);
assertEquals(0,problems.size());
}
}
// https://issues.jboss.org/browse/JBIDE-7631
// https://issues.jboss.org/browse/JBIDE-19636
@Test
public void testRetentionAnnotation() {
String className = "Scope2";
beansHelper.createScope(className, getPackageName(), false, false, false,false);
editResourceUtil.replaceInEditor(className+".java","@Retention(RUNTIME)", "@Retention(CLASS)");
ValidationProblem problem = validationProvider.getValidationProblem(ValidationType.RETENTION);
List<Problem> problems= validationHelper.findProblems(problem);
assertEquals(1,problems.size());
validationHelper.openQuickfix(problem);
editResourceUtil.replaceInEditor(className+".java","@Retention(RUNTIME)", "");
problem = validationProvider.getValidationProblem(ValidationType.NO_RETENTION);
problems= validationHelper.findProblems(problem);
assertEquals(1,problems.size());
validationHelper.openQuickfix(problem);
}
}