On Sunday, February 17, 2002, at 09:00 pm, Stefano Mazzocchi wrote:
> Stuart Roebuck wrote:
>>
>> Well I've got got an EmailTransformer I've produced for a current
>> project,
>> it's not too elegant at the moment, but it works, and it has some
>> generic
>> unit test code that folk might be interested in for testing the
>> processing
>> of a transformer - I don't think there's much unit test code in the
>> current Cocoon codebase, infact I think I might be responsible for all of
>> it!!.
>>
>> If anyone can find the time to relocate it appropriately in the cocoon
>> class hierarchy, I have a number of bits of unit testing infrastructure
>> that might be handy to other folk:
>>
>> Mock Classes for Avalon:
>> avalon.excalibur.DataSourceComponent
>> Mock Classes for Framework:
>> avalon.framework.ComponentManager
>> avalon.framework.Configuration
>> Mock Classes for Cocoon:
>> cocoon.environment.Redirector
>> cocoon.environment.Request
>> cocoon.environment.Session
>> cocoon.environment.Source
>> cocoon.environment.SourceResolver
>>
>> These provide sufficient glue to unit test quite a lot of actions,
>> generators and transformers in isolation which could also be handy for
>> some kinds of performance testing.
>>
>> Anyone interested?
>
> I'd be. Make them available somewhere and post the URL.
I've posted them at:
<http://www.adolos.co.uk/temp/mocks_and_email_transformer.tgz>
I've put the email transformer in there because it is the only bit of
general use that demonstrates the use of the Mock Classes. There will be
a number of updates to the Email Transformer this week to integrate
facilities for constructing multi-part MIME emails with file attachments,
based on the SendMail utility class which I have included in this archive.
Here's a clip from a unit test for another custom Form Mail action we have
under development, it shows the mock classes in use:
> private AbstractAction action;
> private SessionMock session;
> private Redirector redirector;
> private SourceResolver sourceResolver;
> private RequestMock request;
> private Response response;
> private Parameters parameters;
> private Map objectModel;
> private MockConnection connection;
> private MockStatement statement;
>
> public void setUp() {
> this.action = new EmailFormAction();
> this.session = new SessionMock();
> this.redirector = new RedirectorMock();
> this.sourceResolver = new SourceResolverMock();
> this.request = new RequestMock();
> this.response = new CommandLineResponse();
> this.parameters = new Parameters();
> this.objectModel = new HashMap();
> this.objectModel.put(Constants.REQUEST_OBJECT, this.request);
> this.objectModel.put(Constants.RESPONSE_OBJECT, this.response);
> }
>
>
> public void testEmailForm() throws Exception {
> this.parameters.setParameter("smtphost","smtp.demon.co.uk");
> this.parameters.setParameter("from","[EMAIL PROTECTED]");
> this.parameters.setParameter("to","[EMAIL PROTECTED]");
> this.parameters.setParameter("subject","Testing EmailFormAction")
> ;
> this.parameters.setParameter("body","Default body test.");
> this.parameters.setParameter("testing","yes");
>
> this.request.mockSetParameter("name","Stuart Roebuck");
> this.request.mockSetParameter("email","[EMAIL PROTECTED]"
> );
> this.request.mockSetParameter("answer","cat");
> this.request.mockSetParameter("answer","dog");
> this.request.mockSetParameter("_submit","submit");
> // This subject and body above should override the values set
> below:
> this.request.mockSetParameter("_email_subject", "New subject");
> this.request.mockSetParameter("_email_body", "This comes before
> the results");
>
> Map map = action.act(this.redirector, this.sourceResolver,
> this.objectModel, "src", this.parameters);
> assertEquals("[EMAIL PROTECTED]", (String) map.get("from"));
> assertEquals("[EMAIL PROTECTED]", (String) map.get("to"
> ));
> assertEquals("Testing EmailFormAction", (String) map.get("subject"
> ));
> assertEquals("Default body test.\n" +
> "email = [EMAIL PROTECTED]\n" +
> "name = Stuart Roebuck\n" +
> "answer = cat,dog\n",
> (String) map.get("body"));
> }
If it finds a home I'll try to set aside some time to add some comments
and send them in as patches.
Stuart.
Public Key - 1024D/88DD65AF 2001-11-23 Stuart Roebuck (Adolos)
Key fingerprint = 89D9 E405 F8B1 9B22 0FA2 F2C1 9E57 5AB1 88DD 65AF
-------------------------------------------------------------------------
Stuart Roebuck [EMAIL PROTECTED]
Systems Architect Java, XML, MacOS X, XP, etc.
ADOLOS <http://www.adolos.com/>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]