Can Struts Junit plugin be used to test the redirect result of an action

2011-09-21 Thread Miguel Almeida
I am using the Struts Junit plugin
(http://struts.apache.org/2.2.3.1/docs/struts-2-junit-plugin-tutorial.html ), 
extending the StrutsSpringTestCase for a regression test of an action in my 
application.

(Optional reading: 
Long story short on the problem, the action adds a record to a database
via hibernate. The result is a redirect to execute() of the same class,
whose prepare() populates a ListRecord object with all the records
available. For some reason, the prepare fires as it should, but returns
the old number of items. Only a refresh shows the page with the correct
results. For an odd reason, sleeping the thread before calling the dao's
code that retrieves the list for 1 second also makes the result to be
correctly updated.)

The action result is a redirectAction, that, well, redirects to another
action. The test doesn't call this second method, though.
Is it possible with this base test case to make it call the 2nd action?


Regards,

Miguel Almeida




Unit Test Struts2 Action - Custom type converters not being run?

2011-09-21 Thread Carl Ballantyne
Hi All,

I have an action that I am trying to unit test. However it seems the
converters I have set for the User object that is being create by the action
are not being applied at all when running the unit test. The converters are
run when running the application.

For example I have a test class:

public class UserCreateTest extends StrutsSpringTestCase {


public void testValidationRequired() throws Exception {
 request.setParameter(user.roles, );

 ActionProxy proxy = getActionProxy(/createUser.action);

ActionSupport action = (ActionSupport)proxy.getAction();

proxy.setExecuteResult(false); // Do not execute view
(JSP/Tiles)
proxy.execute();

// asserts to check errors etc..
 }
}



And then for that test class I have getUser and setUser methods that return
a User object. This object has an attribute roles that has a converter
applied by puting a User-conversion.properties file in the same folder as
the User class. All this works fine when running the app. It is just when
running the unit test it does not seem to get run. Or at least it is not
getting run before the Validation interceptor which seems odd to me.

Anyone have any ideas? Anyone testing validation for actions that involve
custom convertors?

Cheers,
Carl.


Re: Unit Test Struts2 Action - Custom type converters not being run?

2011-09-21 Thread Maurizio Cucchiara
What Struts version are you using?
Could you give a try to the nightly version [1] and tell me if it
works as you expect?
Be aware that you can write your test as follow:

public void testValidationRequired() throws Exception {
request.setParameter(user.roles, );
executeAction(/your_package/your_action.action);

   // asserts to check errors etc..
}
}



[1] 
https://builds.apache.org/job/Struts2/lastStableBuild/org.apache.struts$struts2-assembly/

Maurizio Cucchiara



On 21 September 2011 17:31, Carl Ballantyne carlballant...@gmail.com wrote:
 Hi All,

 I have an action that I am trying to unit test. However it seems the
 converters I have set for the User object that is being create by the action
 are not being applied at all when running the unit test. The converters are
 run when running the application.

 For example I have a test class:

 public class UserCreateTest extends StrutsSpringTestCase {


 public void testValidationRequired() throws Exception {
             request.setParameter(user.roles, );

             ActionProxy proxy = getActionProxy(/createUser.action);

            ActionSupport action = (ActionSupport)proxy.getAction();

            proxy.setExecuteResult(false); // Do not execute view
 (JSP/Tiles)
            proxy.execute();

            // asserts to check errors etc..
     }
 }



 And then for that test class I have getUser and setUser methods that return
 a User object. This object has an attribute roles that has a converter
 applied by puting a User-conversion.properties file in the same folder as
 the User class. All this works fine when running the app. It is just when
 running the unit test it does not seem to get run. Or at least it is not
 getting run before the Validation interceptor which seems odd to me.

 Anyone have any ideas? Anyone testing validation for actions that involve
 custom convertors?

 Cheers,
 Carl.


-
To unsubscribe, e-mail: user-unsubscr...@struts.apache.org
For additional commands, e-mail: user-h...@struts.apache.org



Re: Unit Test Struts2 Action - Custom type converters not being run?

2011-09-21 Thread Carl Ballantyne
I am using 2.2.3.

How can I try the nightly build if using Maven? I do not see it listed as an
option.

I also noticed I am using spring beans as the converters. Not sure if this
makes a difference. So for example in the conversion properties file I have
something like roles=rolesConverter. And rolesConverter is a spring bean.

I will try some more tomorrow and see what I can come up with. I am sure it
is something silly I am doing.



