« Return to Thread: AbstractJsfTestCase question

Re: AbstractJsfTestCase question

by Gary%20VanMatre :: Rate this Message:

Reply to Author | View in Thread

The shale mock value binding has limited EL support.  

[] #parse - http://svn.apache.org/viewvc/shale/framework/trunk/shale-test/src/main/java/org/apache/shale/test/mock/MockValueBinding.java?view=markup
 -------------- Original message ----------------------
From: "Venkataganesh Thoppae" <tkvganesh@...>

> Actually I missed that part while typing a sample code.
> But here is a clean test case runnable if you have shale-test-x.jar.
> Appreciate if someone could try this on their box.
>
> Two files are attached.
> MyTestCase.java has test cases defined.
> SomeBean is a simple POJO.
>
> Thanks
>
> On Tue, May 20, 2008 at 10:57 AM, Chris Keefer <chris@...> wrote:
>
> > I think in JSF 1.1 you have to get the value from a ValueBinding. See
> > below.
> >
> > @Test
> > public void test1 {
> >    ValueBinding binding =
> > facesContext.getApplication().createValueBinding("#{someBean.prop[0]}"};
> >    String val = (String) binding.getValue(facesContext);
> >    assertEquals(val, "M");
> > }
> >
> >
> > Or you can try the VariableResolver like so:
> >
> > @Test
> > public void test1 {
> >    String val =
> >
> facesContext.getApplication().getVariableResolver().resolveVariable(facesContext
> ,
> > "#{someBean.prop[0]}");
> >    assertEquals(val, "M");
> > }
> >
> > Hope this helps.
> >
> > --Chris
> >
> >
> >
> >
> > On May 19, 2008, at 1:06 PM, Venkataganesh Thoppae wrote:
> >
> >  Yes, I know Shale doesn't read faces-config.
> >> Here is a sample implementation.
> >>
> >> public class MyTestCase extends AbstractJsfTestCase {
> >> //A valid someBean object is created in the request scope in setUp()
> >>
> >> @Test
> >> public void test1 {
> >>    String val=
> >>
> >>
> (String)facesContext.getApplication().createValueBinding("#{someBean.prop[0]}"};
> >>    assertEquals(val, "M");
> >> }
> >> }
> >>
> >> The error I get is:
> >> javax.faces.el.PropertyNotFoundException: prop0
> >>    at
> >>
> >>
> org.apache.shale.test.mock.MockPropertyResolver.descriptor(MockPropertyResolver.
> java:213)
> >>    at
> >>
> >>
> org.apache.shale.test.mock.MockPropertyResolver.getValue(MockPropertyResolver.ja
> va:69)
> >>    at
> >>
> >>
> org.apache.shale.test.mock.MockValueBinding.getValue(MockValueBinding.java:126)
> >>
> >>
> >>
> >>
> >>
> >>
> >> Regards
> >>
> >>
> >>
> >> On Mon, May 19, 2008 at 12:08 PM, Kito D. Mann <kmann@...> wrote:
> >>
> >>  Hmm... What errors are you getting? Or is it just returning null? If it's
> >>> just returning null, remember that you must manually but the bean in the
> >>> proper scope - Shale doesn't read faces-config.
> >>>
> >>> Sent from my iPhone
> >>>
> >>>
> >>> On May 19, 2008, at 11:07 AM, "Venkataganesh Thoppae" <
> >>> tkvganesh@...>
> >>> wrote:
> >>>
> >>>  New user of Shale Test framework. I'm trying to write some test cases
> >>> for
> >>>
> >>>> JSF 1.1 implementation using AbstractJsfTestCase.
> >>>>
> >>>> Experiencing few problems while trying to resolve some EL expressions
> >>>> programmatically.
> >>>> - MockVariableResolver not able to resolve array elements like
> >>>> #{someBean.property[0]}
> >>>> - How would I resolve an expression like #{someBean.name == "John Doe"}
> >>>> - How could I invoke static EL functions like #{prefix:fnName}
> >>>>
> >>>> Advance Thanks for your help.
> >>>>
> >>>>
> >>>
> >>
> >> --
> >>
> >
> >
>
>
> --
> Regards
> Venkat Thoppae
> (240)446-7632


Actually I missed that part while typing a sample code.
But here is a clean test case runnable if you have shale-test-x.jar.
Appreciate if someone could try this on their box.

Two files are attached.
MyTestCase.java has test cases defined.
SomeBean is a simple POJO.

Thanks

On Tue, May 20, 2008 at 10:57 AM, Chris Keefer <chris@...> wrote:
I think in JSF 1.1 you have to get the value from a ValueBinding. See below.

@Test
public void test1 {
   ValueBinding binding = facesContext.getApplication().createValueBinding("#{someBean.prop[0]}"};
   String val = (String) binding.getValue(facesContext);
   assertEquals(val, "M");
}


Or you can try the VariableResolver like so:

@Test
public void test1 {
   String val = facesContext.getApplication().getVariableResolver().resolveVariable(facesContext, "#{someBean.prop[0]}");
   assertEquals(val, "M");
}

Hope this helps.

--Chris




On May 19, 2008, at 1:06 PM, Venkataganesh Thoppae wrote:

Yes, I know Shale doesn't read faces-config.
Here is a sample implementation.

public class MyTestCase extends AbstractJsfTestCase {
//A valid someBean object is created in the request scope in setUp()

@Test
public void test1 {
   String val=
(String)facesContext.getApplication().createValueBinding("#{someBean.prop[0]}"};
   assertEquals(val, "M");
}
}

The error I get is:
javax.faces.el.PropertyNotFoundException: prop0
   at
org.apache.shale.test.mock.MockPropertyResolver.descriptor(MockPropertyResolver.java:213)
   at
org.apache.shale.test.mock.MockPropertyResolver.getValue(MockPropertyResolver.java:69)
   at
org.apache.shale.test.mock.MockValueBinding.getValue(MockValueBinding.java:126)






Regards



On Mon, May 19, 2008 at 12:08 PM, Kito D. Mann <kmann@...> wrote:

Hmm... What errors are you getting? Or is it just returning null? If it's
just returning null, remember that you must manually but the bean in the
proper scope - Shale doesn't read faces-config.

Sent from my iPhone


On May 19, 2008, at 11:07 AM, "Venkataganesh Thoppae" <tkvganesh@...>
wrote:

 New user of Shale Test framework. I'm trying to write some test cases for
JSF 1.1 implementation using AbstractJsfTestCase.

Experiencing few problems while trying to resolve some EL expressions
programmatically.
- MockVariableResolver not able to resolve array elements like
#{someBean.property[0]}
- How would I resolve an expression like #{someBean.name == "John Doe"}
- How could I invoke static EL functions like #{prefix:fnName}

Advance Thanks for your help.




--




--
Regards
Venkat Thoppae
(240)446-7632

 « Return to Thread: AbstractJsfTestCase question