/******************************************************************************* * 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.qualifier.template; import static org.junit.Assert.assertEquals; import java.util.List; import org.jboss.reddeer.eclipse.jdt.ui.NewAnnotationCreationWizard; import org.jboss.reddeer.eclipse.jdt.ui.NewAnnotationWizardPage; 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 Qualifier component * * @author Jaroslav Jankovic */ public class QualifierValidationQuickFixTemplate extends CDITestBase { protected String CDIVersion; protected IValidationProvider validationProvider; // https://issues.jboss.org/browse/JBIDE-7630 //depends on CDI Version @Test public void testTargetAnnotation() { String className = "Qualifier1"; beansHelper.createQualifier(className, getPackageName(), false, false); editResourceUtil.replaceInEditor(className+".java","@Target({ TYPE, METHOD, PARAMETER, FIELD })", "@Target({ TYPE, FIELD })"); List<Problem> problems= validationHelper.findProblems(validationProvider.getValidationProblem(ValidationType.TARGET)); //depends on CDI Version if(CDIVersion.equals("1.0")){ assertEquals(1,problems.size()); validationHelper.openQuickfix(validationProvider.getValidationProblem(ValidationType.TARGET),1); editResourceUtil.replaceInEditor(className+".java","@Target({TYPE, METHOD, FIELD, PARAMETER})", ""); problems= validationHelper.findProblems(validationProvider.getValidationProblem(ValidationType.TARGET)); assertEquals(1,problems.size()); validationHelper.openQuickfix(validationProvider.getValidationProblem(ValidationType.NO_TARGET)); } else { assertEquals(0,problems.size()); editResourceUtil.replaceInEditor(className+".java","@Target({ TYPE, FIELD })", ""); assertEquals(0,problems.size()); } } // https://issues.jboss.org/browse/JBIDE-7631 @Test public void testRetentionAnnotation() { String className = "Qualifier2"; beansHelper.createQualifier(className, getPackageName(), false, false); editResourceUtil.replaceInEditor(className+".java","@Retention(RUNTIME)", "@Retention(CLASS)"); List<Problem> problems= validationHelper.findProblems(validationProvider.getValidationProblem(ValidationType.RETENTION)); assertEquals(1,problems.size()); validationHelper.openQuickfix(validationProvider.getValidationProblem(ValidationType.RETENTION)); editResourceUtil.replaceInEditor(className+".java","@Retention(RUNTIME)", ""); problems= validationHelper.findProblems(validationProvider.getValidationProblem(ValidationType.NO_RETENTION)); assertEquals(1,problems.size()); validationHelper.openQuickfix(validationProvider.getValidationProblem(ValidationType.NO_RETENTION)); } // https://issues.jboss.org/browse/JBIDE-7641 @Test public void testNonbindingAnnotation() { String className = "Qualifier3"; NewAnnotationCreationWizard aw = new NewAnnotationCreationWizard(); aw.open(); NewAnnotationWizardPage ap = new NewAnnotationWizardPage(); ap.setPackage(getPackageName()); ap.setName("AAnnotation"); aw.finish(); beansHelper.createQualifier(className, getPackageName(), false, false); editResourceUtil.replaceClassContentByResource(className+".java", readFile("resources/quickfix/qualifier/QualifierWithAnnotation.java.cdi"),false); editResourceUtil.replaceInEditor(className+".java","QualifierComponent", className); List<Problem> problems= validationHelper.findProblems(validationProvider.getValidationProblem(ValidationType.ANNOTATION_NONBINDING)); assertEquals(1,problems.size()); validationHelper.openQuickfix(validationProvider.getValidationProblem(ValidationType.ANNOTATION_NONBINDING)); editResourceUtil.replaceClassContentByResource(className+".java", readFile("resources/quickfix/qualifier/QualifierWithStringArray.java.cdi"),false); editResourceUtil.replaceInEditor(className+".java","QualifierComponent", className); problems= validationHelper.findProblems(validationProvider.getValidationProblem(ValidationType.ARRAY_NONBINDING)); assertEquals(1,problems.size()); validationHelper.openQuickfix(validationProvider.getValidationProblem(ValidationType.ARRAY_NONBINDING)); } }