hi tom,

i haven’t checked the latest impl. of myfaces-test - the original impl. was
too simple. so i had to fix some parts.
for now you could use our internal infrastructure [1]. (if you are using jsf
2, you have to create a stand-alone test-project based on jsf 1.2.)

we don't plan to upgrade the internal test infrastructure to jsf 2, because
we plan to switch to the upcoming myfaces-webapptest.
(it allows executing the tests in combination with myfaces-core as well as
mojarra -> the tests will be more reliable.)

regards,
gerhard

[1]
https://svn.apache.org/repos/asf/myfaces/extensions/validator/trunk/test-modules/

http://www.irian.at

Your JSF powerhouse -
JSF Consulting, Development and
Courses in English and German

Professional Support for Apache MyFaces


2010/9/10 <mynewsgro...@arcor.de>

> Hi,
>
> I had a look into https://issues.apache.org/jira/browse/EXTVAL-4, which is
> about testing ExtVal itself using Shale.
>
> Adopting this for testing my own custom ExtVal contraints using Myfaces
> Test 1.0.0 doesn't work, it seems ExtVal and the mock value expressions do
> not work together. Or am I missing something?
>
> Thanks,
> Tom
>
> ---
>
> public class CustomCrossValidationsTest extends
> AbstractJsfConfigurableMockTestCase {
>
>        // simple class with 2 string properties
>        private DummyDialogDaten daten;
>
>        private HtmlInputText input1;
>        private HtmlInputText input2;
>
>        @Override
>        protected void setUpRenderKit() throws Exception {
>
>                RenderKitFactory renderKitFactory = (RenderKitFactory)
> FactoryFinder.getFactory(FactoryFinder.RENDER_KIT_FACTORY);
>                renderKit = new ExtValRenderKit(new MockRenderKit());
>
>  renderKitFactory.addRenderKit(RenderKitFactory.HTML_BASIC_RENDER_KIT,
> renderKit);
>
>                Renderer renderer = new TextRenderer();
>                renderKit.addRenderer("javax.faces.Input",
> "javax.faces.Text", renderer);
>        }
>
>        @Before
>        @Override
>        public void setUp() throws Exception {
>
>                super.setUp();
>
>                lifecycle.addPhaseListener(new
> BeanValidationStartupListener());
>                lifecycle.addPhaseListener(new
> PropertyValidationModuleStartupListener());
>                lifecycle.addPhaseListener(new ExtValStartupListener());
>
>                daten = new DummyDialogDaten();
>
>                HtmlForm form = new HtmlForm();
>                form.setId("form");
>                facesContext.getViewRoot().getChildren().add(form);
>                input1 = new HtmlInputText();
>                input1.setId("input1");
>                input1.addValidator(new BeanValidator());
>                form.getChildren().add(input1);
>                input2 = new HtmlInputText();
>                input2.setId("input2");
>                input1.addValidator(new BeanValidator());
>                form.getChildren().add(input2);
>        }
>
>        @Override
>        public void tearDown() throws Exception {
>                super.tearDown();
>                daten = null;
>                input1 = null;
>                input2 = null;
>        }
>
>        @Test
>        public void test() {
>
>
>  facesContext.getExternalContext().getRequestMap().put("testBean", daten);
>
>                // Startup-Listener ausfuehren
>                lifecycle.execute(facesContext);
>
>                ValueExpression exp =
> createValueExpression("#{testBean.string1}");
>                input1.setValueExpression("value", exp);
>
>                exp = createValueExpression("#{testBean.string2}");
>                input2.setValueExpression("value", exp);
>
>                input1.setSubmittedValue("");
>                input2.setSubmittedValue("");
>
>                // validate
>                input1.validate(facesContext);
>                input2.validate(facesContext);
>
>        // update model since it is necessary for crossval
>                input1.updateModel(facesContext);
>                input2.updateModel(facesContext);
>
>                processCrossValidation();
>        }
>
>        protected ValueExpression createValueExpression(String valueExp) {
>                return new MockValueExpression(valueExp, String.class);
>                // or using which returns MockCompositeValueExpression
>                // ExpressionFactory factory =
>                // facesContext.getApplication().getExpressionFactory();
>                // return
> factory.createValueExpression(facesContext.getELContext(),
>                // valueExp, String.class);
>        }
>
>        protected void processCrossValidation() {
>                new CrossValidationPhaseListener().afterPhase(new
> PhaseEvent(facesContext, PhaseId.ANY_PHASE, lifecycle));
>        }
> }
>
>
>
> Heute erleben, was morgen Trend wird - das kann man auf der IFA in Berlin.
> Oder auf arcor.de: Wir stellen Ihnen die wichtigsten News, Trends und
> Gadgets der IFA vor. Natürlich mit dabei: das brandneue IPTV-Angebot von
> Vodafone! Alles rund um die Internationale Funkausstellung in Berlin finden
> Sie hier: http://www.arcor.de/rd/footer.ifa2010
>

Reply via email to