package org.lightadmin.page.fieldDisplay; import org.hamcrest.CoreMatchers; import org.hamcrest.core.CombinableMatcher; import org.junit.Ignore; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; import org.lightadmin.SeleniumIntegrationTest; import org.lightadmin.config.*; import static org.hamcrest.CoreMatchers.containsString; public class ConfigurationValidationTest extends SeleniumIntegrationTest { @Rule public ExpectedException expectedException = ExpectedException.none(); //Covers LA-72 (https://github.com/max-dev/light-admin/issues/72) @Test public void missingFieldIsValidated() { ConfigurationProblemExceptionTrigger exceptionTrigger = new ConfigurationProblemExceptionTrigger() .setAdministration( MissingFieldAdmin.class ) .setViewName( "filters" ) .setExpectedProblem( "Missing property 'Missing Field' defined!" ); expectedException.expectMessage( exceptionTrigger.getExpectedMessageMatcher() ); exceptionTrigger.triggerException(); } //Covers LA-2 comment: https://github.com/max-dev/light-admin/issues/2#issuecomment-12477966 @Test public void transientFieldOnFormViewIsValidated() { ConfigurationProblemExceptionTrigger exceptionTrigger = new ConfigurationProblemExceptionTrigger() .setAdministration( TransientFieldOnFormViewConfiguration.class ) .setViewName( "formView" ) .setExpectedProblem( "Missing property 'Order Total' defined!" ); expectedException.expectMessage( exceptionTrigger.getExpectedMessageMatcher() ); exceptionTrigger.triggerException(); } //Covers LA-89 (https://github.com/max-dev/light-admin/issues/89) @Test public void unsupportedFieldTypeIsValidated() { ConfigurationProblemExceptionTrigger exceptionTrigger = new ConfigurationProblemExceptionTrigger() .setAdministration( UnsupportedFieldTypeAdministration.class ) .setViewName( "quickView" ) .setExpectedProblem( "Persistent property 'Field Of Unsupported Type' has not supported type!" ); expectedException.expectMessage( exceptionTrigger.getExpectedMessageMatcher() ); exceptionTrigger.triggerException(); } @Ignore("Test is outdated: Problem level was changed from 'ERROR' to 'WARNING' and is written to log instead of throwing exception") //Covers LA-89 (https://github.com/max-dev/light-admin/issues/89) @Test public void missingFileReferenceDirectoryIsValidated() { ConfigurationProblemExceptionTrigger exceptionTrigger = new ConfigurationProblemExceptionTrigger() .setAdministration( MissingBaseDirectoryAdministration.class ) .setViewName( "listView" ) .setExpectedProblem( "@FileReference property 'FileReference' has incorrect baseDirectory defined!" ); expectedException.expectMessage( exceptionTrigger.getExpectedMessageMatcher() ); exceptionTrigger.triggerException(); } private class ConfigurationProblemExceptionTrigger { private Class<?> administration; private String viewName; private String expectedProblem; public ConfigurationProblemExceptionTrigger setAdministration( Class<?> administration ) { this.administration = administration; return this; } public ConfigurationProblemExceptionTrigger setViewName( String viewName ) { this.viewName = viewName; return this; } public ConfigurationProblemExceptionTrigger setExpectedProblem( String expectedProblem ) { this.expectedProblem = expectedProblem; return this; } public CombinableMatcher<String> getExpectedMessageMatcher() { return CoreMatchers.<String> both( containsString( "Domain Configuration" ) ).and( containsString( administration.getSimpleName() ) ) .and( containsString( "Unit" ) ).and( containsString( viewName ) ) .and( containsString( expectedProblem ) ); } public void triggerException() { registerDomainTypeAdministrationConfiguration( administration ); } } }