package de.unioninvestment.eai.portal.support.scripting; import static org.hamcrest.CoreMatchers.instanceOf; import static org.junit.Assert.assertThat; import static org.mockito.Mockito.when; import groovy.lang.Closure; import org.junit.Before; import org.junit.Test; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import de.unioninvestment.eai.portal.portlet.crud.config.CustomFilterConfig; import de.unioninvestment.eai.portal.portlet.crud.config.GroovyScript; import de.unioninvestment.eai.portal.portlet.crud.domain.model.filter.CustomFilter; import de.unioninvestment.eai.portal.portlet.crud.scripting.model.ScriptFormAction; import de.unioninvestment.eai.portal.portlet.crud.scripting.model.ScriptRow; public class ScriptCustomFilterFactoryTest { @Mock private ScriptFormAction formActionMock; @Mock private ScriptBuilder scriptBuilderMock; @Before public void setUp() { MockitoAnnotations.initMocks(this); } @SuppressWarnings("serial") @Test public void shouldCreateCustomFilterFromConfig() { ScriptCustomFilterFactory factory = new ScriptCustomFilterFactory( scriptBuilderMock); CustomFilterConfig config = new CustomFilterConfig(); config.setFilter(new GroovyScript("abcde")); final Closure<Object> closure = new Closure<Object>( ScriptCustomFilterFactoryTest.this) { @SuppressWarnings("unused") public Object doCall(ScriptRow row) { return true; } }; when(scriptBuilderMock.buildClosure(config.getFilter())).thenReturn( closure); CustomFilter customFilter = factory.createCustomFilter(config); assertThat(customFilter.getMatcher(), instanceOf(ScriptCustomFilterMatcher.class)); } }