On Wed, Sep 21, 2011 at 5:47 PM, Maurizio Cucchiara
mcucchi...@apache.orgwrote:

 What Struts version are you using?
 Could you give a try to the nightly version [1] and tell me if it
 works as you expect?
 Be aware that you can write your test as follow:

 public void testValidationRequired() throws Exception {
request.setParameter(user.roles, );
 executeAction(/your_package/your_action.action);

   // asserts to check errors etc..
}
 }



 [1]
 https://builds.apache.org/job/Struts2/lastStableBuild/org.apache.struts$struts2-assembly/

 Maurizio Cucchiara



 On 21 September 2011 17:31, Carl Ballantyne carlballant...@gmail.com
 wrote:
  Hi All,
 
  I have an action that I am trying to unit test. However it seems the
  converters I have set for the User object that is being create by the
 action
  are not being applied at all when running the unit test. The converters
 are
  run when running the application.
 
  For example I have a test class:
 
  public class UserCreateTest extends StrutsSpringTestCase {
 
 
  public void testValidationRequired() throws Exception {
  request.setParameter(user.roles, );
 
  ActionProxy proxy = getActionProxy(/createUser.action);
 
 ActionSupport action = (ActionSupport)proxy.getAction();
 
 proxy.setExecuteResult(false); // Do not execute view
  (JSP/Tiles)
 proxy.execute();
 
 // asserts to check errors etc..
  }
  }
 
 
 
  And then for that test class I have getUser and setUser methods that
 return
  a User object. This object has an attribute roles that has a converter
  applied by puting a User-conversion.properties file in the same folder as
  the User class. All this works fine when running the app. It is just when
  running the unit test it does not seem to get run. Or at least it is not
  getting run before the Validation interceptor which seems odd to me.
 
  Anyone have any ideas? Anyone testing validation for actions that involve
  custom convertors?
 
  Cheers,
  Carl.
 

 -
 To unsubscribe, e-mail: user-unsubscr...@struts.apache.org
 For additional commands, e-mail: user-h...@struts.apache.org




Re: Unit Test Struts2 Action - Custom type converters not being run?

2011-09-21 Thread Miguel Almeida
On Wed, 2011-09-21 at 17:55 +0200, Carl Ballantyne wrote:


 How can I try the nightly build if using Maven? I do not see it listed as an
 option.

Would be nice if Struts released SNAPSHOT versions into maven. Does it?



  Be aware that you can write your test as follow:
 
  public void testValidationRequired() throws Exception {
 request.setParameter(user.roles, );
  executeAction(/your_package/your_action.action);
 
// asserts to check errors etc..
 }
  }

Maurizio: you can't use this if you have to set objects (eg:
action.setSession(session );), does it? In my sessioned test I need:
action.setSession(session );

actionProxy.getInvocation().getInvocationContext().setSession(session);
perhaps the first could be replaced with request.setParameter() (can
it?), but I need the second - otherwise I'll have a nullpointerexception
in my action's session.get() method (because ServletConfigInterceptor's
((SessionAware) action).setSession(context.getSession()); (line 146)
will set it to null and override the action.setSession(session)
instruction)

Miguel


Re: Unit Test Struts2 Action - Custom type converters not being run?

2011-09-21 Thread Maurizio Cucchiara
Does Maven Snapshot section [1] answer your question?
[1] http://struts.apache.org/dev/builds.html#MavenSnapshots

Maurizio Cucchiara



On 21 September 2011 17:55, Carl Ballantyne carlballant...@gmail.com wrote:
 I am using 2.2.3.

 How can I try the nightly build if using Maven? I do not see it listed as an
 option.

 I also noticed I am using spring beans as the converters. Not sure if this
 makes a difference. So for example in the conversion properties file I have
 something like roles=rolesConverter. And rolesConverter is a spring bean.

 I will try some more tomorrow and see what I can come up with. I am sure it
 is something silly I am doing.



 On Wed, Sep 21, 2011 at 5:47 PM, Maurizio Cucchiara
 mcucchi...@apache.orgwrote:

 What Struts version are you using?
 Could you give a try to the nightly version [1] and tell me if it
 works as you expect?
 Be aware that you can write your test as follow:

 public void testValidationRequired() throws Exception {
            request.setParameter(user.roles, );
             executeAction(/your_package/your_action.action);

           // asserts to check errors etc..
    }
 }



 [1]
 https://builds.apache.org/job/Struts2/lastStableBuild/org.apache.struts$struts2-assembly/

 Maurizio Cucchiara



 On 21 September 2011 17:31, Carl Ballantyne carlballant...@gmail.com
 wrote:
  Hi All,
 
  I have an action that I am trying to unit test. However it seems the
  converters I have set for the User object that is being create by the
 action
  are not being applied at all when running the unit test. The converters
 are
  run when running the application.
 
  For example I have a test class:
 
  public class UserCreateTest extends StrutsSpringTestCase {
 
 
  public void testValidationRequired() throws Exception {
              request.setParameter(user.roles, );
 
              ActionProxy proxy = getActionProxy(/createUser.action);
 
             ActionSupport action = (ActionSupport)proxy.getAction();
 
             proxy.setExecuteResult(false); // Do not execute view
  (JSP/Tiles)
             proxy.execute();
 
             // asserts to check errors etc..
      }
  }
 
 
 
  And then for that test class I have getUser and setUser methods that
 return
  a User object. This object has an attribute roles that has a converter
  applied by puting a User-conversion.properties file in the same folder as
  the User class. All this works fine when running the app. It is just when
  running the unit test it does not seem to get run. Or at least it is not
  getting run before the Validation interceptor which seems odd to me.
 
  Anyone have any ideas? Anyone testing validation for actions that involve
  custom convertors?
 
  Cheers,
  Carl.
 

 -
 To unsubscribe, e-mail: user-unsubscr...@struts.apache.org
 For additional commands, e-mail: user-h...@struts.apache.org




-
To unsubscribe, e-mail: user-unsubscr...@struts.apache.org
For additional commands, e-mail: user-h...@struts.apache.org