package com.codeaffine.extras.workingset.internal; import static com.codeaffine.extras.workingset.internal.WorkingSetExtrasPlugin.PLUGIN_ID; import static org.assertj.core.api.Assertions.assertThat; import java.util.Collection; import org.eclipse.ui.INewWizard; import org.junit.Test; import com.codeaffine.eclipse.core.runtime.Extension; import com.codeaffine.eclipse.core.runtime.Predicates; import com.codeaffine.eclipse.core.runtime.RegistryAdapter; import com.codeaffine.extras.test.util.ImageAssert; public class DynamicWorkingSetWizardExtensionPDETest { private static final String KEYWORD_ID = "com.codeaffine.extras.ide.internal.NewWorkingSetWizardKeyword"; @Test public void testWizardExtension() { Extension extension = getDynamicWorkingSetWizard(); assertThat( extension.getAttribute( "name" ) ).isNotEmpty(); assertThat( getWizardClass( extension ) ).isInstanceOf( DynamicWorkingSetWizard.class ); assertThat( extension.getAttribute( "icon" ) ).isEqualTo( "$nl$/icons/etool16/new-working-set.gif" ); ImageAssert.assertThat( PLUGIN_ID, extension.getAttribute( "icon" ) ).exists(); assertThat( extension.getAttribute( "category" ) ).isEqualTo( "org.eclipse.ui.Basic" ); assertThat( extension.getAttribute( "canFinishEarly" ) ).isEqualTo( "false" ); assertThat( extension.getAttribute( "hasPages" ) ).isEqualTo( "true" ); assertThat( getDescriptions( extension ).size() ).isEqualTo( 1 ); assertThat( getDescriptions( extension ).stream().findFirst().get().getValue() ).isNotEmpty(); assertThat( getKeywordReferences( extension ).size() ).isEqualTo( 1 ); assertThat( getFirstKeywordReference( extension ).getAttribute( "id" ) ).isEqualTo( KEYWORD_ID ); } @Test public void testKeywordExtension() { Extension extension = getWizardKeyword(); assertThat( extension.getAttribute( "label" ) ).isEqualTo( "Working Set" ); } private static Collection<Extension> getDescriptions( Extension extension ) { return extension.getChildren( "description" ); } private static Collection<Extension> getKeywordReferences( Extension extension ) { return extension.getChildren( "keywordReference" ); } private static Extension getFirstKeywordReference( Extension extension ) { return getKeywordReferences( extension ).stream().findFirst().orElse( null ); } private static INewWizard getWizardClass( Extension extension ) { return extension.createExecutableExtension( "class", INewWizard.class ); } private static Extension getDynamicWorkingSetWizard() { return new RegistryAdapter() .readExtension( "org.eclipse.ui.newWizards" ) .thatMatches( Predicates.attribute( "id", DynamicWorkingSetWizard.ID ) ) .process(); } private static Extension getWizardKeyword() { return new RegistryAdapter() .readExtension( "org.eclipse.ui.keywords" ) .thatMatches( Predicates.attribute( "id", KEYWORD_ID ) ) .process(); } }