package org.richfaces.renderkit.html;
import static org.easymock.EasyMock.expect;
import static org.junit.Assert.assertEquals;
import javax.faces.component.UIViewRoot;
import javax.faces.component.behavior.ClientBehaviorContext;
import org.jboss.test.faces.mock.Mock;
import org.jboss.test.faces.mock.MockTestRunner;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.richfaces.component.behavior.ClientValidatorBehavior;
import org.richfaces.javascript.JavaScriptService;
import org.richfaces.application.ServiceTracker;
@RunWith(MockTestRunner.class)
public class RendererBuildScriptTest extends ValidatorRendererTestBase {
private static final String FUNCTION_NAME = "inputValidate";
private static final String SOURCE_ID = "clientValidator";
@Mock
private UIViewRoot viewRoot;
@Mock
private ComponentValidatorScript validatorScript;
@Mock
private JavaScriptService scriptService;
@Before
public void setUpResource() {
expect(factory.getInstance(JavaScriptService.class)).andReturn(scriptService);
ServiceTracker.setFactory(factory);
}
@After
public void cleanUpResource() {
ServiceTracker.release();
}
@Test
public void buildAndStoreScript() throws Exception {
ClientValidatorRenderer renderer = new ClientValidatorRenderer() {
ComponentValidatorScript createValidatorScript(ClientBehaviorContext behaviorContext,
ClientValidatorBehavior behavior) {
return validatorScript;
}
;
};
setupBehaviorContext(input);
expect(behaviorContext.getSourceId()).andStubReturn(SOURCE_ID);
expect(validatorScript.createCallScript(FUNCTION_NAME, SOURCE_ID)).andReturn(FUNCTION_NAME);
expect(input.getClientId(environment.getFacesContext())).andReturn(FUNCTION_NAME);
expect(scriptService.addScript(environment.getFacesContext(), validatorScript)).andReturn(validatorScript);
controller.replay();
assertEquals(FUNCTION_NAME, renderer.buildAndStoreValidatorScript(behaviorContext, mockBehavior));
controller.verify();
}
}